我们有3个节点Cassandra集群。 2个节点在EU(种子)中,1个节点在US中。有时我们遇到网络问题 - 欧盟和美国的节点之间的 ping丢失。网络问题后的影响是美国节点上缺少某些数据。我们需要手动启动nodetool repair
来修复损失。是否有人可以建议我如何处理这种情况?
以下是我们的密钥空间创建:
CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '2', 'dc2': '1'} AND durable_writes = false;
dc1
- 欧盟服务器 - 2个节点
dc2
- 美国服务器 - 1个节点
答案 0 :(得分:0)
我们通过自动化cassandra修复解决了类似的问题。
我们从cassandra操作机器运行一个cron作业(一台不属于集群的机器,但我们可以从中运行指向正在考虑的集群的nodetool命令)。
cron作业每隔午夜运行一次nodetool修复。它每天都会进行增量修复,除非每个月的第1天进行全面修复。您可以根据自己的需要决定时间表。
我没有看到任何其他解决方案。当节点面临最基本的问题时,你可以做些什么 - ping丢失。
您还可以做的是重新考虑拥有多区域群集的决定。尝试考虑使用多区域(节点位于不同的物理位置但位于区域内)群集。
答案 1 :(得分:0)
我们的问题似乎在$(function () {
var counter = 0,
divs = $('#div1, #div2, #div3');
function showDiv () {
divs.hide() // hide all divs
.filter(function (index) { return index == counter % 3; }) // figure out correct div to show
.show('fast'); // and show it
counter++;
}; // function to loop through divs and show correct div
showDiv(); // show first div
setInterval(function () {
showDiv(); // show next div
}, 10 * 1000); // do this every 10 seconds
});
。我们的表格如下:
gc_grace_seconds
似乎如果USA节点为DOWN,则default_time_to_live = 7200
gc_grace_seconds = 60
期间数据无法同步。我们尝试将gc_grace_seconds
的值增加到7200,并且似乎当USA节点为UP时,数据是同步的。