英文:
Aeron basic pub/sub pair connects on same host, fails across hosts
问题
以下是翻译好的内容:
我正在运行来自 https://github.com/real-logic/aeron 的 BasicPublisher/BasicSubscriber 配对,将它们绑定到相同的组播组+端口。当它们在同一台主机上运行时,它们可以连接,但当它们在不同的主机上运行时(相同的交换机+子网+VLAN),发布者报告说:“Offer failed because publisher is not connected to subscriber”(提供失败,因为发布者未连接到订阅者)。以下是我的配置:
AERON 配对:
java -Daeron.sample.channel="aeron:udp?endpoint=225.10.9.7:4050" \
-Daeron.sample.embeddedMediaDriver=true \
-cp ./aeron-all/build/libs/aeron-all-1.29.1-SNAPSHOT.jar \
io.aeron.samples.BasicPublisher
java -Daeron.sample.channel="aeron:udp?endpoint=225.10.9.7:4050" \
-Daeron.sample.embeddedMediaDriver=true \
-cp ./aeron-all/build/libs/aeron-all-1.29.1-SNAPSHOT.jar \
io.aeron.samples.BasicSubscriber
我在同一台主机上运行了一个绑定到相同组+端口的 iperf udp 配对,我认为这证明了交换机没有阻止组播流量。我希望只是我错误地使用了 Aeron;或者可能有一些其他的网络问题我可以检查?
IPERF 配对:
iperf -c 225.10.9.7 -p 4050 -u -T 32 -t 300 -I 1 -b 1G
[ 3] 46.0-47.0 秒 128 MBytes 1.07 Gbits/sec
…
iperf -s -u -B 225.10.9.7 -p 4050 -I 1 -b 1G
[ 3] 45.0-46.0 秒 128 MBytes 1.07 Gbits/sec 0.001 ms 35/91304 (0.038%)
…
Java: java-1.8.0-openjdk.x86_64
操作系统: Centos7 3.10.0-514.26.2.el7.x86_64
英文:
I am running the BasicPublisher/BasicSubscriber pair from https://github.com/real-logic/aeron binding them to the same multicast group+port. When they run on the same host they connect, but when they run on separate hosts (same switch+subnet+vlan) the publisher reports "Offer failed because publisher is not connected to subscriber”. Here are my configurations:
AERON PAIR:
java -Daeron.sample.channel="aeron:udp?endpoint=225.10.9.7:4050" \
-Daeron.sample.embeddedMediaDriver=true \
-cp ./aeron-all/build/libs/aeron-all-1.29.1-SNAPSHOT.jar \
io.aeron.samples.BasicPublisher
java -Daeron.sample.channel="aeron:udp?endpoint=225.10.9.7:4050" \
-Daeron.sample.embeddedMediaDriver=true \
-cp ./aeron-all/build/libs/aeron-all-1.29.1-SNAPSHOT.jar \
io.aeron.samples.BasicSubscriber
I ran an iperf udp pair on the same hosts binding to the same group+port, which I think proves that the switch is not blocking the multicast traffic. My hope is that I’m just using Aeron incorrectly; or perhaps there's some other networking issue I can check?
IPERF PAiR:
iperf -c 225.10.9.7 -p 4050 -u -T 32 -t 300 -I 1 -b 1G
[ 3] 46.0-47.0 sec 128 MBytes 1.07 Gbits/sec
…
iperf -s -u -B 225.10.9.7 -p 4050 -I 1 -b 1G
[ 3] 45.0-46.0 sec 128 MBytes 1.07 Gbits/sec 0.001 ms 35/91304 (0.038%)
…
Java: java-1.8.0-openjdk.x86_64
OS: Centos7 3.10.0-514.26.2.el7.x86_64
答案1
得分: 3
使用组播端点时,在某些操作系统进行远程操作时还需要提供接口。接口可以具有掩码,以简化子网上所有机器的配置。例如:
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.4
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.0/24
链接:https://github.com/real-logic/aeron/wiki/Channel-Configuration
英文:
When using multicast endpoints it is also necessary to provide the interface for some operating systems when going remote. The interface can have a mask to simplify configuration for all machines on a subnet. For example:
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.4
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.0/24
https://github.com/real-logic/aeron/wiki/Channel-Configuration
答案2
得分: 1
我遇到了类似的问题,通过添加一个 ttl 配置选项来解决,类似于以下内容:
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.4|ttl=16
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.0/24|ttl=16
英文:
I had a similar issue and it was fixed by adding a ttl config option something like this
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.4|ttl=16
aeron:udp?endpoint=224.0.1.1:40456|interface=192.168.1.0/24|ttl=16
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论