Elasticsearch Docker容器不能相互连接| 引起:io.netty.channel.ConnectTimeoutException:连接超时

我已经在两个OpenStack虚拟机中创build了两个弹性searchDocker容器,如下所示 –

docker pull docker.elastic.co/elasticsearch/elasticsearch:5.5.0 docker run --name elasticsearch -p 9200:9200 -p 9300-9400:9300-9400 docker.elastic.co/elasticsearch/elasticsearch:5.5.0 

我的10.247.61.131在 – 10.247.61.131如下 –

 cluster.name: "logging" network.host: 0.0.0.0 node.name: "es_0" network.bind_host: 0.0.0.0 network.publish_host: "10.247.61.131" discovery.zen.minimum_master_nodes: 2 discovery.zen.ping.unicast.hosts: - 10.247.61.131 - 10.247.61.132 

10.247.61.32如下 –

 cluster.name: "logging" network.host: 0.0.0.0 node.name: "es_1" network.bind_host: 0.0.0.0 network.publish_host: "10.247.61.32" discovery.zen.minimum_master_nodes: 2 discovery.zen.ping.unicast.hosts: - 10.247.61.131 - 10.247.61.132 

当我开始他们时,我正面临着这个问题 –

 org.elasticsearch.transport.ConnectTransportException: [es_1][10.247.61.32:9300] connect_timeout[30s] at org.elasticsearch.transport.netty4.Netty4Transport.connectToChannels(Netty4Transport.java:361) ~[?:?] at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:548) ~[elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.transport.TcpTransport.connectToNode(TcpTransport.java:472) ~[elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:332) ~[elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:319) ~[elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.discovery.zen.ZenDiscovery.joinElectedMaster(ZenDiscovery.java:459) [elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:411) [elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.discovery.zen.ZenDiscovery.access$4100(ZenDiscovery.java:83) [elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1188) [elasticsearch-5.5.0.jar:5.5.0] at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-5.5.0.jar:5.5.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: 10.247.61.32/10.247.61.32:9300 at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:267) ~[?:?] at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38) ~[?:?] at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:120) ~[?:?] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) ~[?:?] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) ~[?:?] 

两台虚拟机都在同一个Intranet上运行。

还有一件事,当我使用Elasticsearch Java客户端创build独立集群并尝试从第三个虚拟机连接时,它工作正常,如下所示 –

 TransportClient client = new PreBuiltXPackTransportClient(Settings.builder() .put("cluster.name", "onap-logging") .put("xpack.security.user", "elastic:changeme") .build()) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("10.247.61.132"), 9300)); 

我不明白我错在哪里? 在谷歌search了很多,但找不到太多的帮助