1. 程式人生 > >elasticsearch6.0.1單機多節點叢集搭建

elasticsearch6.0.1單機多節點叢集搭建

環境準備

1、準備兩臺伺服器:10.47.227.13   10.47.227.14(預設已安裝java環境)

2、es6.0.1安裝包下載 (下載地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-0-1

3、cerebro外掛下載(下載地址:https://github.com/lmenezes/cerebro/releases

4、新增使用者es(elasticsearch不能由root使用者啟動)

//新增使用者es
adduser es
//設定密碼
passwd es

叢集搭建

1.叢集概況:3個master節點,5個數據節點

伺服器 節點名稱 是否為主節點 是否為資料節點
10.47.227.13 node-1 true true
10.47.227.13 node-2 true true
10.47.227.13 node-3 true true
10.47.227.14 node-4 false true
10.47.227.14 node-5 false true

 

 

 

 

 

 

  

 2、10.47.227.13機器建立3個目錄對應3個es節點

mkdir /opt/es/server1
mkdir /opt/es/server2
mkdir /opt/es/server3

分別解壓es安裝包到3個目錄中

tar -zxvf elasticsearch-6.0.1.tar.gz

3、建立資料存放路徑和日誌存放路徑(應將設定配置為在Elasticsearch主目錄之外定位資料目錄,以便在不刪除資料的情況下刪除主目錄!)

mkdir /usr/local/es/server1/data
mkdir /usr/local/es/server1/logs
...

4、為es使用者授權

#賦予資料夾許可權
chown -R es:es /opt/es

5、配置elasticsearch.yml(以node-1節點為例)

注意:每個配置項冒號後面需要空一格,否則啟動會報錯

##叢集名稱,每個節點配置成一樣的名稱才能形成正確的叢集
cluster.name: local-es-cluster
##節點名稱,每個節點配置不同名稱
node.name: node-1
##是否主節點
node.master: true       
##是否資料節點        
node.data: true       
##單機最大節點數          
node.max_local_storage_nodes: 3
##索引資料的儲存路徑
path.data: /usr/local/es/server1/data
##日誌檔案的儲存路徑
path.logs: /usr/local/es/server1/logs
##啟動時鎖定記憶體,設定為true來鎖住記憶體。因為記憶體交換到磁碟對伺服器效能來說是致命的,當jvm開始swapping時es的效率會降低,所以要保證它不swap
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
##繫結的ip地址
network.host: 10.47.227.13
##設定對外服務的http埠,預設為9200
http.port: 9200
## 設定節點間互動的tcp埠,預設是9300 
transport.tcp.port: 9300
transport.tcp.compress: true
## 設定叢集中節點的初始列表,可以通過這些節點來自動發現新加入叢集的節點
discovery.zen.ping.unicast.hosts: ["10.47.227.13:9300", "10.47.227.13:9301","10.47.227.13:9302","10.47.227.14:9300","10.47.227.14:9301"]
##防止腦裂現象,如果沒有這種設定,遭受網路故障的叢集就有可能將叢集分成兩個獨立的叢集 - 這將導致資料丟失
discovery.zen.minimum_master_nodes: 2
#action.destructive_requires_name: true

node-2,node-3節點配置與node-1類似,修改node.name、path.data、path.log、http.port、transport.tcp.port等配置為對應值即可。

node-4,node-5除以上幾項需修改外,node.master配置為false,network.host配置為10.47.227.14即可。

6、如果記憶體空間不足,需修改jvm.options中配置

因為兩臺本地叢集機器記憶體一共為4g,jvm.options中每個節點預設分配1g,10.47.227.13上啟動三個節點時,加上其他額外的記憶體消耗,會出現記憶體不足,三個節點無法全部正常啟動(只能啟動部分節點,有時候一個節點啟動正常,有時候是兩個),所以需要修改jvm記憶體配置

vim /opt/es/server1/elasticsearch-6.0.1/config/jvm.options 
#預設是1g官方建議對jvm進行一些修改,不然很容易出現OOM,參考官網改引數配置最好不要超過記憶體的50% 
-Xms750m
-Xmx750m

7、啟動各個es節點

注意:啟動操作需登入es使用者執行

//切到es使用者
su - es
//進入es節點路徑
cd /opt/es/server1/elasticsearch-6.0.1/
//啟動
./elasticsearch -d

如果出現以下錯誤

[2018-02-14T23:40:16,908][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: memory locking requested for elasticsearch process but memory is not locked
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2018-02-14T23:40:16,910][INFO ][o.e.n.Node               ] [node-1] stopping ...
[2018-02-14T23:40:17,016][INFO ][o.e.n.Node               ] [node-1] stopped
[2018-02-14T23:40:17,016][INFO ][o.e.n.Node               ] [node-1] closing ...
[2018-02-14T23:40:17,032][INFO ][o.e.n.Node               ] [node-1] closed

解決方法
切回root使用者,修改配置 

① vim /etc/security/limits.conf

es soft nofile 65536
es hard nofile 131072
es soft nproc 4096
es hard nproc 8192
#我選擇鎖住swapping因此需要在這個配置檔案下再增加兩行程式碼
es soft memlock unlimited
es hard memlock unlimited

以上引數介紹參考:https://my.oschina.net/987openlab/blog/94634

② vim /etc/sysctl.conf

vm.max_map_count=655360
fs.file-max=655360

注意:之後需要執行一句命令sysctl -p使系統配置生效(使用root使用者)

再次重啟各es節點就可以了,使用ps -ef|grep elasticsearch程序檢視命令

 ps -ef|grep elasticsearch
es       10118 10083  0 16:58 pts/1    00:00:00 grep elasticsearch
es       29374     1  2 Jan02 ?        01:05:26 /opt/openjdk-1.8.0_92/bin/java -Xms750m -Xmx750m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/opt/es/server1/elasticsearch-6.0.1 -Des.path.conf=/opt/es/server1/elasticsearch-6.0.1/config -cp /opt/es/server1/elasticsearch-6.0.1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
es       29487     1  0 Jan02 ?        00:28:45 /opt/openjdk-1.8.0_92/bin/java -Xms750m -Xmx750m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/opt/es/server2/elasticsearch-6.0.1 -Des.path.conf=/opt/es/server2/elasticsearch-6.0.1/config -cp /opt/es/server2/elasticsearch-6.0.1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
es       29583     1  0 Jan02 ?        00:23:11 /opt/openjdk-1.8.0_92/bin/java -Xms750m -Xmx750m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/opt/es/server3/elasticsearch-6.0.1 -Des.path.conf=/opt/es/server3/elasticsearch-6.0.1/config -cp /opt/es/server3/elasticsearch-6.0.1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d

可以發現10.47.227.13上三個master節點都正常啟動了。

cerebro外掛安裝

es5版本後不支援head,kopf,這裡安裝cerebro。只需要在一臺機器上操作即可

//解壓cerebro
tar xf cerebro-0.8.1.tgz 

//修改配置,如果外掛安裝在叢集機器上,則不需要配置hosts
vim conf/ application.conf
hosts = [
     {
         host = "http://10.47.227.13:9200"
         name = "local-es-cluster"
     },
]

//啟動cerebro
./bin/cerebro &    

cerebro管理外掛預設埠9000,訪問http://10.47.227.13:9000即可進入cerebro管理頁面。

填入叢集訪問地址 http://10.47.227.13:9200即可進入