注意
この機能はM10 以上のクラスターで使用できます。無料クラスターで使用できる機能の詳細については、「 Atlas 無料クラスターの制限 」を参照してください。Flex クラスターの場合は、「 Atlas Flex 制限 」を参照してください。
アプリケーションは、ダウンタイムなしで プライマリ の変更を処理する必要があります。
Atlas Core クラスターの場合:
Atlas Infinite クラスターの場合:
ストレージレイヤーは、コンピューティング ノード間の選挙ではなくフェイルオーバー。スタンバイ コンピューティングノードは、 oplog replay またはコールド スタートがない場合に、プライマリノードになります。
プライマリノードは、オペレーティング システムや VM のメンテナンス、垂直スケールアップまたはダウン、 MongoDB のバージョンのアップグレード、および障害中に変更される可能性があります。
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 は現在のプライマリをシャットダウンします。
レプリカセットのノードは、どのセカンダリが新しいプライマリになるかを選出するために選挙を行います。平均して、選挙には約5秒かかります。
Atlas は元の プライマリ を セカンダリ としてレプリカセットに戻します。古いプライマリがレプリカセットに再参加すると、新しいプライマリと同期して、ダウンタイム中に発生したすべての書込み (write) をキャッチアップします。
次のステートメントは、ロールオーバー中とシャーディングされたクラスターでフェイルオーバーをテストする際の Atlas の動作を説明します。
Atlas Core クラスターでは、元のプライマリが降格する前に、セカンダリに正常に複製されない書込み (write) 操作を受け入れた可能性があります。そのプライマリがレプリカセットに再参加して同期を開始すると、レプリケートされていない書込みはロールバックされます。詳細については、「 Atlas のフェイルオーバー中のロールバック 」を参照してください。
Atlas Infinite クラスターでは、ロールバックは発生しません。ストレージレイヤーは書込み (write) 操作をコミットするため、以前のプライマリノードには元に戻す対象の複製されていない書込み (write) はありません。
シャーディングされたクラスター内のレプリカセットのプライマリと同じインスタンス上の
mongosプロセスのみが再起動されます。シャーディングされたクラスター内のレプリカセットのプライマリは並行して再起動されます。
Atlas CLI を使用してプロジェクト内の指定されたクラスターのフェイルオーバー テストを開始するには、次のコマンドを実行します。
atlas clusters failover <clusterName> [options]
コマンド構文とパラメータの詳細については、 Atlasクラスターのフェイルオーバー に関する Atlas CLI ドキュメントを参照してください。
フェイルオーバーAPIエンドポイントを使用して、フェイルオーバー イベントをシミュレートできます。 フェイルオーバー プロセスの詳細については、「フェイルオーバー プロセスのテスト 」を参照してください。
Atlas UI を使用してプライマリ フェイルオーバー テストを実行するには、次の手順に従います。
Atlas で、プロジェクトの [Clusters] ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
フェイルオーバー テストを実行するクラスターについては、 ...ボタンをクリックします。
[Test Resilience] をクリックします。
Test Resilienceモーダルで、 Primary Failoverタブをクリックします。 Atlas には、フェイルオーバー イベントをシミュレートするのに必要な手順が表示されます。 詳細については、「フェイルオーバー プロセスのテスト 」を参照してください。
テストを開始するには、 Restart Primaryをクリックします。 Atlas では、フェイルオーバー プロセスのシミュレート結果がTest Resilienceモーダルに表示されます。
フェイルオーバーの確認
フェイルオーバーが成功したことを確認するには、以下の手順を行います。
Atlas で、プロジェクトの Clusters ページに移動します。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
サイドバーで、 Database見出しの下のClustersをクリックします。
[ Clusters (クラスター) ] ページが表示されます。
フェイルオーバーの問題のトラブルシューティング
アプリケーションがフェイルオーバーをグレースフルに処理しない場合は、次の点を確認してください。
最新バージョンのドライバーを使用しています。
アプリケーションに適切な再試行ロジックが実装されました。