【发布时间】:2012-12-12 14:37:14
【问题描述】:
我正在尝试在同一区域和安全组中的两台 EC2 机器上设置一个双节点 Cassandra 集群。每台机器运行一个 cassandra 实例。我已经更改了 cassandra.yaml 文件以将这两个文件添加到同一个集群中。但我不能这样做。这些是我制作的 cassandra.yaml 文件中更改的配置选项。这两台机器都属于 us-east DC。 (我也可以互相ping通,仅供参考)。我正在使用 Apache Cassandra 1.1.6 版。
EC2 机器 1: listen_address - 这台机器的私有 ip。 rpc_address - 0.0.0.0 种子 - EC2 机器 1 的私有 IP。 endpoint_snitch - Ec2Snitch(我也尝试过 SimpleSnitch 和 Ec2MultiRegionSnitch) initial_token - 令牌生成器工具为两个节点生成的第一个令牌。我为这个 cassandra 实例做了一个 nodetool 移动到这个令牌。
EC2 机器 2: listen_address - 这台机器的私有 ip rpc_address - 0.0.0.0 种子 - EC2 机器 1 的私有 IP endpoint_snitch - Ec2Snitch(我也尝试过 SimpleSnitch 和 Ec2MultiRegionSnitch) initial_token - 令牌生成器工具为两个节点生成的第二个令牌。我为这个 cassandra 实例做了一个 nodetool 移动到这个令牌。
这些设置应在重启实例时自动将两个 cassandra 实例添加到同一个环中。但是当我运行 nodetool -h localhost ring 命令时,两台机器都在自己的集群中运行,而不是在同一个集群中。
我在这里的配置中有什么遗漏吗?
【问题讨论】:
-
您是否打开了两台机器之间的防火墙以进行 Cassandra 通信?
-
是的,我已经打开了防火墙。它们属于同一个安全组。
-
两个 yaml 文件中的集群名称是否相同?
-
是的,集群名称也一样。默认的“测试集群”。
-
将两个实例放在同一个安全组下是不够的 - AWS 策略是拒绝组成员内部通信,除非隐式指定。确保此 SG 允许来自该 SG 的到 Casandra 端口的传入连接。
标签: amazon-web-services amazon-ec2 cassandra