假设我们在GCE上有一个3节点(linux) Cassandra3.7集群(可能与EC2相同)。VM知道自己的内网IP,也有公网IP。
节点按照doc: multiple network interfaces进行配置,简而言之,listen_address使用内网IP,broadcast_address使用公网ip,种子使用公网ip。
根据上面的文档,"Cassandra在建立连接后切换到内网IP。“但这种情况没有发生,tcpdump显示到端口7000的流量的一端始终是公有IP。在cassandra-rackdc.properties上使用"prefer_local=true“只会使客户端尝试连接到失败的内网IP。
所有这一切都是有效的,客户端连接,节点相互查看,但节点之间的通信是通过它们的公共IP进行的。我们希望客户端连接到公网IP,从协调器获取作为联系人(端点)的公网IP列表,但协调器通过内网IP转发请求。这能做到吗(没有iptables之类的东西)?
发布于 2016-07-14 23:47:23
初步测试显示以下场景可以工作:
1)
listen_address: private
broadcast_address: public
rpc_address: private
broadcast_rpc_address: public
seeds: public
nodetool status shows public.
2)
listen_address: private
broadcast_address: private (or comment out)
rpc_address: private
broadcast_rpc_address: public
seeds: private
nodetool status shows private
some few data between nodes on port 7000 go through public.
https://stackoverflow.com/questions/38354854
复制相似问题