編集済み 3 数か月前 によって ExtremeHow 編集チーム
設定レプリカセットリナックスモンゴDBデータベースセットアップ開発可用性の高いクラスター同期
翻訳が更新されました 3 数か月前
MongoDBレプリカセットを作成することは、MongoDBに依存するアプリケーションにおいて高可用性とデータ冗長性を確保するための重要な部分です。このガイドでは、LinuxベースのシステムでMongoDBレプリカセットを構成する方法を詳しく説明します。この説明は、レプリカセットとは何か、前提条件、インストール、構成、テストなど、複数のトピックにわたって展開されます。この詳細なガイドでは、シンプルな英語でスクラッチからレプリカセットをセットアップするために知っておくべきすべてのことをカバーしています。
技術的な構成に入る前に、MongoDBレプリカセットが何であるかを理解することが重要です。MongoDBのレプリカセットは、同じデータセットを維持するMongoDBデータベースノードのグループであり、データ冗長性と高可用性を提供します。典型的なレプリカセットは、少なくとも3つのMongoDBインスタンス(ノード)で構成されます。
レプリカセットはシームレスなフェイルオーバーを可能にし、プライマリノードがダウンした場合でも、セカンダリのどれかがプライマリに昇格され、最小限の中断でアプリケーションを継続して実行できます。
MongoDBレプリカセットをセットアップするには、以下の前提条件が必要です。
最初のステップは、すべてのLinuxマシンにMongoDBをインストールすることです。Linuxディストリビューションによってインストールコマンドは異なる場合があります。
Ubuntuの場合(aptを使用):
sudo apt update
sudo apt install -y mongodb
CentOSの場合(yumを使用):
sudo yum install -y mongodb-org
各マシンでMongoDBが実行されていることを確認します:
sudo systemctl start mongod
sudo systemctl enable mongod
MongoDBが各ノードにインストールされて実行されたら、それぞれのインスタンスをレプリカセットの一部として構成する必要があります。お気に入りのテキストエディタで通常/etc/mongod.conf
にあるMongoDB構成ファイルを編集します。
replication:
で始まる行を見つけ、replSetName
を設定します。レプリカセット内のすべてのノードで名前が同じであることを確認してください。次のようにセクションを追加または修正します:
replication:
replSetName: "myReplicaSet"
ファイルを保存して閉じます。その後、すべてのノードで変更を適用するためにMongoDBサービスを再起動します:
sudo systemctl restart mongod
MongoDBインスタンスが構成されたら、プライマリとして指定したいサーバーに行きます。
MongoDBシェルを実行します:
mongo
MongoDBシェルで、次のコマンドを使用してレプリカセットを初期化します:
rs.initiate()
上記のコマンドは、プライマリサーバー上のレプリカセットを初期化します。
レプリカセットが初期化されたら、rs.add()
コマンドを使用して他のノード(セカンダリ、およびオプションでアービター)をレプリカセットに追加できます。
たとえば、セカンダリノードを追加するには:
rs.add("hostname2:27017")
hostname2:27017
をセカンダリノードの実際のアドレスとポートに置き換えてください。
追加のセカンダリノードがある場合は、プロセスを繰り返します:
rs.add("hostname3:27017")
アービターノードを追加したい場合:
rs.addArb("hostname4:27017")
次のコマンドを使用してレプリカセットの状態を確認します:
rs.status()
このコマンドは、レプリカセット内の各ノードの状態を詳しく示すレポートを提供します。各ノードが予想される状態(プライマリ、セカンダリ、アービター)にあることを確認してください。
レプリカセットが構成された後、その機能性をテストして、失敗時に正しく動作することを確認することが重要です。ここでは、実行できるいくつかのテストを紹介します。
現在のプライマリノードのMongoDBサービスを停止します:
sudo systemctl stop mongod
いずれかのセカンダリノードでレプリカセットの状態を確認します:
mongo
その後、MongoDBシェル内で実行します:
rs.status()
現在のプライマリノードを停止すると、セカンダリノードの1つが新しいプライマリノードになります。元のプライマリノードでMongoDBを再起動し、それがセカンダリノードとして再度ジョインされたことを確認します。
新しいプライマリノードが選択されると、それにデータを挿入し、そのデータがセカンダリノードにレプリケートされるかどうかを確認します。
use testDB
db.testCollection.insert({"name": "Replication Test"})
その後、次のコマンドを実行して、セカンダリノードのいずれかにデータが存在するかどうかを確認します:
rs.slaveOk()
db.testCollection.find()
アービターがある場合は、意図的にノードを停止し、アービターが新しいプライマリの選出に役立つかどうかを確認して、その機能をテストできます。
セカンダリMongoDBサービスの1つを停止・再起動します:
rs.status()
アービターが存在し、投票が必要なときに適切な役割を果たしていることを確認します。
問題はネットワーク構成が不適切なために発生することがよくあります。すべてのノードが互いに通信できること、およびすべてのファイアウォールがポート27017(またはMongoDBが使用するポート)での通信を許可するように構成されていることを確認してください。
認証が有効になっている場合、レプリカセット内のノードが互いに認証できるようにする適切なユーザーロールと資格情報を作成することを確認してください。
MongoDBの読み取りおよび書き込みの懸念レベルがどのように機能するかを理解し、特にレプリカセットのシナリオでアプリケーションのニーズに合わせて構成できるようにします。
LinuxシステムでのMongoDBレプリカセットの構成は、高可用性と信頼性を求めるアプリケーションにとって重要です。この包括的なガイドに従うことで、それぞれのステップの重要性を認識しながらレプリカセットを効果的に設定することができるはずです。レプリカセットを実行することで、データが複数のノードにレプリケートされるようになり、データベースシステムがよりフォールトトレラントになり、実世界のアプリケーションの需要に対応できるようになります。
常にMongoDBレプリカセットのヘルスとパフォーマンスを監視し、アプリケーション要求の変化に応じて構成を調整することを覚えておいてください。適切なセットアップとメンテナンスを行うことで、MongoDBレプリカセットは、ミッションクリティカルなアプリケーションに対して堅牢なデータベースソリューションを提供できます。
記事の内容に誤りがある場合, あなたは