当前位置: 首页 > 知识库问答 >
问题:

无法连接到使用Java API在本地虚拟机上运行的ElasticSearch Docker群集

滕夜洛
2023-03-14

我有Ubuntu作为虚拟机使用Oracle VM运行。在这个虚拟机中运行弹性访问docker使用以下命令:

sudo docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch

在Oracle VM机器网络设置中,我添加了此端口转发:

主宾

127.0.0.1:9200 --

当我尝试使用chrome将http请求发送到地址127.0.0.1:9200和127.0.0.1:9300时,我得到的响应没有问题。

当我尝试使用Java客户端API进行连接时,出现以下异常:

[DEBUG] org.elasticsearch.client.transport - [Rattler] adding address [[#transport#-1][ran-pc][inet[/127.0.0.1:9300]]]
[DEBUG] org.elasticsearch.transport.netty - [Rattler] connected to node [[#transport#-1][ran-pc][inet[/127.0.0.1:9300]]]
[DEBUG] org.elasticsearch.client.transport - [Rattler] failed to connect to discovered node [[Ringmaster][LB14-DlsS-2XIDwduUj5sA][c367b60225b2][inet[/172.17.0.2:9300]]]
org.elasticsearch.transport.ConnectTransportException: [Ringmaster][inet[/172.17.0.2:9300]] connect_timeout[30s]
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:825) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:758) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:731) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:216) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.validateNewNodes(TransportClientNodesService.java:331) [elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.client.transport.TransportClientNodesService$SniffNodesSampler.doSample(TransportClientNodesService.java:503) [elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.sample(TransportClientNodesService.java:315) [elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.client.transport.TransportClientNodesService.addTransportAddresses(TransportClientNodesService.java:174) [elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.client.transport.TransportClient.addTransportAddresses(TransportClient.java:268) [elasticsearch-1.6.0.jar:na]
    at infastructure.documents.ElasticSearchDocumentStore.lambda$Connect$2(ElasticSearchDocumentStore.java:104) [classes/:na]
    at infastructure.documents.ElasticSearchDocumentStore$$Lambda$5/673384643.run(Unknown Source) [classes/:na]
    at com.nurkiewicz.asyncretry.AsyncRetryExecutor.lambda$doWithRetry$4(AsyncRetryExecutor.java:55) [asyncretry-0.0.6.jar:na]
    at com.nurkiewicz.asyncretry.AsyncRetryExecutor$$Lambda$6/3886839.call(Unknown Source) [asyncretry-0.0.6.jar:na]
    at com.nurkiewicz.asyncretry.SyncRetryJob.run(SyncRetryJob.java:23) [asyncretry-0.0.6.jar:na]
    at com.nurkiewicz.asyncretry.RetryJob.run(RetryJob.java:95) [asyncretry-0.0.6.jar:na]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_45]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
Caused by: java.net.ConnectException: Connection timed out: no further information: /172.17.0.2:9300
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_45]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_45]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) ~[elasticsearch-1.6.0.jar:na]
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) ~[elasticsearch-1.6.0.jar:na]
    ... 3 common frames omitted

正如您所看到的,它成功地连接到127.0.0.1:9300,但随后它获得了节点ip(172.17.0.2),当然,与它的连接失败(运行VM的windows没有ping到此ip)。

我试图禁用防火墙并添加以下内容:

172.17.0.2:9300 --

172.17.0.2:9300 --

(10.0.0.15是VM的ip)但没有成功。

我知道问题出在端口转发上,但是我该如何解决呢?

我研究了这个问题,但我在这里找不到答案,我想这是另一个问题。

共有1个答案

徐丰茂
2023-03-14

问题在于Elasticsearch集群位于Docker创建的另一个网络上。

解决此问题的一种方法是在本地计算机上使用SSH隧道连接到该网络,并从本地a端口转发到远程9300。

下面是一个关于如何定义SSH隧道的示例,以及一个关于如何使用JAVA客户端API连接到Elasticsearch的示例代码。

 类似资料:
  • 我已经使用Eclipse很长一段时间了,但是我最近遇到了一个错误,这个错误现在真的困扰着我,因为我无法使用调试器。我可以正常运行我的程序,但不能运行调试器。这是我尝试使用调试器运行时得到的: 启动CarLoanUser时遇到问题无法连接到虚拟机无法连接到虚拟机com . sun . jdi . connect . transporttimeoutexception 在控制台中: 本机方法中的致命错

  • 我正在使用一个安装了docker的docker映像,为了运行任务来清理我的kubernetes集群中每个节点上的docker映像数据。我尝试使用Daemonset,因为它将在除master之外的每个节点上运行,但是在docker容器中运行cron被证明是徒劳的。 因此,我尝试使用K8s Cronjob,它定期运行,具有以下属性: 和 我正在运行一个 shell 脚本,该脚本从上述 CronJob

  • 我在我的本地主机中设置了3个Redis服务器和3个Redis Sentinel实例。服务器运行在: 哨兵们跑到: 我有一个(Java)客户机,它试图连接到一个哨兵并在redis服务器中设置密钥: 最初,我的哨兵配置如下(例如,在端口上运行的第一个哨兵): 如果我尝试运行我的(Java)客户机,我会得到以下错误: 但是,如果我将sentinel配置脚本更改为下面的脚本: 为什么注释出并显式地将设置为

  • 问题内容: 我正在尝试使用PyMySQL连接到本地主机上的MySQL: 但是(在Python 2.7和Python 3.2上)我得到了错误: socket.error:[Errno 111]连接被拒绝 pymysql.err.OperationalError:(2003年,“无法连接到’localhost’(111)上的MySQL服务器”) 我确定mysqld正在运行,因为我可以使用command

  • 试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne

  • 我在Windows 10系统上运行一个Ubuntu 18.10 LTS虚拟机。在网络配置中,我将网络设置为。之后,我的虚拟机出现在我的本地网络中,ip。从我的主机系统向VM执行操作很好。 然后,我启动了一个烧瓶应用程序。在 VM 上,服务器将启动,并在本地主机:5001 下可用。 但是从我的托管服务,当我尝试访问时,我。 我必须在虚拟机上打开一些端口吗? 谢谢!