Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

プライマリ フェールオーバーをテストする

注意

この機能は、 無料クラスターと Flex クラスターでは使用できません。使用できない機能の詳細については、Atlas 無料クラスターの制限 を参照してください。

Atlas は、パッチの更新、スケーリング イベント、および障害が発生した場合に、構成を変更する際にレプリカセットの選挙を実行します。 アプリケーションでは、ダウンタイムなしでレプリカセットの選挙を処理する必要があります。 回復力のあるアプリケーションを構築する方法については、「 MongoDB Atlas で回復力のあるアプリケーションを構築する 」を参照してください。

URI 接続 に retryWrites=true Atlasstringを追加することで、再試行可能な書き込みを有効にすることができます。詳細については、「再試行可能な書込み 」を参照してください。

Atlas UIとAPIを使用して、Atlas クラスター内のレプリカセットプライマリの障害をテストし、アプリケーションがレプリカセットのフェイルオーバーをどのように処理するかを確認できます。

フェイルオーバー テストを開始するには、プロジェクトに対するOrganization OwnerProject OwnerProject Cluster Manager 、またはProject Stream Processing Ownerのアクセス権が必要です。

レプリカセットプライマリの障害をテストする前に、次の条件を満たす必要があります。

  • クラスターに対するすべての保留中の変更が完了している必要があります。

  • クラスターのすべてのノードは、最新のモニタリング データを使用して正常な状態である必要があります。

  • 各レプリカセットまたはシャードには プライマリ ノードが必要です。

  • クラスターのすべてのノードのレプリケーションラグは 10 秒未満である必要があります。

  • クラスターのすべてのノードは、使用可能なディスク領域の 5% 以上が残っている必要があります。

  • すべてのプライマリ ノードの oplog には 3 時間の操作に十分なスペースが必要です。

重要

プライマリ フェイルオーバーをテストする前に、Atlas クラスターが正常であることを確認してください。 そうしないと、Atlas がリクエストを拒否する可能性があります。

プライマリ フェイルオーバーをテストするリクエストを送信すると、Atlas はフェイルオーバー イベントをシミュレートします。 このプロセス中:

  1. Atlas は現在のプライマリをシャットダウンします。

  2. レプリカセットのノードは、どのセカンダリが新しいプライマリになるかを選出するために選挙を行います。

  3. Atlas は元の プライマリ を セカンダリ としてレプリカセットに戻します。古いプライマリがレプリカセットに再参加すると、新しいプライマリと同期して、ダウンタイム中に発生したすべての書込み (write) をキャッチアップします。

次のステートメントは、ロールオーバー中とシャーディングされたクラスターでフェイルオーバーをテストする際の Atlas の動作を説明します。

  • プライマリの降格時に、元のプライマリが受け入れた書込み (write) 操作が セカンダリ に正常に複製されなかった場合、プライマリはレプリカセットに再度参加して同期を開始するときに、それらの書込み (write) 操作をロールバックします。 詳細については、「レプリカセットのフェイルオーバー中のロールバック」を参照してください。 ロールバックの解決に関するサポートについては、 MongoDB サポートにお問い合わせください。

  • シャーディングされたクラスター内のレプリカセットのプライマリと同じインスタンス上のmongosプロセスのみが再起動されます。

  • シャーディングされたクラスター内のレプリカセットのプライマリは並行して再起動されます。

Atlas CLI を使用してプロジェクト内の指定されたクラスターのフェイルオーバー テストを開始するには、次のコマンドを実行します。

atlas clusters failover <clusterName> [options]

コマンド構文とパラメータの詳細については、 Atlasクラスターのフェイルオーバー に関する Atlas CLI ドキュメントを参照してください。

フェイルオーバーAPIエンドポイントを使用して、フェイルオーバーイベントをシミュレートできます。フェイルオーバープロセスの詳細については、フェイルオーバー プロセスのテストを参照してください。

Atlas UI を使用してプライマリ フェイルオーバー テストを実行するには、次の手順に従います。

  1. Atlas で、プロジェクトの [Clusters] ページに移動します。

    1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

    2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

    3. サイドバーで、 Database見出しの下のClustersをクリックします。

      [ Clusters (クラスター) ] ページが表示されます。

  2. フェイルオーバー テストを実行するクラスターについては、 ...ボタンをクリックします。

  3. [Test Resilience] をクリックします。

  4. Test Resilienceモーダルで、Primary Failover タブをクリックします。 Atlas は、フェイルオーバーイベント をシミュレートするのに必要な手順を表示します。詳細については、「 フェイルオーバー プロセスのテスト 」を参照してください。

  5. テストを開始するには、 Restart Primaryをクリックします。 Atlas では、フェイルオーバー プロセスのシミュレート結果がTest Resilienceモーダルに表示されます。

フェイルオーバーが成功したことを確認するには、以下の手順を行います。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. サイドバーで、 Database見出しの下のClustersをクリックします。

[ Clusters (クラスター) ] ページが表示されます。

2
  1. フェイルオーバー テストを実行したクラスターの名前をクリックします。

  2. Overviewタブのノードのリストで次の変更を確認します。

    • 元のPRIMARYノードはSECONDARYノードになりました。

    • 以前のSECONDARYノードはPRIMARYノードになりました。

アプリケーションがフェイルオーバーをグレースフルに処理しない場合は、次の点を確認してください。

  • 最新バージョンのドライバーを使用しています。

  • アプリケーションに適切な再試行ロジックが実装されました。