从在docker容器中运行的elasticsearch客户端发出连接elasticsearch集群(即非dockerized)的问题

时间:2016-07-13 07:34:22

标签: java elasticsearch tcp docker

我从在docker容器中运行的elasticsearch客户端连接到elasticsearch集群(即非dockerized)。我可以通过在客户端设置为:

来完成此操作
Settings settings = ImmutableSettings.settingsBuilder()
                .put("node.name", "HelloESClient")
                .put("discovery.zen.ping.multicast.enabled", false)
                .put("discovery.zen.ping.unicast.hosts", "172.16.11.50")
                .put("transport.publish_port", "9300")
                .put("transport.publish_host", "192.168.17.131");

其中192.168.17.131:9300是为弹性搜索集群公开的主机ip:端口连接到节点客户端。

我无法公开主机中的任何其他端口,因为9300端口是elasticsearch config yml中设置为tcp传输端口的端口。

这个问题是我无法启动多个docker容器,其中elasticsearch客户端连接到同一个elasticsearch集群,因为每个容器都不能在同一台机器上公开相同的端口。

1 个答案:

答案 0 :(得分:1)

docker run -d -p 9300:9300 --name es1 elasticsearch
docker run -d -p 9301:9300 --name es2 elasticsearch
docker run -d -p 9302:9300 --name es3 elasticsearch
docker run -d -p 9303:9300 --name es4 elasticsearch

现在你有4个弹性搜索容器