我的集群有很大的问题。服务器因未知原因不断断开连接(日志中没有任何内容)并因未知原因而崩溃。我想我可能有集群设置错误。
首先,这是第一个,我了解分片,这是一个很棒的功能,但有哪些:
“每个分片有 n 个副本”?
那是什么意思?
第二件事。如何使用“n”台服务器配置集群?由于分片,我有 6 台服务器(我很少有超过 1000 万条记录的文档),但我不确定我是否正确配置了集群。
在我写的每台服务器上:
for example (srv1.conf)
join=srv2:port
join=srv3:port
join=srv4:port
join=srv5:port
join=srv6:port
这是将服务器添加到集群的正确方法吗?
文档中没有任何内容,如果您可以发布一些“推荐”集群配置,那就太好了。
第三件事是关于故障转移。在我的 6 个集群服务器中,所有表都有 6 个
分片和三个副本。一旦我大声喊叫,例如服务器 1 应用程序出现故障,并且一些疯狂的写入正在集群上。如果其他服务器出现故障,如果我没有一些冗余,那么集群的意义何在?
我真的希望有人可以帮助我,因为当我只有一台服务器时,我的应用程序一直在工作。现在,每次某些服务器断开连接时,一切都会崩溃。我正在使用 nodejs rethinkdbdash。
更新
我知道分片是什么,例如,一张表有 200 万条记录,它们分布在 6 台服务器上(对我来说这很重要,因为读取速度)。我不明白什么是“复制品”。每个表都是这样配置的,6 个分片,每个分片 3 个副本。从您所说的来看,这意味着如果某些服务器出现故障,表将可供读取,但事实并非如此(例如 set read_mode=outdated and app crash)。我无法更改正在读取的应用程序的每个部分并说 read_mode= 已过时。那只是糟糕的编程。
日志中没有任何内容。在 dmesg 的每台服务器上,我都有这个:
TCP: TCP: Possible SYN flooding on port 28015. Sending cookies. Check SNMP counters.