Docker Swarm 网络 Cassandra 数据中心设置始终期望主机网络

问题描述

问题:

使用 Docker Swarm 设置多数据中心。本地 DC 的每个 Docker Swarm 都以 1/1+2 模式运行 cassandra 实例。数据中心之间存在密码连接。

种子节点是 DC-1:Node1,DC-2:Node1 (1+1) geo。 DC-1:Node1,DC-1:Node3,DC-2:Node1,DC-2:Node3 地理集群1+2模式...

为了发现节点,通过使用 cassandra 存储端口构建 DC 节点之间的拓扑结构总是期望桥接或主机网络。它不适用于具有 PORT 转发方法的 OVERLAY 网络(它适用于具有本地网络而不是跨 GEO 站点的同一 DC)。

它期望是主机/桥接网络,否则抛出异常如下图

DEBUG [MessagingService-Outgoing-site-cassandra-A/15.29.8.10-Gossip] 2020-12-04 09:49:11,325 
OutboundTcpConnection.java:546 - Unable to connect to site-cassandra-B/15.29.8.10
java.net.ConnectException: Connection refused
at sun.nio.ch.Net.connect0(Native Method) ~[na:1.8.0_262]
at sun.nio.ch.Net.connect(Net.java:454) ~[na:1.8.0_262]
at sun.nio.ch.Net.connect(Net.java:446) ~[na:1.8.0_262]
at sun.nio.ch.socketChannelImpl.connect(SocketChannelImpl.java:645) ~[na:1.8.0_262]
at org.apache.cassandra.net.OutboundTcpConnectionPool.newSocket(OutboundTcpConnectionPool.java:146) ~ 
[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.net.OutboundTcpConnectionPool.newSocket(OutboundTcpConnectionPool.java:132) ~ 
[apache-cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.net.OutboundTcpConnection.connect(OutboundTcpConnection.java:434) [apache- 
cassandra-3.11.4.jar:3.11.4]
at org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:262) [apache- 
cassandra-3.11.4.jar:3.11.4]
`

解决方法

在我们在地理站点之间设置桥接网络后,它能够发现并且 nodetool 状态显示了两个具有适当 cassandra 实例的 DC,并且它们的复制配置了 % 值。

 I would like to kNow the reason of why cassandra is forcing to have
 bridge or host based network why not with overlay base port forwarding
 approach?

谢谢 苏雷什佩鲁马尔

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)