プライマリ フェールオーバーをテストする
注意
この機能は M0
Free クラスター、M2
、M5
クラスターでは使用できません。 利用できない機能の詳細については、「 Atlas M0 (無料クラスター)、M2 、および M5 の制限 」を参照してください。
Atlas は、パッチ更新、スケーリング イベント、障害が発生した場合など、構成変更を行った場合にレプリカセット選挙を実行します。 アプリケーションでは、ダウンタイムなしでレプリカセットの選挙を処理する必要があります。 回復力のあるアプリケーションを構築する方法については、「 MongoDB Atlas で回復力のあるアプリケーションを構築する 」を参照してください。
URI 接続 に retryWrites=true Atlasstringを追加することで、再試行可能な書き込みを有効にすることができます。詳細については、「再試行可能な書込み 」を参照してください。
Atlas UI と APIを使用して、Atlas クラスター内のレプリカセットプライマリの障害をテストし、アプリケーションがレプリカセットのフェイルオーバーをどのように処理するかを確認できます。
必要なアクセス権
フェイルオーバー テストを開始するには、プロジェクトに対するOrganization Owner
、 Project Owner
、 Project Cluster Manager
、またはProject Stream Processing Owner
のアクセス権が必要です。
前提条件
レプリカセットプライマリの障害をテストする前に、次の条件を満たす必要があります。
クラスターに対するすべての保留中の変更が完了している必要があります。
クラスターのすべてのノードは、最新のモニタリング データを使用して正常な状態である必要があります。
各レプリカセットまたはシャードには プライマリ ノードが必要です。
クラスターのすべてのノードのレプリケーションラグは 10 秒未満である必要があります。
クラスターのすべてのノードは、使用可能なディスク領域の 5% 以上が残っている必要があります。
すべてのプライマリ ノードの oplog には 3 時間の操作に十分なスペースが必要です。
プライマリ フェイルオーバー プロセスのテスト
重要
プライマリ フェイルオーバーをテストする前に、Atlas クラスターが正常であることを確認してください。 そうしないと、Atlas がリクエストを拒否する可能性があります。
プライマリ フェイルオーバーをテストするリクエストを送信すると、Atlas はフェイルオーバー イベントをシミュレートします。 このプロセス中:
Atlas は現在のプライマリをシャットダウンします。
レプリカセットのノードは、どのセカンダリが新しいプライマリになるかを選出するために選挙を行います。
Atlas は元の プライマリ を セカンダリ として レプリカセット に戻します。古いプライマリがレプリカセットに再参加すると、新しいプライマリと同期して、ダウンタイム中に発生したすべての書込み (write) をキャッチアップします。
次のステートメントは、ロールオーバー中とシャーディングされたクラスターでフェイルオーバーをテストする際の Atlas の動作を説明します。
プライマリの降格時に、元のプライマリが受け入れた書込み (write) 操作が セカンダリ に正常に複製されなかった場合、プライマリはレプリカセットに再度参加して同期を開始するときに、それらの書込み (write) 操作をロールバックします。 詳細については、「レプリカセットのフェイルオーバー中のロールバック」を参照してください。 ロールバックの解決に関するサポートについては、 MongoDB サポートにお問い合わせください。
シャーディングされたクラスター内のレプリカセットのプライマリと同じインスタンス上の
mongos
プロセスのみが再起動されます。シャーディングされたクラスター内のレプリカセットのプライマリは並行して再起動されます。
Atlas CLI を使用してプロジェクト内の指定されたクラスターのフェイルオーバー テストを開始するには、次のコマンドを実行します。
atlas clusters failover <clusterName> [options]
コマンド構文とパラメータの詳細については、 Atlasクラスターのフェイルオーバー に関する Atlas CLI ドキュメントを参照してください。
フェイルオーバーAPIエンドポイントを使用して、フェイルオーバー イベントをシミュレートできます。 フェイルオーバー プロセスの詳細については、「フェイルオーバー プロセスのテスト 」を参照してください。
Atlas UI を使用してプライマリ フェイルオーバー テストを実行するには、次の手順に従います。
Atlasで、プロジェクトのGo Clusters{0 ページに します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ Clusters (クラスター) ] ページが表示されます。
フェイルオーバー テストを実行するクラスターについては、 ...ボタンをクリックします。
[Test Resilience] をクリックします。
Test Resilienceモーダルで、 Primary Failoverタブをクリックします。 Atlas には、フェイルオーバー イベントをシミュレートするのに必要な手順が表示されます。 詳細については、「フェイルオーバー プロセスのテスト 」を参照してください。
テストを開始するには、 Restart Primaryをクリックします。 Atlas では、フェイルオーバー プロセスのシミュレート結果がTest Resilienceモーダルに表示されます。
フェイルオーバーの確認
フェイルオーバーが成功したことを確認するには、以下の手順を行います。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ Clusters (クラスター) ] ページが表示されます。
フェイルオーバーの問題のトラブルシューティング
アプリケーションがフェイルオーバーをグレースフルに処理しない場合は、次の点を確認してください。
最新バージョンのドライバーを使用しています。
アプリケーションに適切な再試行ロジックが実装されました。