【发布时间】:2017-06-01 07:39:39
【问题描述】:
我正在尝试使用 2 个 docker 容器配置 ELK 集群。
我正在使用以下图片:
- es241_l240_k461:Elasticsearch 2.4.1、Logstash 2.4.0 和 Kibana 4.6.1。 (参考:https://hub.docker.com/r/sebp/elk/)
我使用docker-compose 为该图像创建了 2 个 docker 容器;每个都可以在独立模式下完美运行。
我想将 2 个 ELK 节点相互链接以创建集群,但我还没有找到合适的解决方案。 container1 中的 Elasticsearch 节点不与 container2 中的 Elasticsearch 节点通信。
这是两个docker-compose.yml:
CONTAINER1:
version: '2'
services:
elasticsearch01:
image: sebp/elk:es241_l240_k461
ports:
- "5601:5601"
- "9200:9200"
- "9300:9300"
- "5044:5044"
volumes:
- /opt/ELK1/logstash/conf.d:/etc/logstash/conf.d
privileged: true
CONTAINER2:
version: '2'
services:
elasticsearch02:
image: sebp/elk:es241_l240_k461
ports:
- "5602:5601"
- "9201:9200"
- "9301:9300"
- "5045:5044"
volumes:
- /opt/ELK2/logstash/conf.d:/etc/logstash/conf.d
privileged: true
我已经以这种方式在 docker 容器中配置了elasticsearch.yml:
CONTAINER1 中的节点:
cluster.name: elasticsearchcluster
node.name: node1
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "172.21.0.2"]
discovery.zen.minimum_master_nodes: 1
CONTAINER2 中的节点:
cluster.name: elasticsearchcluster
node.name: node2
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "172.22.0.2"]
discovery.zen.minimum_master_nodes: 1
关键是discovery.zen.ping.unicast.hosts参数:我没有真实IP地址,因为是docker容器。
我试过docker inspect elasticsearch01,我有以下"IPAddress"属性:
"NetworkSettings": {
...
"Networks": {
"ELK1_default": {
...
"Gateway": "172.22.0.1",
"IPAddress": "172.22.0.2",
...
}
}
}
但如果我设置了那个 IP 地址,它就不起作用了。
如何正确配置集群?
编辑
尝试主机ip地址和端口,节点1启动,节点2失败,没有错误。
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.0.1:9300"] -> OK
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.0.2:9300"] -> FAILS with no errors
【问题讨论】:
-
discovery.zen.ping.unicast.hosts: ["127.0.0.1", elasticsearch01, elasticsearch02]不行吗?或者,只需在docker-compose中设置一个单独的 elasticsearch 容器,然后根据需要进行缩放。一个很好的例子在这里:hub.docker.com/r/itzg/elasticsearch -
不,我尝试使用名称而不是 IP 地址,但它不起作用。它似乎搜索容器内部的节点,而不是外部。显然我在每个容器中只有一个节点。
-
你看过我发给你的链接了吗?这将是您问题的正确解决方案。
-
是的,我看过了,但它指的是 Elasticsearch 的 1.3.5 版本。我用的是2.4.1版本。
-
您必须使用
2.4.1还是可以是最新版本?
标签: elasticsearch docker-compose elastic-stack elasticsearch-2.0 docker-container