在NAT环境中配置Cassandra部署

时间:2018-06-14 14:23:11

标签: amazon-ec2 cassandra datastax-enterprise

以下是一个部署方案,其中在DC边界之间存在NAT,以下是要求:

Cassandra版本:2.1.13

  1. 有2个DC,跨DC的两个Cassandra节点(dc1:node1& dc2:node3)应使用公共IP跨NAT边界进行通信。
  2. NAT后面的一个DC有两个Cassandra节点(dc1:node1和dc1:node2),它们都应该使用私有IP在NAT内通信。
  3. 所有这三个节点(dc1:node1,dc1:node2& dc2:node3)应形成一个环并相互通信。
  4. 查看种子,listen_address,broadcast_address& broadcast_rpc_address。 https://docs.datastax.com/en/cassandra/2.1/cassandra/configuration/configCassandra_yaml_r.html

    如果在broadcast_address和种子中使用了公共IP,则在DC& NAT通信正常工作,但NAT内的节点无法互相检测。

    如果在broadcast_address和种子中使用私有IP,则在DC& NAT通信工作,但DC和DC之间的节点。 NAT无法互相检测。

    查看Ec2MultiRegionSnitch,但这不适用于前提部署:https://docs.datastax.com/en/cassandra/2.1/cassandra/architecture/architectureSnitchEC2MultiRegion_c.html#architectureSnitchEC2MultiRegion_c__other-settings

    要达到3项以上要求需要哪些配置设置?

2 个答案:

答案 0 :(得分:3)

使用gossiping属性文件snitch,将public ip设置为broadcast_address,将private ip设置为listen_address。如果在其他DC中,他们将在相同的DC和广播地址中使用listen_address。

答案 1 :(得分:0)

使用种子=公共地址,listen_address =私有和broadcast_address =公共进行的设置。 在所有3个节点上进行以下设置:

  • dc1:node1和dc2:node3有效,但
  • dc1:node1和dc1:node2没有

是因为种子在NAT后面的DC内具有公共地址可能不起作用吗?

检查在dc1:node1上侦听的一项观察,列出了专用IP:

node1# netstat -anp | grep -E "(7001)" 
tcp 0 0 dc1:node1_privateIP:7001 0.0.0.0:* LISTEN 9999/java 

dc1:node2可以与dc1:node1_publicIP建立连接吗? 这个https://issues.apache.org/jira/browse/CASSANDRA-9748是这里相关的还是仅适用于多个NICS而不是NAT环境?