单节点 Cassandra 集群有什么限制?
What is the limitation with one-node Cassandra cluster?
我正在试验 Cassandra 和 Opscenter。在 Opscenterd 的日志文件中,我找到了这一行
2015-07-29 16:10:16+0000 [] ERROR: Problem while calling CreateClusterConfController (SingleNodeProvisioningError): Due to a limitation with one-node clusters, OpsCenter will not be able to communicate with the Datastax Agent unless list
en_address/broadcast_address in cassandra.yaml are set to 172.17.42.1. Please ensure these match before continuing.
因为我在不同的 Docker 容器中部署了 Cassandra 和 Opscenter,所以我必须将 listen_address
设置为容器的内部 IP(因为位于容器中的 Cassandra 对其主机一无所知)和 broadcast_address
到相应主机的网桥 IP。如果您在单独网关后面的机器上部署 Cassandra(例如 AWS EC2,其中每个实例都有一个私有 IP 和一个 public IP),这是正常设置。
问题一:单节点集群的局限性是什么?
问题 2:在这种情况下,我应该如何解决这个问题?
谢谢
Question 1: What exactly is the limitation with one-node cluster?
OpsCenter(通过底层 python 驱动程序)正在从 Cassandra 的 system
table(即 system.peers
和 system.local
)读取集群信息,其中大部分信息来自 system.peers
,包括每个节点的广播接口。
但是,table 不包含有关节点本身的信息,仅包含有关其对等节点的信息。当没有对等点时,就无法从 Cassandra 本身获取广播地址,这就是 OpsCenter 用来将实际 Cassandra 实例绑定到内部表示的方法。在这种情况下,OpsCenter 使用您指定的任何地址作为种子(172.17.42.1
此处),当代理使用不同的 IP 报告时(他们通过 JMX 获取 Cassandra 的广播地址),OpsCenter 将丢弃这些消息。
Question 2: How should I workaround the problem in this case?
尝试将 address.yaml
中的 local_address
设置为 172.17.42.1
,这应该可以解决问题。
我正在试验 Cassandra 和 Opscenter。在 Opscenterd 的日志文件中,我找到了这一行
2015-07-29 16:10:16+0000 [] ERROR: Problem while calling CreateClusterConfController (SingleNodeProvisioningError): Due to a limitation with one-node clusters, OpsCenter will not be able to communicate with the Datastax Agent unless list en_address/broadcast_address in cassandra.yaml are set to 172.17.42.1. Please ensure these match before continuing.
因为我在不同的 Docker 容器中部署了 Cassandra 和 Opscenter,所以我必须将 listen_address
设置为容器的内部 IP(因为位于容器中的 Cassandra 对其主机一无所知)和 broadcast_address
到相应主机的网桥 IP。如果您在单独网关后面的机器上部署 Cassandra(例如 AWS EC2,其中每个实例都有一个私有 IP 和一个 public IP),这是正常设置。
问题一:单节点集群的局限性是什么?
问题 2:在这种情况下,我应该如何解决这个问题?
谢谢
Question 1: What exactly is the limitation with one-node cluster?
OpsCenter(通过底层 python 驱动程序)正在从 Cassandra 的 system
table(即 system.peers
和 system.local
)读取集群信息,其中大部分信息来自 system.peers
,包括每个节点的广播接口。
但是,table 不包含有关节点本身的信息,仅包含有关其对等节点的信息。当没有对等点时,就无法从 Cassandra 本身获取广播地址,这就是 OpsCenter 用来将实际 Cassandra 实例绑定到内部表示的方法。在这种情况下,OpsCenter 使用您指定的任何地址作为种子(172.17.42.1
此处),当代理使用不同的 IP 报告时(他们通过 JMX 获取 Cassandra 的广播地址),OpsCenter 将丢弃这些消息。
Question 2: How should I workaround the problem in this case?
尝试将 address.yaml
中的 local_address
设置为 172.17.42.1
,这应该可以解决问题。