テストおよび開発には、スタンドアロンのmongodインスタンスを使用してください。スタンドアロン インスタンスは単一障害点になる可能性があるため、本番環境への配置には適していません。レプリカセットは、冗長性と可用性を提供します。本番環境では常にレプリカセットを使用してください。
本番環境で使用したいデータを含むスタンドアロンサーバーがある場合は、まずスタンドアロンサーバーをレプリカセットに変換します。
重要
If you convert a development server to a replica set for production use, consult the security checklist first. Do this before you expose your cluster to the Internet.
You can migrate from a standalone server to a MongoDB Atlas cluster. MongoDB Atlas is the fully managed service for MongoDB deployments in the cloud. To learn more, see Migrate or Import Data in the MongoDB Atlas documentation.
このタスクについて
サーバー アーキテクチャ
このチュートリアルでは次のサーバーを使用します。
Hostname | ポート | 説明 |
|---|---|---|
|
| データを含む実行中のスタンドアロンMongoDB Server 。 |
|
| レプリカセットに参加する新しいMongoDB Server 。 |
|
| レプリカセットに参加する新しいMongoDB Server 。 |
始める前に
クラスター タイプ
スタンドアロン インスタンスを変換する前に、レプリカセットとシャーディングされたクラスターのどちらがワークロードに適しているかを検討してください。
シャーディングされたクラスターは、データを複数のサーバーでホストされることが多いシャードに分散させることで、冗長性と可用性を提供し、水平スケーリングを可能にします。
承認
レプリカセットで認証を使用するには、X. 509証明書またはキーファイルを使用して内部認証を実行するようにレプリカセット ノードも構成する必要があります。
詳細については、以下を参照してください。
手順
スタンドアロン インスタンスをシャットダウンします。
Use mongosh to connect to your existing mongod instance:
mongosh "mongodb://mongodb0.example.net:27017"
adminデータベースに切り替えてshutdownを実行します。
use admin db.adminCommand( { shutdown: 1, comment: "Convert to replica set" } )
shutdown コマンドを実行すると、サーバーは次の例のようなメッセージで応答します。
MongoNetworkError: connection <connection number> to <host>:<port> closed
メンバー認証の設定
レプリカセット内の各サーバーのメンバー認証を設定します。
内部ノード認証に X. 509証明書を使用するようにレプリカセットを構成します。
設定 | オプション | 説明 |
|---|---|---|
認証で使用する TLS モードを設定します。 X. 509証明書認証を必要とするようにサーバーを構成するには、このオプションを | ||
クライアント接続用の TLS 証明書を含む | ||
認証局(CA)のルート証明書チェーンを含む ファイルへのパスを設定します。 | ||
クラスター ノード接続の TLS 証明書を含む | ||
クラスター ノードを認証するために使用されるモードを設定します。 X. 509認証を使用するには、このオプションを |
以下に例を挙げます。
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 アドレスを設定します。 サーバーへのネットワーク アクセスをブロックするには、このオプションを |
以下に例を挙げます。
replication: replSetName: "rs0" net: bindIp: localhost
MongoDB を起動する
各メンバーに対してmongodを開始します。
レプリカセットを初期化します。
レプリカセットを初期化するには、 mongoshを使用してサーバー インスタンスに再接続します。
mongosh "mongodb://mongodb0.example.net:27017"
次に、rs.initiate() メソッドを実行します。
rs.initiate()
レプリカセットを開始する必要があるのは一度だけです。
レプリカセットの構成を表示するには、 rs.conf()を使用します。
レプリカセットのステータスを確認するには、 rs.status()を使用します。
レプリカセットにノードを追加します。
新しいレプリカセットには、単一のプライマリノードがあります。追加のノードを追加する前に、クラスターに関するドキュメントを確認してください。
ノードを追加するには、rs.add() メソッドを実行します。
rs.add("mongodb1.example.net:27017") rs.add("mongodb2.example.net:27017")
レプリケーションステータスを確認します。
レプリカセットが正しく構成されていることを確認するには、rs.status() メソッドを実行し、新しいノードが members フィールドに一覧表示されていることを確認します。
rs.status()
アプリケーションの接続文字列を更新します。
スタンドアロンサーバーをレプリカセットに変換した後、アプリケーションで使用される接続文字列をレプリカセットの接続文字列に更新します。
mongodb0.example.net:27017mongodb1.example.net:27017mongodb2.example.net:27017
mongodb://mongodb0.example.net:27017,mongodb1.example.net:27017,mongodb2.example.net:27017
それから、アプリケーションを再起動します。