NO IMAGE

概述

用docker進行elasticsearch的部署非常簡單,如果要實現叢集配置,需要進行一些特殊的處理,本文介紹如何利用docker進行elasticsearch叢集的搭建。

具體的配置可以參照該 示例

主節點配置

docker-compose.yml配置檔案

es:
image: elasticsearch
volumes:
- ./es:/usr/share/elasticsearch/data
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
ports:
- 9200:9200
- 9300:9300

其中的./es:/usr/share/elasticsearch/data是將elasticsearch的資料檔案掛在到本機的一個目錄上,這兒指定的本機目錄是./es,可以修改為其它有許可權的目錄。

elasticsearch.yml配置檔案

cluster.name: elasticsearch_cluster
node.name: node-master
node.master: true
node.data: true
http.port: 9200
network.host: 0.0.0.0
network.publish_host: master-ip
discovery.zen.ping.unicast.hosts: ["master-ip"]

network.publish_host: master-ip指定了本機ip,需要將master-ip修改為真實的機器ip。discovery.zen.ping.unicast.hosts中的master-ip同樣需要修改為真實的機器ip。

啟動服務

首先確認一下/etc/sysctl.conf配置檔案中的vm.max_map_count是否大於655360,如果不是,或者配置檔案中沒有該配置,則用root使用者將該配置修改為vm.max_map_count=655360,並執行命令sysctl -p否則啟動時elasticsearch會報錯。

執行docker-compose up -d,就可以正常啟動了。

資料節點配置

docker-compose.yml配置檔案

與主節點的配置相同。

elasticsearch.yml配置檔案

cluster.name: elasticsearch_cluster
node.name: node-data-1
node.master: false
node.data: true
http.port: 9200
network.host: 0.0.0.0
network.publish_host: data-ip
discovery.zen.ping.unicast.hosts: ["master-ip"]

與主節點配置的區別在於以下幾點:

node.name: node-data-1
node.master: false
network.publish_host: data-ip

node.name是資料節點的名字,node.master要設定為false,network.publish_host設定為資料節點的機器ip。

啟動服務

啟動步驟同主節點。

主節點和資料節點都啟動完成後,在主節點伺服器上執行 curl http:///master-ip:9200/_cat/nodes 命令(將命令中的master-ip修改為主節點的機器ip)可以看到叢集中節點的狀態。