一. 創建自定義網絡,用於部署ES集羣
docker network create --subnet=172.18.0.0/16 --gateway=172.18.0.1 talnet
二. ES配置文件
節點1: es1.yml
#集羣名稱
cluster.name: cluster-name
#節點名稱
node.name: es-node1
netwotk.host: 0.0.0.0
#設置綁定的ip地址,可以使ipv4或者ipv6
#綁定這臺機器的任何一個ip
network.bind_host: 172.18.0.2
#設置其他節點和該節點交互的ip地址,如果不設置它會自動判斷,值必須是個真是的ip地址
network.publish_host: 172.18.0.2
#設置對外服務的http端口,默認爲9200
http.port: 7200
#設置節點之間的tcp端口,默認是9300
transport.tcp.port: 7300
#是否允許跨域REST請求
http.cors.enabled: true
#允許REST請求來自何處
http.cors.allow-origin: "*"
#節點角色設置
node.master: true
node.data: true
#集羣的節點列表
discovery.seed_hosts: ["172.18.0.2:7300","172.18.0.3:7301"]
cluster.initial_master_nodes: ["172.18.0.2","172.18.0.3"]
節點二:es2.yml
#集羣名稱
cluster.name: cluster-name
# 節點名稱
node.name: es-node2
# 設置綁定的ip地址,可以使ipv4或者ipv6
# 綁定這臺機器的任何一個ip
network.bind_host: 172.18.0.3
# 設置其他節點和該節點交互的ip地址,如果不設置它會自動判斷,值必須是個真是的ip地址
network.publish_host: 172.18.0.3
# 設置對外服務的http端口,默認爲9200
http.port: 7201
# 設置節點之間的tcp端口,默認是9300
transport.tcp.port: 7301
# 是否允許跨域REST請求
http.cors.enabled: true
# 允許REST請求來自何處
http.cors.allow-origin: "*"
# 節點角色設置
node.master: true
node.data: true
# 集羣的節點列表
discovery.seed_hosts: ["172.18.0.2:7300","172.18.0.3:7301"]
cluster.initial_master_nodes: ["172.18.0.2","172.18.0.3"]
三. 啓動
啓動節點一:
docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -p 7200:7200 -p 7300:7300 \
-v /data/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/data1:/usr/share/elasticsearch/data --network=talnet --ip 172.18.0.2 --name ES01 es_ik:7.4.2
啓動節點二:
docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -p 7201:7201 -p 7301:7301 \
-v /data/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/data2:/usr/share/elasticsearch/data --network=talnet --ip 172.18.0.3 --name ES02 es_ik:7.4.2
四. 驗證集羣
-> curl http://127.0.0.1:7201/_cat/nodes\?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.18.0.3 31 97 0 1.03 0.46 0.17 dilm - es-node2
172.18.0.2 31 97 0 1.03 0.46 0.17 dilm * es-node1