Elasticsearch 叢集安裝部署

程式設計師的貓發表於2020-08-30

Elasticsearch是一個基於Lucene的實時的分散式搜尋和分析引擎。

設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠, 快速,安裝使用方便。基於RESTful介面。

step 1 download JDK and elasticsearch

jdk1.8.0_131 download

elasticsearch5.6.5 download

宣告:系統版本:主機windows10,虛擬機器伺服器centos6.9,elasticsearch-5.6.5,Vmware10.7
不能使用root使用者,需要新建一個使用者

step 2 install JDK

解壓配置環境變數即可使用

export JAVA_HOME=/opt/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

#自JDK1.7之後 CLASSPATH 可以不配置

step 3 system configuration

配置靜態IP

sudo cd /etc/sysconfig/network-scripts/ifcfg-ens33
sudo vi ifcfg-ens33  # 這個檔案的名稱有時可能不相同 ifcfg-eth0 | ifcfg-ens???

    修改如下引數
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.174.113
    NETMASK=255.255.255.0
    GATEWAY=192.168.174.2

sudo service network start/stop/restart

修改HOSTNAME

Centos6
    sudo vi /etc/sysconfig/network 
    HOSTNAME=YOURNEWNAME 
    sudo hostname YOURNEWNAME
Centos7
    sudo hostnamectl set-hostname YOURNEWNAME 
    sudo hostname YOURNEWNAME

主機名中不能使用下劃線(_)。
主機名不能保護大寫字元

配置本地域名

sudo vi /etc/hosts
ip    HOST1 HOST2192.168.186.113    es1 hdfs1 hadoop1 spark1
192.168.186.114    es2 hdfs2 hadoop2 spark2
192.168.186.115    es3 hdfs3 hadoop3 spark3

關閉防火牆

Centos6
    sudo service iptables start/stop/status
    sudo chkconfig iptables off/--list  –永久關閉防火牆
Centos7
    sudo systemctl stop/start/status firewalld.service
    sudo systemctl disable firewalld.service –永久關閉防火牆

關閉SELinux

檢視Selinux的狀態
/usr/sbin/sestatus –v
SELinux status:                 enabled
如果SELinux status引數為enabled即為開啟狀態,需要進行下面的關閉操作。
關閉SElinux
sudo vim /etc/selinux/config
在文件中找到SELINUX,將SELINUX的值設定為disabled,即:
SELINUX=disabled
在記憶體中關閉SElinux
setenforce 0
檢查記憶體中狀態
getenforce
如果日誌顯示結果為disabled或者permissive,說明操作已經成功。

建立使用者

[root@es1 ~]# adduser es
為這個使用者初始化密碼,linux會判斷密碼複雜度,不過可以強行忽略:

[root@es1 ~]# passwd es
更改使用者 es 的密碼 。
新的 密碼:
無效的密碼: 密碼未通過字典檢查 - 過於簡單化/系統化
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

為使用者賦於sudo許可權

在root使用者
vi /etc/sudoers
新增 : USERNAME    ALL=(ALL)   ALL
以下配置可以給sudo許可權免密
新增 : USERNAME    ALL=(ALL)   NOPASSWD:ALL

step 4 install elasticsearch

解壓縮

$ mkdir -p /opt/elasticsearch
$ tar –zxvf elasticsearch-5.6.5.tar.gz –C /opt/elasticsearch

修改elasticsearch.yml配置檔案

$ vim /opt/elasticsearch/elasticsearch5.6.5/config/elasticsearch.yml
    cluster.name: hy2u-elasticsearch   (叢集名稱,同一叢集要一樣)
    node.name: hy2u-node-1  (節點名稱,同一叢集要不一樣)
    http.port: 9200  #連線埠
    network.host: 192.168.174.113   #預設網路連線地址,寫當前主機的靜態IP,這裡不能寫127.0.0.1
    path.data: /opt/elasticsearch-5.6.5/data   #資料檔案儲存路徑
    path.logs: /opt/elasticsearch-5.6.5/logs    #log檔案儲存路徑
    discovery.zen.ping.unicast.hosts: ["192.168.174.113","192.168.174.114", "192.168.184.115"]#叢集中master節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點。
    bootstrap.system_call_filter: false    # 因centos6不支援SecComp而預設bootstrap.system_call_filter為true進行檢測,所以,要設定為 false。注:SecComp為secure computing mode簡寫
    http.cors.enabled: true  #是否支援跨域,預設為false
    http.cors.allow-origin: "*"   #當設定允許跨域,預設為*,表示支援所有域名
    discovery.zen.minimum_master_nodes: 2     #這個引數來保證叢集中的節點可以知道其它N個有master資格的節點。預設為1,對於大的叢集來說,可以設定大一點的值(2-4

elasticsearch備份位置,路徑要手動建立

path.repo: ["/opt/elasticsearch/elasticseaarch-5.6.3/data/backups"]

如果安裝elasticsearch-head外掛,需要新增以下選項

http.cors.enabled: true
http.cors.allow-origin: "*"

如果安裝x-pack外掛,我們取消他的basic認證,需要新增以下選項

xpack.security.enabled: false

修改jvm記憶體[這個配置項很重要,在現實生產中要配的大一些,但是最大不能超過32g]

vim config/jvm.options  
-Xms2g  ---> -Xms512m  
-Xmx2g  ---> -Xms512m   

分發

將配置好的Elasticsearch安裝介質分發到其他的伺服器上
只需要將elasticsearch.yml配置檔案中的相關引數修改一下即可

cluster.name: hy2u-elasticsearch   (叢集名稱,同一叢集要一樣)
node.name: hy2u-node-1  (節點名稱,同一叢集要不一樣)
http.port: 9200  #連線埠 (叢集連線埠,同一叢集要一樣)
network.host: 192.168.174.113   #預設網路連線地址,寫當前主機的靜態IP,這裡不能寫127.0.0.1

啟動與關閉

每一臺裝置都要單獨啟動

前臺啟動 
$ ./elasticsearch 

後臺啟動 -d為守護程式執行
$ ./elasticsearch –d
$ ./elasticsearch & # 使用這種方式他會列印日誌在前臺

檢視elasticsearch 程式

$ jps
2369 Elasticsearch

使用kill 命令殺死程式

kill -9 2369(pid)

瀏覽器訪問

訪問單節點:http://192.168.174.113:9200/

step 4 install plugins

install elasticsearch-head

由於5.x版本開始,_site被禁用了,所以head等有頁面展示的外掛無法像2.x一樣以嵌入形式執行,必須以一個單獨的服務來執行。

去GitHub下載elasticsearch-head原始碼 下載node並安裝: head外掛本質上是一個NodeJS工程,需要使用npm來下載依賴包並打包(npm可以理解為maven),下載node的地址:nodejs.org/en/download/。 解壓安裝包

xz -d node*.tar.xz
tar -xvf node*.tar

配置環境變數

sudo vi /etc/profile
export NODE_HOME=/opt/node-*-linux-x64
export PATH=$PATH:$NODE_HOME/bin

重新整理環境變數

source /etc/profile

驗證node是否安裝成功

echo $NODE_HOME
node -v
npm -v

編譯head 修改head外掛的配置檔案

$HEAD_HOME/Gruntfile.js
connect: {
    server: {
       options: {
          port: 9100,
          hostname: '*', 
          base: '.',
          keepalive: true
       }
    }
}

$HEAD_HOME/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.186.30:9200";

新增ES配置項

vi $ES_HOME/config/elasticsearch.yml

新增以下配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"

執行head外掛

cd $HEAD_HOME
npm install
cd head目錄/node_modules/grunt/bin/
./grunt server &

訪問head外掛

http:/192.168.174.113:9100
預設埠是9100,可以通過編輯head/Gruntfile.js進行修改。
關閉 netstat -apn|grep 9100  

install kibana

解壓kibana到相應的目錄

tar -zxvf /opt/elasticsearch/kibana-5.6.3-linux-x86_64.tar.gz -C /opt/elasticsearch

修改配置檔案kibana.yml

vi /opt/elasticsearch/kibana-5.6.3/config/kibana.yml    (修改以下引數)
server.port: 5601
server.host: "192.168.174.113"
elasticsearch.url: "http://192.168.174.113:9200"

啟動kibana

前臺:./opt/elasticsearch/kibana-5.6.3/bin/kibana
後臺:nohup /opt/elasticsearch/kibana-5.6.3/bin/kibana </dev/null &>/dev/null &

install x-pack

下載x-pack安裝包 安裝x-pack之前一定要先安裝kibana

在每一臺elasticsearch節點的$ES_HOME下執行

線上版:bin/elasticsearch-plugin install x-pack
離線版:bin/elasticsearch-plugin install file:///home/admin/x-pack.zip    #file:後邊一定是三個/少一個都不行

在安裝kibana的伺服器上的kibana的$KIBANA_HOME下執行

線上版:bin/kibana-plugin install x-pack
離線版:bin/kibana-plugin install file:///home/admin/x-pack.zip

在每一臺elasticsearch節點的$ES_HOME/config/elasticsearch.yml檔案中新增以下配置

xpack.security.enabled: false

解除安裝

$ES_HOME/bin/elasticsearch-plugin remove x-pack
$KIBANA_HOME/bin/kibana-plugin remove x-pack

install IK

install elasticsearch-sql

5.x版本sql外掛的安裝和使用(目前支援最高的版本為5.1.2)
參考網址:github.com/NLPchina/elasticsearch-...
1、es的sql外掛分為兩部分,一部分是需要放在es目錄/plugins下的,用來支援sql查詢;另外一部分類似於head外掛,是一個NodeJS工程,提供頁面服務。
2、安裝sql外掛及web ui
(1)在es叢集中的每個節點上執行如下操作,(在每個節點上安裝sql外掛?)

此命令會在es目錄/plugins下建立一個sql目錄,此時重啟節點以便載入sql外掛。重啟並使得sql外掛成功載入之後,便可以通過瀏覽器利用如:
localhost:9200/_sql?sql=select * from indexName limit 10
的方式進行查詢。同時,sql的API也可以使用了。
(2)在任意一臺節點上安裝sql的web應用
①下載es-sql-standalone,地址:github.com/NLPchina/elasticsearch-...
②安裝並啟動web應用

將es目錄/plugins/sql目錄下的_site目錄覆蓋es-sql-site-standalone目錄下的_site

此時sql的web應用已經啟動了,預設埠是8080,可以通過編輯es目錄/plugins/sql/es-sql-site/site-server/site_configuration.json進行修改。
3、訪問web介面
最新版的sql介面訪問時候有認證問題存在,2.x版直接使用的方式行不通。所以在訪問頁面時需要傳入一個引數,如:
192.168.186.30:8080/?base_uri=192.1...
之所以要加這個引數是由於2.x升級到5.x的一個bug,2.x的訪問方式是esIP:9200/_plugin/sql。在頁面執行sql查詢的時候,IP和埠引用位址列的。而現在5.x版本的web頁面是一個獨立的應用,埠不能繫結成9200,但是與es互動的埠依然是訪問web頁面的埠,這就導致無法與es叢集正常通訊。在這裡加這個引數的目的就是告訴sql的web介面與es通訊的IP和埠。

can not run elasticsearch as root

解決方法:建立其他非root賬戶,修改資料夾 檔案 所屬使用者 組

ERROR: bootstrap checks failed

解決方法:修改系統limits.conf檔案
# vi /etc/security/limits.conf
新增如下內容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
備註:* 代表Linux所有使用者名稱稱(比如 hadoop)

啟動後,只有本地可以訪問

解決方法:在elasticsearch.yml檔案中增加:network.bind_host: 0.0.0.0

ERROR:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(…) failed; error=’Cannot allocate memory’ (errno=12)

解決方法:修改jvm記憶體

   vim config/jvm.options  
   -Xms2g  ---> -Xms512m  
   -Xmx2g  ---> -Xms512m   

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解決方法:設定最大開啟檔案數
    修改最大檔案數為65536
    # ulimit -n 65536
    檢視是否修改成功
    # ulimit -a

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解決方法:修改sysctl.conf
    # vi /etc/sysctl.conf 
    新增下面配置:
    vm.max_map_count=655360
    並執行命令:
    # sysctl -p

max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解決方法:修改90-nproc.conf
# vi /etc/security/limits.d/90-nproc.conf 
修改如下內容:
* soft nproc 1024
#修改為
* soft nproc 2048
本作品採用《CC 協議》,轉載必須註明作者和本文連結
你還差得遠吶!

相關文章