gpt4 book ai didi

elasticsearch - 在 docker 容器中配置 ELK 集群

转载 作者:行者123 更新时间:2023-12-02 22:19:03 30 4
gpt4 key购买 nike

我正在尝试使用 2 个 docker 容器配置 ELK 集群。

我正在使用下面的图片:

我已经使用 docker-compose 为该图像创建了 2 个 docker 容器;每个都在独立模式下完美运行。

我想以创建集群的方式将 2 个 ELK 节点相互链接起来,但我还没有找到合适的解决方案。container1 中的 Elasticsearch 节点不与 container2 中的 Elasticsearch 节点通信。

这是两个docker-compose.yml:

容器 1:

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

容器 2:

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:

容器 1 中的节点:

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

容器 2 中的节点:

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

最佳答案

除了使用带有 ELK 堆栈的准备好的 docker 文件,您还可以这样做:

version: '3'

services:

elasticsearch:
image: elasticsearch:2.4.1
ports:
- 9200:9200
networks:
- elk

elasticsearch_slave:
image: elasticsearch:2.4.1
networks:
- elk
depends_on:
- elasticsearch
command: elasticsearch --discovery.zen.ping.unicast.hosts=elasticsearch

logstash:
image: logstash:2.3.3
hostname: logstash
networks:
- elk
volumes:
- ./logstash.conf:/config/logstash.conf
depends_on:
- elasticsearch
ports:
- 5044:5044
command: logstash -f /config/logstash.conf

kibana:
image: kibana:4.5.1
hostname: kibana
networks:
- elk
depends_on:
- elasticsearch
- logstash
ports:
- 5601:5601

networks:

elk:
driver: bridge

一旦您使用 docker-compose up -d 启动您的图像,您就可以使用以下命令缩放从站 docker-compose scale elasticsearch_slave=5

一旦完成 - 您将拥有 5 个从站 + 客户端节点,它们打开端口 9200 作为整个集群的网关。

例如,这样做之后,http://localhost:9200/_cat/nodes?v 显示如下: enter image description here

关于elasticsearch - 在 docker 容器中配置 ELK 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301385/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com