Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单节点Cassandra群集的限制是什么?_Java_Docker_Cassandra_Opscenter_Nosql - Fatal编程技术网

Java 单节点Cassandra群集的限制是什么?

Java 单节点Cassandra群集的限制是什么?,java,docker,cassandra,opscenter,nosql,Java,Docker,Cassandra,Opscenter,Nosql,我正在用卡桑德拉和奥普施特做实验。在Opscenterd的日志文件中,我找到了这一行 2015-07-29 16:10:16+0000[]错误:调用CreateClusterConfController时出现问题(SingleNodeProvisioningError):由于单节点群集的限制,OpsCenter将无法与Datastax代理通信,除非列出 cassandra.yaml中的en_地址/广播_地址设置为172.17.42.1。继续之前,请确保这些匹配 因为我在不同的Docker容器中部

我正在用卡桑德拉和奥普施特做实验。在Opscenterd的日志文件中,我找到了这一行

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

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

问题1:一个节点集群的具体限制是什么

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

谢谢

问题1:一个节点集群的限制是什么

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

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

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


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

这是Opscenter限制吗?因为卡桑德拉过去只有一个地址(收听和广播是一样的)。Opscenter还没有适应最新的Cassandra吗?谢谢arre,在
address中设置
local\u address
。yaml
成功了。