My VM can see 124 and 125 just fine, but due to issues completely unrelated
to ES, it cannot see its own public IP. As a result, the logs on each
machine fill up with these exceptions:
org.elasticsearch.transport.ConnectTransportException: [elk2][inet[/10.255.207.123:9300]]
connect_timeout[30s]
at
org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:807)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:741)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:714)
at
org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:150)
at
org.elasticsearch.cluster.service.InternalClusterService$ReconnectToNodes.run(InternalClusterService.java:521)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.elasticsearch.common.netty.channel.ConnectTimeoutException:
connection timed out: /10.255.207.123:9300
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.
processConnectTimeout(NioClientBoss.java:139)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process
(NioClientBoss.java:83)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.
run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(
NioClientBoss.java:42)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(
ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(
DeadLockProofWorker.java:42)
I believe this is pretty innocuous as I've been running this way for 6
months, but I've always been curious as to way my node is even trying to
connect to itself like this? As it goes through the list of
'discovery.zen.ping.unicast.hosts', shouldn't it ignore itself? Maybe ES
doesn't use 'network.publish_host' to determine if the IP belongs to the
current machine?
My VM can see 124 and 125 just fine, but due to issues completely
unrelated to ES, it cannot see its own public IP. As a result, the logs on
each machine fill up with these exceptions:
org.elasticsearch.transport.ConnectTransportException: [elk2][inet[/
10.255.207.123:9300]] connect_timeout[30s]
at
org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:807)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:741)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:714)
at
org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:150)
at
org.elasticsearch.cluster.service.InternalClusterService$ReconnectToNodes.run(InternalClusterService.java:521)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.elasticsearch.common.netty.channel.ConnectTimeoutException:
connection timed out: /10.255.207.123:9300
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.
processConnectTimeout(NioClientBoss.java:139)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.
process(NioClientBoss.java:83)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector
.run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(
NioClientBoss.java:42)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(
ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.
run(DeadLockProofWorker.java:42)
I believe this is pretty innocuous as I've been running this way for 6
months, but I've always been curious as to way my node is even trying to
connect to itself like this? As it goes through the list of
'discovery.zen.ping.unicast.hosts', shouldn't it ignore itself? Maybe ES
doesn't use 'network.publish_host' to determine if the IP belongs to the
current machine?
Well ES is bound to 0.0.0.0. Each node gets traffic from other nodes, it
just can't communicate with its own public IP.
My guess is that on normal systems where
NetworkInterface.getNetworkInterfaces returns 10.255.207.123, Elasticsearch
would not even try to connect to itself when going over the list of
unicast.hosts. The problem -- I presume -- is that it should also use
'network.publish_host', e.g.:
val ipsOfSelf = NetworkInterface.getNetworkInterfaces.map ( _.getIp ).toSet
unicastHosts.foreach { host =>
if (!ipsOfSet.contains(host) && host != publishHostIp) {
// check connectivity to other host in the cluster
}
}
On Monday, January 5, 2015 5:42:55 PM UTC-5, Mark Walkom wrote:
It sounds like because that isn't a local interface that ES is bound to it
tries to access it. Are you using NAT on a higher layer?
On 6 January 2015 at 01:59, Matt Hughes <hughe...@gmail.com <javascript:>>
wrote:
In my VM environment, a VM can't actually see its public IP address. I
have the following setup:
My VM can see 124 and 125 just fine, but due to issues completely
unrelated to ES, it cannot see its own public IP. As a result, the logs on
each machine fill up with these exceptions:
org.elasticsearch.transport.ConnectTransportException: [elk2][inet[/
10.255.207.123:9300]] connect_timeout[30s]
at
org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:807)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:741)
at
org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:714)
at
org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:150)
at
org.elasticsearch.cluster.service.InternalClusterService$ReconnectToNodes.run(InternalClusterService.java:521)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
Caused by:
org.elasticsearch.common.netty.channel.ConnectTimeoutException: connection
timed out: /10.255.207.123:9300
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.
processConnectTimeout(NioClientBoss.java:139)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.
process(NioClientBoss.java:83)
at org.elasticsearch.common.netty.channel.socket.nio.
AbstractNioSelector.run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(
NioClientBoss.java:42)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(
ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.
run(DeadLockProofWorker.java:42)
I believe this is pretty innocuous as I've been running this way for 6
months, but I've always been curious as to way my node is even trying to
connect to itself like this? As it goes through the list of
'discovery.zen.ping.unicast.hosts', shouldn't it ignore itself? Maybe ES
doesn't use 'network.publish_host' to determine if the IP belongs to the
current machine?
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.