Cassandra 2.0多区域节点

时间:2014-04-25 06:25:34

标签: amazon-ec2 cassandra-2.0

我们正在尝试在ec2上设置多区域cassandra集群。我们的配置看起来像

我们各有5个节点 - 东 - 1a,我们 - 东 - 1b,我们 - 东 - 1c,我们 - 西 - 1a。为此,我们修改了cassandra-rackdc.properties文件。

使用GossipingPropertyFileSnitch和相应修改的cassandra.yaml文件

我们在cassandra.yaml文件中使用所有20个公共ips进行种子配置

我们已经注释掉了listen_address和rpc_address属性,因此cassandra默认使用InetAddress.getLocalHost()

我们已取消注释广播地址以使用公共IP

我们修改了代理address.yaml文件,使用公共IP地址作为属性stomp_interface和local_interface

我们一个接一个地启动节点,中间停顿3分钟。

问题:

  1. 使用opscenter时。它仅显示群集中的一个节点

  2. 'nodetool status'命令也只显示一个节点

  3. 使用cql语句时,它会显示所有对等

  4. 我们在做什么错误?

1 个答案:

答案 0 :(得分:4)

我正在做类似概念验证的事情。我有一个工作的2区域集群。通过阅读你的问题,我做了不同的事情:

  1. 我使用了Ec2MultiRegionSnitch,它用于处理EC2中的公共和私有IP。在AWS中,实例Elastic IP is not bound to the interface会导致群集通信出现问题。
  2. 在cassandra.yaml中,我将listen_address作为私有IP。
  3. 另外,将rpc_address设置为0.0.0.0
  4. 取消注释broadcast_address并将其设置为公共IP(就像你一样)。
  5. 我在cassandra-rackdc.properties文件中设置了dc_suffix,并且取消注释了prefer_local = true(在该区域内,Cassandra更愿意使用私有IP)。
  6. 我打开了Cassandra的安全组,以便t​​cp端口7000和7001可以在两个不同区域的节点之间进行通信。 Opscenter使用端口61620和61621。
  7. 所有节点都具有相同的群集名称。
  8. 种子IP设置为公共IP。我并没有将所有节点都用作种子,不建议这样做。
  9. 首先启动种子,然后是其他节点。
  10. 这提供了一个工作集群。现在,我正在开展区域之间的ssl node-to-node通信。