首页 > 解决方案 > 使用中国数据中心 (CGF) 扩展 Cassandra 集群

问题描述

我需要用一个新的数据中心来扩展我的集群,以便在中国大陆,在防火墙后面。目前我在美国和欧洲有数据中心——所以集群已经符合地理位置方案的要求。

至此,我已经为 Cassandra 准备好了中国的基础设施,但过去几天的网络统计数据有点麻烦,我有点害怕:这是否会影响我当前的集群,以及如何影响新的数据中心功能?

我对此的实际问题是:

欢迎任何建议或意见,谢谢!

标签: cassandracassandra-3.0

解决方案


Cassandra 如何在复制过程中处理大量丢包?(有时高达 40%)

通常丢包会引起大量的读修复。在某些情况下,它可能会导致请求失败,具体取决于复制因素和一致性。此外,准备好进行非常昂贵的维修,这将创建大量微小的 SSTables 和大量的 IO。

我建议对开发需求进行测试,以查看系统中的实际行为。有很多工具可以模拟不良网络。

当两个数据中心之间的网络连接非常糟糕(只有几千位/秒和上述延迟)几个小时时,它如何影响集群?中国的dc会被认为死了吗?还是 Cassandra 仍会尝试使用有限的带宽?这会对非中国数据中心造成任何问题吗?

这在很大程度上取决于您运行的一致性级别/复制因子的糟糕程度和程度。在某些情况下,它只会在集群之间造成相当高的延迟。但是,如果连接足够糟糕,节点将开始将另一个标记为关闭 - 那么您正在查看所有数据中心中的问题。您现有的数据中心将因请求超时而产生性能问题。这反过来会导致请求在内存中保留更长时间,从而导致 GC。(它也可能在您的其他集群中导致许多其他问题)

可以调整和微调故障检测器的灵敏度阈值以适合您的用例。phi_convict_threshold 是一个可以降低节点被标记为关闭的可能性的设置。您可以在此处找到更多相关信息。如果您发现由于无响应而没有标记节点的最佳位置,您可以让 Cassandra 充分利用它所需要处理的东西。

是否有可能以某种方式强制执行,只有我的一个非中国数据中心与中国数据中心通信?还是我应该相信 Cassandra 会处理这个问题?(尽量避免可能损害我所有的数据中心)

实际上并没有办法告诉 Cassandra 限制与哪些数据中心对话。您有点卡在复制因子中包含的数据中心之间的通信。

有什么方法可以加快初始数据复制(nodetool 重建),因为以目前的速度复制我们当前的数据需要数周时间。

我建议不要使用 sstableloader 的解决方案,因为它的功能与重建非常相似,并且需要快照才能运行。如果网络是导致速度慢的原因,那么改变流媒体的方式不会有太大的不同。

在我看来,首先要做的是测量系统的瓶颈在哪里。如果慢速网络确实是瓶颈,则可以同时添加更多节点以从更多来源进行流式传输,但最终您仍然会受到慢速网络连接的阻碍。


推荐阅读