根据官方website
,docker中弹性搜索的生产设置如下所示version: '2'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2
container_name: elasticsearch1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch1"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet
volumes:
esdata1:
driver: local
esdata2:
driver: local
networks:
esnet:
Elasticsearch1已暴露,它也通过docker网络与Elasticsearch2连接,但它们有自己的存储。 现在是我的问题。这个设置如何工作? ES2(elasticsearch2)在ES1(elasticsearch1)发生故障之前什么都不做,或者是在复制一切?
因为当我使用API时,我将始终与localhost:9200
连接,因此我将始终访问ES1。我不知道ES1在处理与ES2相关的信息方面做了什么。
另一种情况是在我的logstash.conf中我必须定义输出的目的地:
output {
elasticsearch { hosts => ["elasticsearch1:9200"] }
xxx
}
我将它保留在docker网络内部(logstash与elasticsearch1链接)但我不知道我是否还要定义elasticsearch2?或者现在发生了什么。
elasticsearch1和elasticsearch2如何协同工作?
答案 0 :(得分:0)
这两个实例充当集群。即使您查询单个节点,您的查询也会在内部转发到集群的所有节点(在您的情况下为2),因为数据在它们之间共享。有关详细信息,请查看此官方页面:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/_basic_concepts.html