执行Cassandra-Stress压测命令出现警告,请求技术排查
首先先拆解你遇到的警告信息:
WARN 18:28:41,488 您在联系点中列出了localhost/0:0:0:0:0:0:0:1:9042,但启动时在控制主机的system.peers中未找到该节点;已连接到集群:Test Cluster,每个连接的最大挂起请求数128,每个主机的最大连接数8...
这个警告的核心逻辑其实很好理解:system.peers是Cassandra专门用来存储集群中其他节点元数据的表,在单节点集群环境下,这个表本来就是空的——因为没有其他节点可以记录。所以工具会提示找不到你指定的localhost(IPv6格式的::1)节点,但后面的"已连接到集群:Test Cluster"已经明确说明连接其实是成功的,压测完全可以正常执行。
下面分场景给你具体的处理方案:
情况1:单节点Cassandra集群
如果你的环境是单节点,这个警告完全可以忽略——它只是工具的一个冗余提示,不会影响压测的执行结果,你可以放心继续你的压测任务。
情况2:想要彻底消除这个警告
如果你看着这个警告不舒服,或者是多节点集群下出现这个问题,可以试试以下方法:
方法1:在压测命令中指定IPv4地址
修改你的cassandra-stress命令,通过-node参数明确指定IPv4格式的本地地址,避免工具默认解析到IPv6:
./cassandra-stress user profile=/home/cass/apache-cassandra-3.11.2/tools/stress_test.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" -node 127.0.0.1
方法2:调整Cassandra的配置文件
打开Cassandra安装目录下的conf/cassandra.yaml文件,做以下修改:
- 找到
listen_address,设置为127.0.0.1(单节点环境); - 找到
rpc_address,同样设置为127.0.0.1; - 保存配置后,重启Cassandra服务,再重新执行压测命令。
这样配置后,Cassandra会优先使用IPv4地址,工具就不会再去查找IPv6的节点了。
方法3:多节点集群下的排查
如果是多节点集群出现这个警告,说明节点之间的集群同步有问题:
- 登录任意节点,执行
nodetool status,检查所有节点是否都处于UN(Up/Normal)状态; - 确认每个节点的
cassandra.yaml中seed_provider配置的种子节点列表包含所有集群节点的正确地址; - 检查节点之间的防火墙规则,确保9042(CQL端口)、7000(Gossip通信端口)是开放的。
执行完以上操作后,重新运行压测命令,警告应该就会消失了。
内容的提问来源于stack exchange,提问作者Vishal Sharma

