Docker在多机器上搭建ES集群,各节点无法互通问题

1.检查ES的network.*配置

network.bind_host值可以设置为0.0.0.0(表示监听所有网卡)或宿主机Ip(如果设为宿主机Ip则不能通过localhost或127.0.0.1即回环地址进行访问es),我这里设置为0.0.0.0。
network.publish_host表示ES的发布地址,该项地址作为ES节点内部或集群交互地址。建议设置为宿主机地址

2.按上面配置了,但是各节点不能形成集群,每个节点都作为master节点?

本人在使用容器搭建集群时一开始就将ES的data目录挂载到宿主机的目录上,且一开始的network.host没有配置,没有配置的情况下默认使用本地地址,跨机器的节点无法相互发现。而我每次启动容器都是将宿主机的data目录映射到ES的目录上,导致了即使修改了network配置也形成不了集群。调试了差不多一天,终于在日志中发现问题所在:集群的version都升到50几了,而我每次都是修改配置后重新制作容器,正常的话version应该是1才对。想到容器每次启动指定了data目录,赶紧先把data目录清空,再按上述配置network,搞定。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在三台机器搭建 Elasticsearch 集群,可以按照以下步骤进行: 1. 在每台机器上安装 Docker:根据操作系统的不同,安装对应的 Docker 版本。 2. 创建一个共享网络:在 Docker 中,创建一个共享网络,以便容器可以相互通信。可以使用以下命令在每台机器上创建一个名为 "es_net" 的网络: ```shell docker network create es_net ``` 3. 在第一台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es01 --net es_net -p 9200:9200 -p 9300:9300 -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ``` 这将创建一个名为 "es01" 的 Elasticsearch 容器,并将其连接到 "es_net" 网络。容器将通过端口映射将 Elasticsearch 的 9200 和 9300 端口暴露到主机上。设置 "discovery.type" 为 "zen",并通过 "cluster.initial_master_nodes" 参数指定自己作为初始主节点。 4. 在第二台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es02 --net es_net -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ``` 使用上述命令在第二台机器上创建一个名为 "es02" 的容器,并将其连接到同一网络。通过设置 "discovery.type" 为 "zen",并通过 "cluster.initial_master_nodes" 参数指定已存在的主节点 "es01",将新容器加入到已有的集群中。 5. 在第三台机器上创建 Elasticsearch 容器: ```shell docker run -d --name es03 --net es_net -e "discovery.type=zen" -e "cluster.initial_master_nodes=es01" docker.elastic.co/elasticsearch/elasticsearch:7.14.0

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值