Docs Menu

スタンドアロンの自己管理型 mongod のレプリカセットへの変換

スタンドアロンmongodインスタンスは、テストと開発に役立ちます。スタンドアロン インスタンスは単一障害点になる可能性があるため、本番環境への配置には適していません。レプリカセットクラスターとも呼ばれますが、これは冗長性と可用性を提供します。本番環境では常にレプリカセットを使用してください。

本番環境で使用したいデータを含むスタンドアロンサーバーがある場合は、まずスタンドアロンサーバーをレプリカセットに変換します。

重要

開発サーバーを本番用のレプリカセットに変換する場合は、クラスターをインターネットに公開する前にセキュリティ チェックリストを参照してください。

スタンドアロン サーバーからMongoDB Atlasクラスターには簡単に移行できます。 MongoDB Atlas は、MongoDB をクラウドに配置するためのフルマネージド サービスです。 To learn more, see Migrate or Import Data in the MongoDB Atlas documentation.

このチュートリアルでは次のサーバーを使用します。

Hostname
ポート
説明

mongodb0.example.net

27017

データを含む実行中のスタンドアロンMongoDB Server 。

mongodb1.example.net

27017

レプリカセットに参加する新しいMongoDB Server 。

mongodb2.example.net

27017

レプリカセットに参加する新しいMongoDB Server 。

スタンドアロン インスタンスを変換する前に、レプリカセットシャーディングされたクラスターのどちらがワークロードに適しているかを検討してください。

シャーディングされたクラスターは、特殊な種類のクラスターです。シャーディングされたクラスターは冗長性と可用性を提供し、データを複数のシャードに分散させます。シャードは通常、複数のサーバーでホストされ、水平スケーリングを可能にします。

レプリカセットで認証を使用するには、X. 509証明書またはキーファイルを使用して内部認証を実行するようにレプリカセット ノードも構成する必要があります。

詳細については、以下を参照してください。

1

mongosh を使用して既存の mongodインスタンスに 接続 します。

mongosh "mongodb://mongodb0.example.net:27017"

adminデータベースに切り替えてshutdownを実行します。

use admin
db.adminCommand(
{
shutdown: 1,
comment: "Convert to cluster"
}
)
2

各サーバー と の構成ファイルを更新して、 replSetName設定を設定します。

replication:
replSetName: "rs0"
3

レプリカセット内の各サーバーのメンバー認証を設定します。

内部ノード認証に X. 509証明書を使用するようにレプリカセットを構成します。

設定
オプション
説明

認証で使用する TLS モードを設定します。 X. 509証明書認証を必要とするようにサーバーを構成するには、このオプションをrequireTLSに設定します。

クライアント接続用の TLS 証明書を含む.pemファイルへのパスを設定します。

認証局(CA)のルート証明書チェーンを含む ファイルへのパスを設定します。

クラスター ノード接続の TLS 証明書を含む.pemファイルへのパスを設定します。

クラスター ノードを認証するために使用されるモードを設定します。 X. 509認証を使用するには、このオプションをx509に設定します。

以下に例を挙げます。

replication:
replSetName: "rs0"
security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mongodb/client.pem
CAFile: /etc/mongodb/ca.pem
clusterFile: /etc/mongodb/member.pem

内部ノード認証にキーファイルを使用するようにレプリカセットを構成します。 認証するには、各ノードが同じキーファイルのコピーを持っている必要があります。

設定
オプション
説明

レプリカセット キーファイルへのパスを設定します。

以下に例を挙げます。

replication:
replSetName: "rs0"
security:
keyFile: /etc/mongodb/keyfile

認可なしでレプリカセットを構成します。

警告

この構成は、ネットワーク経由でアクセスできない内部レプリカセットにのみ使用してください。

設定
オプション
説明

MongoDB がクライアント接続をリッスンするホスト名または IP アドレスを設定します。 サーバーへのネットワーク アクセスをブロックするには、このオプションをlocalhostに設定します。

以下に例を挙げます。

replication:
replSetName: "rs0"
net:
bindIp: localhost
4

各メンバーに対してmongodを開始します。

5

レプリカセットを初期化するには、 mongoshを使用してサーバー インスタンスに再接続します。

mongosh "mongodb://mongodb0.example.net:27017"

次に、rs.initiate() メソッドを実行します。

rs.initiate()

レプリカセットを開始する必要があるのは一度だけです。

レプリカセットの構成を表示するには、 rs.conf()を使用します。

レプリカセットのステータスを確認するには、 rs.status()を使用します。

6

新しいレプリカセットには、単一のプライマリノードがあります。次の手順では、レプリカセットに新しいノードを追加します。追加のノードを追加する前に、クラスターに関するドキュメントを確認してください。

ノードを追加するには、rs.add() メソッドを実行します。

rs.add("mongodb1.example.net:27017")
rs.add("mongodb2.example.net:27017")
7

レプリカセットが正しく構成されていることを確認するには、rs.status() メソッドを実行し、新しいノードが members フィールドに一覧表示されていることを確認します。

rs.status()
8

スタンドアロンサーバーをレプリカセットに変換した後、アプリケーションで使用される接続文字列をレプリカセットの接続文字列に更新します。

  • mongodb0.example.net:27017

  • mongodb1.example.net:27017

  • mongodb2.example.net:27017

mongodb://mongodb0.example.net:27017,mongodb1.example.net:27017,mongodb2.example.net:27017

それから、アプリケーションを再起動します。