单节点Cassandra集群的局限性是什么?

我正在试验Cassandra和Opscenter。 在Opscenterd的日志文件中,我find了这一行

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

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

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

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

谢谢

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

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

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

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

尝试将address.yaml中的172.17.42.1设置为172.17.42.1 ,这应该可以做到。