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