クオラムベースの意思決定
マスターノードを選出し、クラスターの状態を変更することは、マスター候補ノードが協力して実行しなければならない2つの基本的なタスクです。これらの活動は、いくつかのノードが故障しても堅牢に機能することが重要です。Elasticsearchは、クラスター内のマスター候補ノードのサブセットであるクオラムからの応答を受け取った時点で、各アクションが成功したと見なすことで、この堅牢性を実現しています。ノードのサブセットのみが応答することを要求する利点は、いくつかのノードが故障してもクラスターが進行するのを妨げないことです。クオラムは慎重に選ばれ、クラスターが「スプリットブレイン」シナリオに陥らないようにします。これは、クラスターが2つの部分に分割され、それぞれの部分が他の部分と矛盾する決定を下す可能性がある状態です。
Elasticsearchでは、実行中のクラスターにマスター候補ノードを追加および削除できます。多くの場合、必要に応じてノードを起動または停止するだけでこれを行うことができます。詳細については、クラスター内のノードの追加と削除を参照してください。
ノードが追加または削除されると、Elasticsearchはクラスターのvoting configurationを更新することで最適な障害耐性レベルを維持します。これは、新しいマスターを選出したり、新しいクラスター状態をコミットしたりする際に、応答がカウントされるマスター候補ノードのセットです。決定は、投票構成内のノードの半数以上が応答した後にのみ行われます。通常、投票構成は現在クラスター内にあるすべてのマスター候補ノードのセットと同じです。ただし、異なる場合もあります。
クラスターが利用可能であることを確実にするために、投票構成内のノードの半数以上を同時に停止してはいけません。投票ノードの半数以上が利用可能であれば、クラスターは正常に機能し続けることができます。これは、マスター候補ノードが3つまたは4つある場合、クラスターはそのうちの1つが利用できないことを許容できることを意味します。マスター候補ノードが2つ以下の場合、すべてが利用可能でなければなりません。
投票構成内のノードの半数以上を同時に停止すると、クラスターは再びクオラムを形成するために十分なノードをオンラインに戻すまで利用できなくなります。クラスターが利用できない間、残りのノードはログにマスターノードを発見または選出できないと報告します。詳細については、発見のトラブルシューティングを参照してください。
マスター候補ノードがクラスターに参加または離脱した後、選出されたマスターは投票構成を調整するクラスター状態の更新を発行することがあります。これには短時間がかかる場合があります。この調整が完了するまで、クラスターからさらにノードを削除するのを待つことが重要です。詳細については、マスター候補ノードの削除を参照してください。
マスター選挙
Elasticsearchは、起動時および既存の選出されたマスターが失敗した場合に、選出されたマスターノードに合意するための選挙プロセスを使用します。任意のマスター候補ノードが選挙を開始でき、通常、最初に行われる選挙は成功します。選挙は、2つのノードがほぼ同時に選挙を開始する場合にのみ失敗することが多いため、各ノードで選挙をランダムにスケジュールして、この事象の確率を減らします。ノードはマスターが選出されるまで選挙を再試行し、失敗時にはバックオフするため、最終的には選挙が成功します(任意の高い確率で)。マスター選挙のスケジューリングは、マスター選挙設定によって制御されます。
クラスターのメンテナンス、ローリング再起動および移行
多くのクラスターのメンテナンスタスクは、1つまたは複数のノードを一時的にシャットダウンし、その後再起動することを含みます。デフォルトでは、Elasticsearchは、マスター候補ノードの1つがオフラインにされても利用可能なままです。これは、ローリングアップグレード中などです。さらに、複数のノードが停止し、その後再起動される場合、完全なクラスター再起動中などに自動的に回復します。この場合、ここで説明されているAPIでさらにアクションを取る必要はありません。なぜなら、マスターノードのセットは永続的に変更されないからです。