Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型レプリカセットへのノードの追加

項目一覧

  • Overview
  • 要件
  • 手順

このチュートリアルでは、既存のレプリカセットにメンバーを追加する方法について説明します。 レプリケーション配置パターンの背景については、「レプリカセット配置のアーキテクチャ」ドキュメントを参照してください。

レプリカセットには最大 7 つの投票ノードを含めることができます。すでに 7 つの投票ノードがあるレプリカセットにノードを追加するには、非投票ノードとして追加するか、 existing memberから投票権を削除する必要があります。

本番配置では、ノードのプロセスを管理する init スクリプトを設定できます。

これらの手順を使用して、既存のレプリカセットに新しいノードを追加できます。

警告

各レプリカセット ノードの帰属先レプリカセットは 1 つのみにする必要があります。レプリカセット ノードは複数のレプリカセットに属することはできません。

これらの手順を使用して、削除されたノードを再度追加することができます。

削除されたノード上のデータが比較的新しい場合、ノードは復元され、他のレプリカセットと同期されます。

重要

スタンドアロン モードの間は、削除されたノード上に新しい複製コレクションを作成することは避けます。スタンドアロン ノードがレプリカセットに再び追加されると、新しいコレクションに対するその後の操作でエラーが発生します。

既存のメンバーのバックアップまたはスナップショットがある場合は、データファイル(例えば、 dbPathディレクトリ)を新しいシステムに移動し、それらを使用して新しいノードをすばやく開始できます。ファイルは次の条件を満たす必要があります。

  • 同じレプリカセットのノードからのデータファイルの有効なコピー。 詳細については、 「ファイルシステム スナップショットを使用した自己管理型配置のバックアップと復元」ドキュメントを参照してください。

    重要

    Always use filesystem snapshots to create a copy of a member of the existing replica set. 新しいレプリカセット ノードをシードするには、 と を使用 mongodumpしないでください mongorestore

  • プライマリのoplog内の最も古い操作よりも新しい操作。新しいノードは、プライマリの oplog から操作を適用して、最新の状態になることができる必要があります。

警告

非ローカルホスト(例: (一般にアクセス可能な)IP アドレスを使用して、クラスターを不正アクセスから保護していることを確認します。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

MongoDB バイナリ(mongodmongos)は、デフォルトで localhost にバインドされます。バイナリに net.ipv6 構成ファイルや --ipv6 コマンド ライン オプションが設定されている場合、バイナリはローカルホストの IPv6 アドレスに追加でバインドされます。

デフォルトでは、localhost にバインドされている mongodmongos は、同じコンピューター上で実行中のクライアントによる接続のみを受け入れます。このバインディング動作には、mongosh や、レプリカセットやシャーディングされたクラスターのノードなどが含まれます。リモート クライアントは、ローカルホストのみにバインドされているバイナリには接続できません。

デフォルトのバインドをオーバーライドして、他の IP アドレスにバインドするには、net.bindIp 構成ファイル設定や --bind_ip コマンド ライン オプションを使用して、ホスト名または IP アドレスのリストを指定します。

警告

たとえば、次の mongod インスタンスは、IP アドレス 198.51.100.1 に関連付けられているローカルホストとホスト名 My-Example-Associated-Hostname の両方にバインドします。

mongod --bind_ip localhost,My-Example-Associated-Hostname

このインスタンスに接続するには、リモート クライアントはホスト名またはそれに関連付けられた IP アドレス198.51.100.1を指定する必要があります。

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

重要

IP アドレスの変更による構成の更新を防ぐには、IP アドレスの代わりに DNS ホスト名を使用します。レプリカセット ノードまたはシャーディングされたクラスター ノードを設定するときは、IP アドレスではなく DNS ホスト名を使用することが特に重要です。

分裂されたネットワーク ホライズン全体でクラスターを構成するには、IP アドレスの代わりにホスト名を使用します。 MongoDB 5.0以降、IP アドレスのみが設定されているノードは起動時の検証に失敗し、起動しません。

  1. アクティブなレプリカセット。

  2. データセットをサポートできる新しい MongoDB システムで、アクティブなレプリカセットからネットワーク経由でアクセスできます。

それ以外の場合は、MongoDB 「インストール チュートリアル」 と 「自己管理型レプリカセットの配置」 チュートリアルを使用してください。

既存のレプリカセットに新しいノードを追加する前に、次のいずれかの戦略を使用して新しいノードのデータディレクトリを準備します。

レプリケーション配置パターンの背景については、「レプリカセット配置のアーキテクチャ」ドキュメントを参照してください。

重要

IP アドレスの変更による構成の更新を防ぐには、IP アドレスの代わりに DNS ホスト名を使用します。レプリカセット ノードまたはシャーディングされたクラスター ノードを設定するときは、IP アドレスではなく DNS ホスト名を使用することが特に重要です。

分裂されたネットワーク ホライズン全体でクラスターを構成するには、IP アドレスの代わりにホスト名を使用します。 MongoDB 5.0以降、IP アドレスのみが設定されているノードは起動時の検証に失敗し、起動しません。

  1. 新しいmongodインスタンスを起動します。データディレクトリとレプリカセット名を指定します。次の例えでは、 /srv/mongodb/db0データディレクトリとrs0レプリカセットを指定します。

    mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)>

    警告

    非ローカルホスト(例: (一般にアクセス可能な)IP アドレスを使用して、クラスターを不正アクセスから保護していることを確認します。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

    設定オプションの詳細については、 mongodマニュアル ページを参照してください。

    注意

    任意

    mongod.conf構成ファイルでデータディレクトリ、レプリカセット名、および IP バインディングを指定し、次のコマンドでmongodを起動できます。

    mongod --config /etc/mongod.conf
  2. レプリカセットのプライマリに接続します。

    ノードの追加は、プライマリーに接続している間のみ可能です。どのノードがプライマリであるかわからない場合は、レプリカセットの任意のノードにログインして、 db.hello()コマンドを発行します。

  3. rs.add()を使用して、レプリカセットに新しいノードを追加します。member configuration documentメソッドに渡します。たとえば、ホストmongodb3.example.netにノードを追加するには、次のコマンドを発行します。

    rs.add( { host: "mongodb3.example.net:27017" } )

    警告

    MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。MongoDB バージョン 5.0 より前のバージョンを実行中で、 votespriorityの設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを選出できない状況が発生する可能性があります。このような状況を回避するには、最初にpriority :0votes :0を使用して新しいセカンダリを追加することを検討してください。次に、 rs.status()を実行して、ノードがSECONDARY状態に移行したことを確認します。最後に、 rs.reconfig()を使用して優先順位と投票をアップデートします。

戻る

レプリカセットへの変換