方法:エラスティックコンテナーサービスでのDockerized MongoDBレプリケーション


10

Node.jsアプリと、AWS ECSで実行されているMongoDBデータベースがあります。現在取得しているセットアップは、2つのELBと2つのインスタンスで構成されており、それぞれがDockerコンテナーとそれに割り当てられたサービス(node / mongo)を実行しています。

Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB

ここで入手できるMongoDBの公式Dockerイメージを実行しています:https : //registry.hub.docker.com/_/mongo/

DockerとECSを使用してMongoDBのreplicaSetをデプロイするにはどうすればよいですか?各レプリカは異なるインスタンスで実行されていますか?

回答:


2

データベースをドッキングしないでください。Dockerコンテナは一時的なものであり、データを保持するものではありません。これはデータベースには適していません。

特に、MongoDBクラスターをドッキングしないでください。レプリカセットのセットアップは非常にステートフルで複雑です。多くのコマンドを順番に、一度だけ実行する必要があります。コマンドを見逃した場合、またはノードがオフになった場合、クラスター全体がデッドロックする可能性があり、最初からやり直す必要があります。

Dockerには、アプリケーションの動作に関する独自の考え方があります。Docker内でそれを機能させるのは本当に難しいでしょう。

3つのレプリカを持つクラスターが必要な場合は、3つのAWSインスタンスを取得し、インスタンスにMongoDBをセットアップする必要があります。mongodb setting up a replica set on <OS>Googleで検索すると、最新のチュートリアルが表示されます。


2

FireCampが行います。FireCampは、MongoDBレプリカセットをAWS ECSに非常に簡単にデプロイできます。1)cloudformationテンプレートを使用してECSクラスターをデプロイします。2)MongoDBレプリカセットを単一のコマンドでデプロイします。詳細については、FireCampインストールwikiを確認 してください。

セキュリティのため、別のECSクラスターでNode.jsアプリを実行することをお勧めします。MongoDBを実行するEC2インスタンスを外部に公開しないでください。

Node.jsアプリがMongoDBレプリカセットにアクセスするためにElastic Load Balancerは必要ありません。すべてのレプリカは一意のDNS名を取得します。Node.jsアプリは、dns名でMongoDBにアクセスするだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.