要用 Docker 測試 MongoDB replica set 我們要先建立 Docker network。

docker network ls

MongoDB - Creating a MongoDB replica set using Docker

docker network create mongo-cluster

MongoDB - Creating a MongoDB replica set using Docker

docker network ls

MongoDB - Creating a MongoDB replica set using Docker

然後起第一個 MongoDB 的 Docker 容器,設定使用 Docker network,並用 –replSet 參數指定 replSet 的名稱。

docker run -p 27017:27017 –name mongo1 –net mongo-cluster mongo mongod –replSet rs0

MongoDB - Creating a MongoDB replica set using Docker

接著起第二個 MongoDB 的 Docker 容器,一樣設定使> 用 Docker network,且用 –replSet 參數指定 replSet 的名稱。

docker run -p 27027:27017 –name mongo2 –net mongo-cluster mongo mongod –replSet rs0

MongoDB - Creating a MongoDB replica set using Docker

最後起第三個 MongoDB 的 Docker 容器,一樣設定使用 Docker network,且用 –replSet 參數指定 replSet 的名稱。

docker run -p 27037:27017 –name mongo3 –net mongo-cluster mongo mongod –replSet rs0

MongoDB - Creating a MongoDB replica set using Docker

然後連進某一個容器內運行 mongo 命令。

docker exec -it mongo1 mongo

MongoDB - Creating a MongoDB replica set using Docker

調用 rs.initate 命令,將三個 MongoDB instance 資料帶入,初始 MongoDB 的 replica set。 rs.initiate( { _id : “rs0”,members: [{ _id: 0, host: “mongo1” },{ _id: 1, host: “mongo2” },{ _id: 2, host: “mongo3” } ]})

MongoDB - Creating a MongoDB replica set using Docker

設完後可調用 rs.conf 命令確認設定。

rs.conf()

MongoDB - Creating a MongoDB replica set using Docker

並調用 rs.status 命令確認 replica set 的 primary/secondary 的切換、抄寫、狀態、設定都是正常的。

rs.status()

MongoDB - Creating a MongoDB replica set using Docker

MongoDB - Creating a MongoDB replica set using Docker

Link