跨多个数据中心的 Cassandra 节点网络

跨多个数据中心的 Cassandra 节点网络

对于多数据中心 Cassandra 集群部署,我是否需要每个节点的公共 IP?假设我的架构如下:

Datacenter US
Node1: 
eth0 =162.63.93.45 (public ip)
eth1= 192.168.56.101(private ip)

Node2: 
eth0= 192.168.56.102(private ip)

Node3: 
eth0= 192.168.56.103(private ip)

Node4: 
eth0= 192.168.56.104(private ip)

Datacenter EU
Node1: 
eth0 =180.98.100.87 (public ip)
eth1= 192.168.56.101(private ip)

Node2: 
eth0= 192.168.56.102(private ip)

Node3: 
eth0= 192.168.56.103(private ip)

Node4: 
eth0= 192.168.56.104(private ip)

现在我的问题是,是否可以在这种类型的架构上设置 Cassandra 集群?或者我需要每个节点都有公共 IP 接口?

答案1

当您设置多数据中心 Cassandra 集群时,其中一个要求是所有数据中心的所有节点都可以相互通信。我没有所有必需的信息,但据我所知,您在两个数据中心使用相同的私有子网,因此会出现问题,因为它们存在冲突。

当涉及到数据中心之间的计算机通信时,公共地址不是必需的,这很昂贵(至少对于 IPv4 而言)并且可能很危险,因为您的计算机地址可以直接从互联网访问(好吧,IPv6 将使您的所有计算机都可以直接访问:)。

因此现在您有几种可能性:

  • 将其中一个更改为站点计算机的私有 IP 地址,并使子网可以通信(使用跨 DC VPN 或网关上设置的路由)
  • 向您的服务器添加一个新的特定接口,以允许它们进行通信(再次使用 VPN 或网络上的路由规则)。或者使用 IPv6 地址也可能是一种解决方案,但请确保您的 cassandra 版本足够新以支持这一点。

您还需要listen_address相应地配置 cassandra 参数

相关内容