【问题标题】:Two Cassandra DCs become Unreachable in nodetool describecluster gradually两个 Cassandra DC 在 nodetool describecluster 中逐渐变得不可访问
【发布时间】:2017-06-28 23:12:04
【问题描述】:

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

然而,几分钟后,每个节点上的“describeculster”显示一个UNREACHABLE: [xxx.xxx, ...],unreachable set逐渐增加,直到两个DC互不可达。并且读取请求在 ReadTimeoutException 上失败。

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

增加read_request_timeout_in_ms,调GC并不能解决问题。

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

casandra.yaml: 监听地址:{{private_ip}} rpc_address:0.0.0.0 广播rpc_address:{{public_ip}} 广播地址:{{public_ip}}

【问题讨论】:

  • 日志中有错误吗?
  • 没有错误。仅警告 jmx 端口未打开。并且在启动时说 gc pause 大于 Cassandra-env.sh 中的 jvm 设置,但没有将节点标记为关闭。然后所有日志都清理干净。我想我需要打开更多日志。你能推荐一些我应该尝试的东西吗?
  • 最后这一行 system.log 将我引向这个问题stackoverflow.com/questions/42477913/… 和我自己的答案:INFO [SharedPool-Worker-4] 2017-06-30 16:33:27,772 Message.java: 536 - 请求期间出现意外异常;频道 = [id: 0x4c8011ee, L:/10.2.1.100:9042 ! R:/167.220.0.104:57169] io.netty.channel.unix.Errors$NativeIoException: readAddress() failed: Connection timed out at io.netty.channel.unix.Errors.newIOException(Errors.java:117) ~[ netty-all-4.0.44.Final.jar:4.0.44.Final]

标签: cassandra


【解决方案1】:

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

  • GC 调整。
  • 将 read_request_timetout_in_ms 增加到更高的级别,但这最多只能隐藏问题。
  • 这个应该是关键的。当流量较低时,您的基础设施提供商的防火墙设置可能会休眠空闲连接。所以保持 tcp 的存活时间更长。根据 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 之间的 vnet2vnet vpn 连接没有帮助。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2021-02-23
    • 1970-01-01
    • 2019-01-12
    • 2018-06-20
    • 1970-01-01
    • 2017-05-19
    • 2015-06-03
    • 2020-02-17
    相关资源
    最近更新 更多