ES叢集構建(本人親測有效)

墨大大發表於2020-12-17

一、下載


wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.tar.gz

二、解壓原始檔

    tar -vxf elasticsearch-5.6.16.tar.gz


三、切換普通使用者


    因為elasticsearch預設不允許root使用者啟動
    1、建立使用者:elasticsearch

    [root@iZbp1bb2egi7w0ueys548pZ bin]# adduser elasticsearch


      2、建立使用者密碼,需要輸入兩次

    [root@iZbp1bb2egi7w0ueys548pZ bin]# passwd elasticsearch


      3、將對應的資料夾許可權賦給該使用者

    [root@iZbp1bb2egi7w0ueys548pZ local]# chown -R elasticsearch elasticsearch-6.0.0


      4、切換至elasticsearch使用者

    [root@iZbp1bb2egi7w0ueys548pZ etc]# su elasticsearch

四、配置主節點


    1、修改配置檔案
    vi /elasticsearch/conf/elasticsearch.yml
 

   //叢集名稱,主從節點必須一致,才能保證為同一個叢集
    cluster.name: elastic-cluster
    //節點名稱
    node.name: master
    //節點是否為主節點
    node.master: true
    //資料目錄
    path.data: /usr/local/soft/elasticsearch-master/data/
    //日誌目錄
    path.logs: /usr/local/soft/elasticsearch-master/logs/
    //鎖定記憶體,避免和swap去互動,導致效能下降
    bootstrap.memory_lock: true
    //繫結ip
    network.host: 192.168.162.72
    //埠設定
    http.port: 9200
    //允許跨域
    http.cors.enabled: true
    //允許跨域的節點
    http.cors.allow-origin: "*"

    2、啟動服務 -d 後臺啟動

    ./elasticsearch/bin/elasticsearch -d 

報錯:ERROR: [1] bootstrap checks failed
解決方案:
    需要設定下系統配置檔案,首先要切換到root使用者,接著做以下修改:
    1、修改/etc/security/limits.conf

    檔案最後新增以下內容:
    * soft nofile 65536


    * hard nofile 65536


    * soft nproc 32000


    * hard nproc 32000


    * hard memlock unlimited


    * soft memlock unlimited


    2、修改/etc/systemd/system.conf

    分別修改以下內容:
    DefaultLimitNOFILE=65536


    DefaultLimitNPROC=32000


    DefaultLimitMEMLOCK=infinity

    3、執行以下操作,立即生效
    /bin/systemctl daemon-reload
    
    4、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    解決:切換到root使用者修改配置sysctl.conf
         vi /etc/sysctl.conf
    新增下面配置:
         vm.max_map_count=262144
    並執行命令:
         sysctl -p


五、配置從節點1

 

1、vi /elasticsearch/conf/elasticsearch.yml

    

cluster.name: elastic-cluster
node.name: slave1
path.data: /usr/local/soft/elasticsearch-slave1/data/
path.logs: /usr/local/soft/elasticsearch-slave1/logs/
bootstrap.memory_lock: true
network.host: 192.168.162.72
http.port: 9201
//主節點地址,若有多個,則配置多個
discovery.zen.ping.unicast.hosts: ["192.168.162.72"]
http.cors.enabled: true
http.cors.allow-origin: "*"


2、啟動服務 -d 後臺啟動

./elasticsearch/bin/elasticsearch -d 

六、配置從節點2

 

1、vi /elasticsearch/conf/elasticsearch.yml

    

cluster.name: elastic-cluster
node.name: slave2
path.data: /usr/local/soft/elasticsearch-slave2/data/
path.logs: /usr/local/soft/elasticsearch-slave2/logs/
bootstrap.memory_lock: true
network.host: 192.168.162.72
http.port: 9202
//主節點地址,若有多個,則配置多個
discovery.zen.ping.unicast.hosts: ["192.168.162.72"]
http.cors.enabled: true
http.cors.allow-origin: "*"

2、啟動服務 -d 後臺啟動
    

./elasticsearch/bin/elasticsearch -d 

七、配置jvm.options

 

預設配置
-Xms2g
-Xmx2g
當系統記憶體不足時,需要調小這個值。否則啟動多個節點時,由於記憶體不足,om會自動kill掉程式。
-Xms512m
-Xmx512m

八、配置elasticsearch-head(es視覺化介面)

 

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
open http://localhost:9100/


 注意:
 當啟動主點後,埠9200和9300同時啟動
9200作為Http協議,節點和外部通訊,呼叫restful介面用9200。
9300作為Tcp協議,ES叢集節點之間的通訊使用。
springboot整合ES的時候需要使用的9300 埠

相關文章