微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。