Docs Menu

自己管理型レプリカセットへのアービタの追加

状況によっては(プライマリとセカンダリがあるものの、コストの制約により別のセカンダリを追加できない場合など)、レプリカセットに mongod インスタンスを選挙で投票するアービタとして追加することを選択できます。

アービターは、mongod インスタンスであり、レプリカセットの一部ですが、データを保持しません(つまり、データの冗長性を提供しません)。しかし、選挙に参加することはできます。

アービタには最小限のリソース要件があり、専用のハードウェアは必要ありません。アービターは、アプリケーション サーバーまたは監視ホストに配置できます。

重要

replica setのプライマリ メンバーまたはセカンダリ メンバーもホストするシステムでは、アービターを実行しないでください。

警告

レプリカセットに複数のアービタを配置しないでください。「複数のアービタに関する懸念事項」を参照してください。

既存のレプリカセットにアービタを追加するには、次のようにします。

アービタを使用して新しいレプリカセットを開始する前に、クラスター全体の書込み保証 (write concern) を変更する必要はありません。

Tip

以下も参照してください。

アービタ季刊 Rapid Releaseではサポートされません。配置にアービタが含まれている場合は、 LTS リリースのみを使用します。

3 ノードのプライマリセカンダリアービタ(PSA)アーキテクチャを使用している場合は、次の点を考慮してください。

アービタはデータを保存しませんが、アービタの mongod プロセスがレプリカセットに追加されるまで、アービタは他の mongod プロセスと同様に動作し、データ ファイルのセットとフルサイズのジャーナルを使用して起動します。

警告

インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

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

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

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

警告

MongDB 5.0 以降、IP アドレスのみが設定されているスプリット ホライゾン DNS ノードは起動時の検証に失敗し、エラーを報告します。disableSplitHorizonIPCheck を参照してください。

たとえば、次の 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 アドレスのみが設定されているノードは起動時の検証に失敗し、起動しません。

警告

レプリカセットに複数のアービタを配置しないでください。「複数のアービタに関する懸念事項」を参照してください。

既存のレプリカセットにアービタを追加するには、次のようにします。

アービタを使用して新しいレプリカセットを開始する前に、クラスター全体の書込み保証 (write concern) を変更する必要はありません。

Tip

以下も参照してください。

重要

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

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

  1. アービタに対するデータディレクトリ(例: storage.dbPath)を作成します。mongod インスタンスは、構成データ用にディレクトリを使用します。ディレクトリにはデータセットは保存されません。たとえば、/var/lib/mongodb/arb ディレクトリを作成します。

    mkdir /var/lib/mongodb/arb
  2. データ ディレクトリと、参加するレプリカセットの名前を指定して、アービタを起動します。以下は、/var/lib/mongodb/arbdbPath として使用し、rs をレプリカセット名として使用してアービタを起動します。

    警告

    インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

    mongod --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  3. プライマリに接続し、アービタをレプリカセットに追加します。次の例のように、rs.addArb() メソッドを使用します。この例では、m1.example.net はアービタの指定された IP アドレスに関連付けられたホスト名であると想定しています。

    rs.addArb("m1.example.net:27017")

    この操作は、m1.example.net ホストのポート 27017 で実行されているアービタを追加します。