使用具有指定 IP 地址和 OpsCenter 社区的 Cassandra CCM 的问题

Posted

技术标签:

【中文标题】使用具有指定 IP 地址和 OpsCenter 社区的 Cassandra CCM 的问题【英文标题】:Issues using Cassandra CCM with specified IP addresses plus OpsCenter Community 【发布时间】:2013-10-30 06:47:58 【问题描述】:

我可以很好地使用标准的自动配置版本与环回

ccm create local-cluster -v 1.2.10 -n 3

当我尝试使用真实 IP 地址以便可以连接到 VM 之外的集群时,事情变得很不稳定。这是我跑的:

ccm create local-cluster -v 1.2.10
ccm add --itf 192.168.1.20 --jmx-port 7100 -b -s -r 2000 node1
ccm add --itf 192.168.1.21 --jmx-port 7200 -b -r 2001 node2
ccm add --itf 192.168.1.22 --jmx-port 7300 -b -r 2002 node3
ccm node1 start
ccm node2 start
ccm node3 start
ccm node1 status

问题 1) 我不能使用“ccm start”。它超时。如果我独立启动每个节点,它就可以工作 问题 2) 节点不平衡 .21 拥有 87.6%,而其他两个各拥有 6.2%。另外我认为种子不正确,但是如果我在添加时尝试查看每个节点,那么我无法启动集群,因为它抱怨找不到种子节点,所以我只能在第一个使用 -s 问题 3) OpsCenter 一段时间后显示第一个,然后三个节点中的两个不可用,尽管“ccm node1 status”node2、node3 都显示它们正常且正常 问题 4) 我能够手动配置 OpsCenter 代理并进行一些摆弄,但是直到我输入“local_interface”之后它们才起作用,因此广播地址有问题。即使在看到所有代理之后,OpsCenter 仍然表现得很奇怪,抱怨节点关闭并且没有在所有图表中显示数据。使用 ccm 压力,我能够看到 i/o 和 cpu 负载,但看不到集群读取和写入,而不是延迟。以下是我配置代理的方式:

cd /usr/share/opscenter

mkdir ~/opsagent1
tar -C ~/opsagent1 -xzf agent.tar.gz
mkdir ~/opsagent2
tar -C ~/opsagent2 -xzf agent.tar.gz
mkdir ~/opsagent3
tar -C ~/opsagent3 -xzf agent.tar.gz

cd ~/opsagent1/agent
bin/setup 192.168.1.22
echo '
agent_rpc_interface: 192.168.1.20
jmx_host: 192.168.1.20
jmx_port: 7100
local_interface: 192.168.1.20
' >> conf/address.yaml
bin/opscenter-agent

cd ~/opsagent2/agent
bin/setup 192.168.1.22
echo '
agent_rpc_interface: 192.168.1.21
jmx_host: 192.168.1.21
jmx_port: 7200
local_interface: 192.168.1.21
' >> conf/address.yaml
bin/opscenter-agent

cd ~/opsagent3/agent
bin/setup 192.168.1.22
echo '
agent_rpc_interface: 192.168.1.22
jmx_host: 192.168.1.22
jmx_port: 7300
local_interface: 192.168.1.22
' >> conf/address.yaml
bin/opscenter-agent

【问题讨论】:

【参考方案1】:

您还应该在每个代理配置文件中添加以下内容:

stomp_interface:OpsCenter 用于 stomp 的 IP

除非你设置它,否则它默认为 127.0.0.1,或者它可以找出正确的 IP。如果您有多个 IP,它可能不会使用您指定的 IP。所以我会在 opscenterd.conf 中添加这个部分来手动设置它:

[stomp]
port = 61619
interface = 192.168.1.22

另外,如果你要手动添加它们,你希望它们都是种子。当您使用填充时,它会将它们全部设置为种子:https://github.com/pcmanus/ccm/blob/master/ccmlib/cluster.py#L156。

【讨论】:

我已经在 CCM 使用的 127.0.0.x 默认 IP 上轻松完成了所有这些工作,但具体问题是如何让它与其他 IP 地址一起使用。我无法从 VM 外部连接到环回 IP,因此我需要分配真实 IP。 bin/setup 调用设置了 stomp_interface IP,以便该部分正常。 根据您的回复和最新编辑更新上述答案。基本上,您传递给设置脚本的内容需要与 OpsCenter 认为的 IP 相匹配。如果您在多 IP 机器上,您可以帮助它选择它应该拥有的 IP。 @Peter Halliday 尝试使您对第 3 方帖子的编辑更加实质性。在您拥有编辑权限之前,您的所有编辑都要经过审核系统,这意味着有几个人必须花时间检查编辑,所以做这样的小改动是不好的。

以上是关于使用具有指定 IP 地址和 OpsCenter 社区的 Cassandra CCM 的问题的主要内容,如果未能解决你的问题,请参考以下文章

DHCP的理解

如何在 java.net.URLConnection 上指定本地地址?

Python 匹配具有指定异常的正则表达式

dig常用命令解释

dig命令

dig 命令