【问题标题】:Thrift Client can't connectThrift 客户端无法连接
【发布时间】:2019-01-15 00:16:23
【问题描述】:

我有一个在同一台计算机上运行的节俭服务器和客户端,但是当我在另一台计算机上运行客户端时(使用服务器计算机的 IP),客户端无法连接。两台电脑都是linux的。有任何想法吗?


编辑:如果我在我的服务器计算机上使用 sudo netstat -tulpn | grep [ip]:[port] 检查某些 IP 上的活动,我会得到:

172.18.18.106:9090 -> 没有

:9090 -> tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 10642/server

有没有办法把 0.0.0.0 改成我的 ip?

【问题讨论】:

  • 异常消息、错误日志,还有其他信息吗?
  • 只是标准的TSocket::open() connect() <Host: [ip] Port: 9090> Connection refused 消息(当客户端无法连接时,apache thrift 总是给出这个)
  • 您正在另一台计算机上启动服务器,并在该端口上?
  • 是的,我可以知道,因为如果我从服务器计算机启动客户端,它就可以工作。你认为它可能是防火墙还是什么?
  • 似乎有防火墙,网络上的两台机器之间是什么关系?当你看到绑定到 0.0.0.0 的东西时,这意味着它们绑定到所有地址,即它们接受来自本地和远程地址的连接。

标签: thrift


【解决方案1】:

是的,当然。您应该将 Thrift 服务器与服务器计算机的 IP 绑定。

另一个解决方案是检查是否有任何防火墙规则阻止端口 9090 从外部网络访问。您应该从您的客户端计算机进行远程登录:

telnet 172.18.18.106 9090 

如果它可以连接,你就完成了。

【讨论】:

  • "你应该把你的 Thrift 服务器和你的服务器计算机的 IP 绑定。",怎么做?
  • 你需要知道你的 ipv4 是什么,然后在实例化你的 thrift 服务器时传递它.. @amarnathchatterjee
【解决方案2】:

最近我遇到了与 apache hbase.2.1.2 类似的问题。我已经设置了 hbase 并启动了 Thrift 服务器。它打开了端口 9090 和 9095。我可以在本地连接它们,但不能远程连接。由于我可以远程 telnet 两个端口,防火墙问题得到了解决。我发现问题出在超时设置中。显然,您创建的默认 TSocket 似乎在本地设置中具有非常有限的超时。但是,对于远程连接,您需要在创建 TSocket 时增加超时。

TSocket socket = new TSocket(serverHostName, port, 10000)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2011-09-19
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2016-10-27
    相关资源
    最近更新 更多