我刚打酱油去了,不好意思

跨集群搜索cross cluster search connect_exception

Elasticsearch | 作者 zriplj | 发布于2020年03月03日 | 阅读数:2155

es版本6.2.4
es配置
search:
    remote:
        cluster_one:
            seeds: 181.222.47.8:19220   #由于跨机房,此处配置的是公网ip
启动es日志报错:

[2020-03-03T10:58:29,629][WARN ][o.e.t.RemoteClusterService] [cross] failed to update seed list for cluster: cluster_one
org.elasticsearch.transport.ConnectTransportException: [one-es-logplat06-100101.com][172.16.100.101:19220] connect_exception
at org.elasticsearch.transport.TcpChannel.awaitConnected(TcpChannel.java:165) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:616) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.TcpTransport.connectToNode(TcpTransport.java:513) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:331) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.RemoteClusterConnection$ConnectHandler.lambda$collectRemoteNodes$2(RemoteClusterConnection.java:441) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.common.util.CancellableThreads.executeIO(CancellableThreads.java:105) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.RemoteClusterConnection$ConnectHandler.collectRemoteNodes(RemoteClusterConnection.java:425) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.RemoteClusterConnection$ConnectHandler$1.doRun(RemoteClusterConnection.java:412) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-6.2.4.jar:6.2.4]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_202]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_202]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:573) [elasticsearch-6.2.4.jar:6.2.4]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_202]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_202]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
Caused by: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: 172.16.100.101/172.16.100.101:19220
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[?:?]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:323) ~[?:?]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:545) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:499) ~[?:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) ~[?:?]
... 1 more
Caused by: java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:?]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[?:?]
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:323) ~[?:?]
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:633) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:545) ~[?:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:499) ~[?:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) ~[?:?]
... 1 more
[2020-03-03T10:58:29,633][ERROR][o.e.b.Bootstrap          ] [cross] Exception
java.lang.IllegalStateException: failed to connect to remote clusters
at org.elasticsearch.transport.RemoteClusterService.initializeRemoteClusters(RemoteClusterService.java:340) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.transport.TransportService.doStart(TransportService.java:231) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:66) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.node.Node.start(Node.java:623) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:262) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:332) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) [elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) [elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) [elasticsearch-6.2.4.jar:6.2.4]

明明远程集群搜索配置的是公网ip,为何es启动时报错是连接到172.16.100.101内网Ip的错误了?
已邀请:

medcl - 今晚打老虎。

赞同来自:

你这个ip 和端口是 es 监听的地址和端口还是外面防火墙映射之后的。

medcl - 今晚打老虎。

赞同来自:

默认 ccs 会通过 seed 发现远程集群,拿到远程集群的节点信息,然后挑选 3 个节点(cluster.remote.connect)建立连接来负责查询请求,访问这 3 个节点的时候,连接的是这些节点配置 network_publish_host,所以会报连不上。
6.5 之后提供了一个 proxy 参数(search.remote.$clustername.proxy),可以让请求都走这个配置的 ip。不过你需要先升级集群版本。
 
https://github.com/elastic/ela ... 33062
https://www.elastic.co/guide/e ... .html

medcl - 今晚打老虎。

赞同来自:

我这没有环境测试,不过应该这样就可以了:
 
1. 升级新版本
2. 使用如下配置
cluster.remote.cluster_one.mode: "proxy"
cluster.remote.cluster_one.seeds: 181.222.47.8:19220
cluster.remote.cluster_one.proxy_address: 181.222.47.8:19220
 
 

Charele - Cisco4321

赞同来自:

Caused by: io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: 172.16.100.101/172.16.100.101:19220
 
你的ES是集群的吗?如果172.16.100.101这台机子是你的集群成员,确定它可达并正常。
 

Charele - Cisco4321

赞同来自:

如果配置文件里面没有,看看
GET _cluster/settings的结果里面有没有呢?
 
你的es里面肯定有172.16.100.101的相关信息的吧,否则它怎么会报172.16.100.101连不上呢
他怎么不报别的主机连不上呢?

adrian

赞同来自:

有没有remote_cluster_client节点?没有就设置一个。

要回复问题请先登录注册