单节点Cassandra集群有什么限制?

时间:2015-07-29 16:20:02

标签: java docker cassandra opscenter nosql

我正在尝试使用Cassandra和Opscenter。在Opscenterd的日志文件中,我找到了这一行

  

2015-07-29 16:10:16 + 0000 []错误:调用CreateClusterConfController时出现问题(SingleNodeProvisioningError):由于单节点群集的限制,OpsCenter将无法与Datastax Agent通信,除非列表   cassandra.yaml中的en_address / broadcast_address设置为172.17.42.1。请在继续之前确保这些匹配。

因为我在不同的Docker容器中部署了Cassandra和Opscenter,所以我必须将listen_address设置为容器的内部IP(因为坐在容器中的Cassandra对其主机一无所知)和broadcast_address到相应主机的网桥IP。如果您在单独网关后面的计算机上部署Cassandra(例如AWS EC2,其中每个实例都有私有IP和公共IP),这是正常的设置。

问题1 :单节点群集的限制究竟是什么?

问题2 :在这种情况下,我该如何解决问题?

由于

1 个答案:

答案 0 :(得分:2)

  

问题1:单节点集群的限制究竟是什么?

OpsCenter(通过底层python驱动程序)正在从Cassandra的system表(即system.peerssystem.local)中读取集群信息,其中大部分信息来自system.peers ,包括每个节点的广播接口。

但是,该表不包含有关节点本身的信息,仅包含有关其节点的信息。当没有对等体时,无法从Cassandra本身获取广播地址,这就是OpsCenter用来将实际的Cassandra实例与内部表示相关联的方法。在这种情况下,OpsCenter使用您指定的任何地址作为种子(此处为172.17.42.1),当代理使用不同的IP报告时(他们通过JMX获取Cassandra的广播地址),OpsCenter将丢弃这些消息。

  

问题2:在这种情况下,我该如何解决问题?

尝试将local_address中的address.yaml设置为172.17.42.1,这应该可以解决问题。