Nodetool describecluster列出所有不可达的节点

问题描述

我正在两个公共网络上部署cassandra,当节点启动时,我可以看到所有节点都加入了环网。此外,nodetool describecluster表示所有节点都是可达的。

一段时间后,我看到节点无法彼此连接,nodetool describecluster显示了所有列表中的所有节点。

仅供参考,我使用public_ip作为broADCAST_ADDRESS和RPC_ADDRESS。监听地址是private_ip。

解决方法

发生这种情况的一个原因是,有时会将防火墙配置为查找并杀死空闲连接。 Linux内核具有默认的TCP“ keepalive”设置,可用于刷新长期运行的连接。可以使用sysctl查看这些设置的默认值:

$ sudo sysctl -a | grep keepalive
net.ipv4.tcp_keepalive_intvl = 75
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_time = 7200

为解决此问题,进行了DataStax recommends adjusting these values in production部署:

$ sudo sysctl -w \
net.ipv4.tcp_keepalive_time=60 \
net.ipv4.tcp_keepalive_probes=3 \
net.ipv4.tcp_keepalive_intvl=10

您还可以将每个这些值添加到系统的等效于/etc/sysctl.conf文件中(减去反斜杠),并通过sysctl来实现该目标:

sudo sysctl -p /etc/sysctl.conf