クラスターに大きな問題があります。サーバーは不明な理由で切断され続け (ログには何もありません)、不明な理由でクラッシュします。クラスターのセットアップが間違っている可能性があると思います。
まずこれが最初です。私はシャーディングを理解しています。これは素晴らしい機能ですが、次のとおりです。
「シャードごとに n 個のレプリカ」?
それはどういう意味ですか?
2番目のこと。「n」台のサーバーでクラスタを構成するには? シャーディングのために 6 台のサーバーがあります (1,000 万件を超えるレコードを含むドキュメントはほとんどありません) が、クラスターを正しく構成したかどうかはわかりません。
私が書いたすべてのサーバーで:
for example (srv1.conf)
join=srv2:port
join=srv3:port
join=srv4:port
join=srv5:port
join=srv6:port
これはサーバーをクラスタに追加する正しい方法ですか?
ドキュメントには何もありません。「推奨される」クラスター構成を投稿できれば幸いです。
3 つ目はフェイルオーバーについてです。私の 6 クラスタ サーバーでは、すべてのテーブル
に 3 つのレプリカを持つ 6 つのシャードがあります。たとえば、サーバー1のアプリがダウンし、いくつかのクレイジーな書き込みがクラスター上にあると叫ぶと。他のサーバーがダウンした場合に冗長性がない場合、クラスターのポイントは何ですか?
サーバーが 1 つしかないときはアプリが常に機能していたので、誰かがこれを手伝ってくれることを本当に願っています。一部のサーバーが切断されるたびに、すべてがクラッシュします。私はnodejs rethinkdbdashを使用しています。
アップデート
たとえば、1つのテーブルに2milのレコードがあり、6つのサーバーに分散されています(私にとって、これは読み取り速度のために重要です)。「レプリカ」の意味がわかりません。すべてのテーブルはこのように構成され、シャードごとに 6 つのシャードと 3 つのレプリカが構成されます。あなたが言ったことから、一部のサーバーがダウンした場合、テーブルは読み取り可能になりますが、そうではありません(set read_mode = outdatedやアプリのクラッシュなどのことを言っています)。読み取りを行っているアプリのすべての部分を変更して、read_mode = 古いと言う方法はありません。それはただの貧弱なプログラミングです。
ログには何もありません。dmesg のすべてのサーバーには、次のものがあります。
TCP: TCP: Possible SYN flooding on port 28015. Sending cookies. Check SNMP counters.