alibaba / alibaba-rsocket-broker

Alibaba RSocket Broker: Mesh, Streaming & IoT

Home Page:https://alibroker.info

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

internet模式下broker的地址取错了?

xiaoboey opened this issue · comments

Describe the bug

我最近在测试broker server,在阿里云上部署的broker集群,开放9999端口,配置了域名。在开发机上连接broker测试服务调用,服务调用没问题,但是有异常,broker返回的地址是内网地址

Environment

  • Alibaba RSocket Broker version: 1.1.2
  • Operating System version: Linux/Windows 10
  • Java version: 17

Steps to reproduce this issue

  1. Broker Server配置: rsocket.broker.external-domain=xxx.com
  2. client配置: rsocket:.topology=internet rsocket.brokers=tls://xxx.com:9999

Expected Result

无异常

Actual Result

client可以正常启动,也可以通过broker连接其它service并正常调用,但是过一会儿后,会不断报异常。异常中的172.24.xxx.xxx是内网地址,internet模式下应该是域名或者域名绑定的IP地址。

If there is an exception, please attach the exception trace:

2022-01-13 14:59:08.228 ERROR 46092 --- [actor-tcp-nio-2] c.a.r.loadbalance.LoadBalancedRSocket    : RST-500408: RSocket reconnect failed: 12 tcp://172.24.xxx.xxx:9999

io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection timed out: no further information: /172.24.xxx.xxx:9999
Caused by: java.net.ConnectException: Connection timed out: no further information
	at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
	at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
	at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:946) ~[na:na]
	at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:710) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-common-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.72.Final.jar:4.1.72.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.72.Final.jar:4.1.72.Final]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

你可能要设置一个环境变量 RSOCKET_BROKER_EXTERNAL_DOMAIN 这样broker会给客户端推送该环境变量对应的互联网地址。 详细介绍这里: https://github.com/alibaba/alibaba-rsocket-broker/tree/master/alibaba-broker-server

设置环境变量 RSOCKET_BROKER_EXTERNAL_DOMAIN 后,部署在服务器上的服务没出现这个错误了,但是开发机(调用端)上还是偶尔会出现。