我按照Datastax指令在EC2上设置了一个集群 http://www.datastax.com/documentation/cassandra/2.0/cassandra/install/installAMILaunch.html 一切正常,集群已创建。
我的问题是怎么样? 实例如何相互知道IP? 最初我假设它是从元数据中读取的,但我没有在那里找到信息。
答案 0 :(得分:1)
Cassandra使用"种子节点"将节点拓扑信息传播到整个集群,包括所有节点的地址。根据{{3}},AMI设置所有种子节点。我希望AMI修改每个节点的cassandra.yaml文件来配置这些种子节点。
编辑:
它找到种子节点,因为您在创建群集时在每个节点上的cassandra.yaml文件中配置它们,或者AMI代表您执行此操作。当每个节点出现时,它会在其cassandra.yaml中查找种子节点列表,与它们联系,并提供他们所知道的所有节点的列表。换句话说,所有已联系它们的节点。当新节点加入时,存在通过集群传播,种子节点保留主列表。
答案 1 :(得分:1)
我相信我有一个答案:Reflector,一个集中式数据传输服务,通过预留ID从每个服务器和组获取请求。 一段时间后,每个人都可以查询并获取其他成员的IP。
“反射器用于跟踪正在启动的DSE / C群集中的哪些IP。反射器接收内部IP地址,公共DNS,预留ID和群集名称以跟踪群集的种子。这些数据保存到SQLite数据库。如果在5分钟不活动后发送另一个对php文件的请求,数据库将被清除并重新开始,以保持IP列表尽可能新,以避免冲突和保守你的隐私。“
对反射器的呼叫是在 https://github.com/riptano/ComboAMI/blob/2.5/ds2_configure.py#L445
答案 2 :(得分:0)
基本上,您已为其连接打开了一些tcp端口。 7000端口用于内部节点通信。 9042用于CQL本机传输。
因此,您可以在命令行中检查这些端口。他们都应该被打开。