我正在寻找一些帮助来设置多数据中心cassandra集群。我目前的设置是MySQL主/从,MySQL通过远程数据中心的公共IP复制到灾难恢复中心,并通过私有IP与主数据中心的从站进行通信。当VPN进入网络时,我可以通过公共IP连接到任何数据库,这对于测试/故障排除很好,而app服务器通过私有IP连接到数据库。
通过Cassandra,灾难恢复中心将成为第二个数据中心。我希望得到关于如何配置每个数据中心的建议。我对listen_address和broadcast_address有点困惑。目前,cassandra.yaml文件中的种子是公共IP,其他所有内容都是私有IP,这适用于应用服务器。如果rpc_address配置了私有IP或公共IP,则只接受该地址上的连接。如果rpc_address是0.0.0.0,则通过两者接受连接,但是在我的测试中,导致故障转移失败。我有一个运行的java程序,它插入一行并在循环中读回来。如果rpc_address是特定地址,我可以停止节点并继续执行程序(复制因子为2用于测试)。如果rpc_address是0.0.0.0,则程序会发生爆炸,因为即使在Cluster()构造函数中指定了两个节点地址,它也无法连接到集群。
所以,在长期领先的情况下,我的问题是:
建议的配置是节点通过专用IP与给定数据中心相互通信,还通过公共IP与其他数据中心进行通信。似乎EC2 Multi snitch实现了这一点,但我们并没有在亚马逊的云上,因此代码似乎特别针对亚马逊。
对于开发和调试,开发人员可以将VPN连接到我们的网络并通过公共IP连接并让应用服务器连接到私有IP吗?这适用于rpc_address为0.0.0.0但是故障转移不起作用,考虑到cassandra.yaml文件中的警告注释,这并非意外。
我真的很感激帮助。
谢谢, 格雷格