两个Cassandra DC逐渐在nodetool describecluster中变得无法访问

时间:2017-06-28 23:12:04

标签: cassandra

我建立了一个由两个DC组成的Cassandra集群,一个在美国东部,一个在美国西部。没有VPN /网关。每次重新启动整个集群时,nodetool describecluster都会报告所有正常情况,并且具有一致级别ALL的长读取工作正常。

但是,几分钟后,每个节点上的“describeculster”显示一个UNREACHABLE:[xxx.xxx,...],无法访问的集合逐渐增加,直到两个DC无法相互访问。并且读取请求在ReadTimeoutException上失败。

但是每个节点上的任何“nodetool status”运行报告所有节点Up&正常。并且ssh到节点并ping另一个DC工作正常。

增加read_request_timeout_in_ms,调整GC无法解决问题。

为什么会发生这种情况的任何想法?

casandra.yaml: listen_address:{{private_ip}} rpc_address:0.0.0.0 broadcast_rpc_address:{{public_ip}} broadcast_address:{{public_ip}}

1 个答案:

答案 0 :(得分:0)

经过几轮搜索和调整。我现在主要可以缓解这个问题。

  • GC调整。
  • 将read_request_timetout_in_ms增加到更高级别,但这只能最好地隐藏问题。
  • 这个应该是关键的一个。当流量较低时,您的基础架构提供商的防火墙设置可能会休眠空闲连接。所以保持tcp更长时间。 Per DataStax,

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

我的系统默认设置为75,9和300。 http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/troubleshooting/trblshootIdleFirewall.html

DC之间的其他调整(如setup网关和vnet2vnet vpn连接)无济于事。