我们在美国AWS区域有3个Cassandra节点,在新加坡AWS区域有3个节点。如果我必须建立一个多数据中心,我们必须使用Ec2MultiRegionSnitch吗?或者我们可以使用GossipingPropertyFileSnitch吗?
我应该只为这两个广播地址和收听地址使用私有IP地址吗?
正如我的系统管理员告诉我的那样,我们不需要公共IP,因为私有IP应该可以互相通信。但我对此表示怀疑。有人可以对此有所了解吗?
答案 0 :(得分:2)
如果您打算将 NetworkTopologyStrategy 用于密钥空间(这使得Cassandra数据中心可识别),则没有理由不使用 Ec2MultiRegionSnitch 智能分析方法。否则,您必须手动配置拓扑,如下所示:
在EC2部署中,区域名称被视为数据中心名称,可用区域被视为数据中心内的机架。例如,如果某个节点位于us-east-1区域,则us-east为数据中心名称,1为机架位置。
因此,使用它,Cassandra将自动从instances' metadata获取该信息。
对于公共IP,您确实需要它们,因为您无法在不同区域的VPC之间建立对等关系,因此实例无法在这些VPC内相互通信。
再次,Datastax's documention说明了如何做到这一点:
在cassandra.yaml中,将listen_address设置为节点的私有IP地址,并将broadcast_address设置为节点的公共IP地址。