在低流量的间隔,防火墙的设置会把长时间闲置的链接关闭,导致本地节点和其它datacenter的节点之间失去联系。链接闲置超时时间一般被网络管理员设置为60分钟。
所以Cassandra在创建双中心的时候,中间传输数据会经常超时,如果你不设置系统的keepalive的话。
配置系统的keepalive,首先通过
sysctl -A | grep net.ipv4
查看系统内核参数:
net.ipv4.tcp_keepalive_time:链接闲置多久之后开始探测链接(秒),也可以理解为keepalive发送第一个请求的间隔时间。
net.ipv4.tcp_keepalive_probes:链接发送探测请求多少次之后认为链接失效
net.ipv4.tcp_keepalive_intvl:每次发送探测请求中间间隔多久(秒)
你可以使用以下命令临时更改系统内核参数(重启失效)
sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_probes=3 net.ipv4.tcp_keepalive_intvl=10
也可以编辑/etc/sysctl.conf 文件之后,使用sysctl -p 命令让配置永久生效。
这个命令把keepalive的超时时间设为了60秒,间隔10秒探测3次。这个设置可以在90s(60+10+10+10)后探测到死链接。这里不需要会产生担心额外的流量,因为这点流量是我不足道的,而且你长期保持这样的设置也应该不是问题。