elasticsearch 如何在docker compose中设置具有多个主节点的弹性搜索集群?
我让docker compose制作了一个包含1个主节点和2个数据节点的弹性搜索节点集群,如下所示,但我想知道如何扩展此集群以添加更多主节点,因为如果主节点出现故障,此设置仍然存在单点故障 更具体地说,第二个主节点如何与使用它的主机和应用程序交互?是否必须为第二个主节点绑定到主机上的其他端口?然后,应用程序是否必须通过负载平衡器来处理主NOE之一出现故障的情况elasticsearch 如何在docker compose中设置具有多个主节点的弹性搜索集群?,elasticsearch,docker,docker-compose,elasticsearch,Docker,Docker Compose,我让docker compose制作了一个包含1个主节点和2个数据节点的弹性搜索节点集群,如下所示,但我想知道如何扩展此集群以添加更多主节点,因为如果主节点出现故障,此设置仍然存在单点故障 更具体地说,第二个主节点如何与使用它的主机和应用程序交互?是否必须为第二个主节点绑定到主机上的其他端口?然后,应用程序是否必须通过负载平衡器来处理主NOE之一出现故障的情况 elasticsearch_master: image: elasticsearch:latest command: "elas
elasticsearch_master:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=vi -Des.node.master=true -Des.node.data=false"
ports:
- "9200:9200"
- "9300:9300"
elasticsearch1:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=vi -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
links:
- elasticsearch_master
volumes:
- "~/esdata:/usr/share/elasticsearch/data"
elasticsearch2:
image: elasticsearch:latest
command: "elasticsearch -Des.cluster.name=vi -Des.discovery.zen.ping.unicast.hosts=elasticsearch_master"
links:
- elasticsearch_master
volumes:
- "~/esdata:/usr/share/elasticsearch/data"
我知道我们的做法不同,但这里有一个代码示例对我很有用
services:
esmaster1:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: esmaster1
environment:
- cluster.name=es_cluster
- bootstrap.memory_lock=true
- http.cors.enabled=true
- "http.cors.allow-origin=*"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
- "node.master=true"
- "node.data=true"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata1:/home/ruan/workspace/docker/elasticsearch/data
esmaster2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: esmaster2
environment:
- cluster.name=es_cluster
- bootstrap.memory_lock=true
- http.cors.enabled=true
- "http.cors.allow-origin=*"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
- "node.master=true"
- "node.data=true"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata2:/home/ruan/workspace/docker/elasticsearch/data
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: elasticsearch1
environment:
- cluster.name=es_cluster
- bootstrap.memory_lock=true
- http.cors.enabled=true
- "http.cors.allow-origin=*"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
- "node.master=false"
- "node.data=true"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata3:/home/ruan/workspace/docker/elasticsearch/data
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
container_name: elasticsearch2
environment:
- cluster.name=es_cluster
- bootstrap.memory_lock=true
- http.cors.enabled=true
- "http.cors.allow-origin=*"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=esmaster1,esmaster2"
- "node.master=false"
- "node.data=true"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata4:/home/ruan/workspace/docker/elasticsearch/data
volumes:
esdata1:
driver: local
esdata2:
driver: local
esdata3:
driver: local
esdata4:
driver: local
如果主节点死亡,第二个节点将接管主节点并处理集群。如果您想使用Kibana(或任何其他可视化工具),还应该向集群添加其他Elasticsearch实例来处理该连接。此新实例不需要是主节点、数据节点或摄取节点
我希望这有帮助 你能找到这个问题的答案吗?