首頁/ 汽車/ 正文

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

假設我的兩臺機器分別是:172。21。0。17(主)、172。21。0。12(從),此兩個IP為內網IP。

映象下載

docker pull mongo:6。0。2

建立叢集網路

主從機器分別建立叢集網路,假設名稱為mongo-network

docker network create mongo-networkdocker network ls

主機上建立叢集許可權檔案

在主機上執行,建立叢集許可權檔案,生成節點通行金鑰,並修改金鑰許可權,命令如下:

172。21。0。17(主)mkdir -p /opt/mongo/mongo-keyopenssl rand -base64 756 > /opt/mongo/mongo-key/mongo-replication。keychmod 400 /opt/mongo/mongo-key/mongo-replication。keysudo chown 999:999 /opt/mongo/mongo-key/mongo-replication。key

複製主機的叢集許可權檔案到從機

在從機上執行,複製主機的叢集許可權檔案,並修改金鑰許可權,命令如下:

172。21。0。12(從)mkdir -p /opt/mongo/mongo-keyscp @172。21。0。17:/opt/mongo/mongo-key/mongo-replication。key /opt/mongo/mongo-key/chmod 400 /opt/mongo/mongo-key/mongo-replication。keysudo chown 999:999 /opt/mongo/mongo-key/mongo-replication。key

主機啟動帶許可權和金鑰的容器

注意主機的容器名,我建立為:——name mongo-master

docker run -e TZ=Asia/Shanghai -d ——restart always \-p 27027:27017 \——name mongo-master \-v /opt/mongo/mongo_master/configdb/:/data/configdb \-v /opt/mongo/mongo_master/db/:/data/db \-v /opt/mongo/mongo_master/backup/:/data/backup \-v /opt/mongo/mongo-key/:/data/key \——net=mongo-network \——log-opt max-size=10m \——log-opt max-file=1 \mongo:6。0。2 \mongod ——dbpath /data/db ——replSet mongoreplset \——oplogSize 128 \——auth ——keyFile=/data/key/mongo-replication。key

從機啟動帶許可權和金鑰的容器

注意從機的容器名,我建立為:

——name mongo-salve

——name mongo-arbiter

docker run -e TZ=Asia/Shanghai -d ——restart always \-p 27028:27017 \——name mongo-salve \-v /opt/mongo/mongo-salve/configdb/:/data/configdb \-v /opt/mongo/mongo-salve/db/:/data/db \-v /opt/mongo/mongo-salve/backup/:/data/backup \-v /opt/mongo/mongo-key/:/data/key \——net=mongo-network \——log-opt max-size=10m \——log-opt max-file=1 \mongo:6。0。2 \mongod ——dbpath /data/db ——replSet mongoreplset \——oplogSize 128 \——auth ——keyFile=/data/key/mongo-replication。keydocker run -e TZ=Asia/Shanghai -d ——restart always \-p 27029:27017 \——name mongo-arbiter \-v /opt/mongo/mongo-arbiter/configdb/:/data/configdb \-v /opt/mongo/mongo-arbiter/db/:/data/db \-v /opt/mongo/mongo-arbiter/backup/:/data/backup \-v /opt/mongo/mongo-key/:/data/key \——net=mongo-network \——log-opt max-size=10m \——log-opt max-file=1 \mongo:6。0。2 \mongod ——dbpath /data/db ——replSet mongoreplset \——oplogSize 128 \——auth ——keyFile=/data/key/mongo-replication。key

進入主機容器,配置叢集

7。1 直接進入主機容器中的Mongo

docker exec -it mongo-master mongosh

7。2 配置叢集

config = {_id:“mongoreplset”, version:1, members:[{_id:0, host:“172。21。0。17:27027”, priority:5}, {_id:1, host:“172。21。0。12:27028”, priority:2}, {_id:2, host:“172。21。0。12:27029”, priority:3}]}rs。initiate(config)

注意:

如果IP配置為內網IP,例如:172。21。0。17與172。21。0。12,則連線的叢集URL只能是內網的,例如:mongodb://username:pwd@172。21。0。17:27027,172。21。0。12:27028,172。21。0。12:27029,此時叢集的URL在外網是不可用的,即使映射了外網地址,也只能連線單臺,例如:mongodb://username:pwd@172。21。0。17:27027

如果想在外網連線叢集URL,則需要配置外網地址

config = {_id:“mongoreplset”, version:1, members:[{_id:0, host:“外網IP1:27027”, priority:5}, {_id:1, host:“外網IP2:27028”, priority:2}, {_id:2, host:“外網IP2:27029”, priority:3}]}rs。initiate(config)

配置參考:

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

驗證叢集

配置成功再進入會有如下標識:

(主) docker exec -it mongo-master mongosh 會有如下提示:mongoreplset [direct: primary] test> (從) docker exec -it mongo-salve mongosh 會有如下提示:mongoreplset [direct: secondary] test> (從) docker exec -it mongo-arbiter mongo 會有如下提示:mongoreplset [direct: secondary] test>

整體驗證流程如下:

配置好後,主機會顯示:mongoreplset [direct: other] test>

退出,再重新進入主機,就會顯示:mongoreplset [direct: primary] test>

對於從機的驗證:透過命令進入,會顯示:mongoreplset [direct: secondary] test>

以下是驗證參考:

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

建立管理員使用者及密碼

9。1 建立資料庫root使用者

docker exec -it mongo-master mongoshuse admindb。createUser( { user: “root”, pwd: “Synjones2022”, roles: [“root”] } )

9。2 使用root使用者建立管理員使用者

docker exec -it mongo-master mongoshuse admindb。auth(“root”, “Synjones2022”)db。createUser( { user: “synjones”, pwd: “synjones2022”, roles: [“readWriteAnyDatabase”] } )

建立root使用者參考流程如下:

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

使用root使用者建立管理員使用者參考如下:

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

使用Studio 3T登入

由於我們上面配置的是內網的叢集IP,所以透過外網對映的單臺進行訪問即可,實際生產環境也可以這樣使用,因為我們的應用都是部署在內網的,外部連線也僅是為了查驗資料。

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

如果配置了外網ip,以下是叢集的連線配置:

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

搭建Mongo 6.0叢集(使用兩臺新機器搭建Replica Set模式)

相關文章

頂部