使用 Docker 部署 MongoDB 分片

2022-01-29 13:08:16 字數 3741 閱讀 6146

docker run --name configsvr0 -d mongo:3.6.2-jessie --configsvr --replset "rs_configsvr"  --bind_ip_all

docker run --name configsvr1 -d mongo:3.6.2-jessie --configsvr --replset "rs_configsvr" --bind_ip_all

docker run --name configsvr2 -d mongo:3.6.2-jessie --configsvr --replset "rs_configsvr" --bind_ip_all

$ docker ps

image command created status ports names

mongo:3.6.2-jessie "docker-entrypoint..." 8 seconds ago up 6 seconds 27019/tcp configsvr2

mongo:3.6.2-jessie "docker-entrypoint..." 9 seconds ago up 7 seconds 27019/tcp configsvr1

mongo:3.6.2-jessie "docker-entrypoint..." 19 seconds ago up 16 seconds 27019/tcp configsvr0

通過docker inspect找到三個配置服務例項的 ip。

比如docker inspect configsvr0 | grep ipaddress

又由於--configsvr的預設埠為 27019。所以配置服務的位址為

初始化

docker exec -it configsvr0 bash

mongo --host 172.17.0.2 --port 27019

rs.initiate(

, ,

]})

連線字串為

mongodb:

與上面同理,不再贅述,直接上命令列。

docker run --name shardsvr00 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr0"  --bind_ip_all

docker run --name shardsvr01 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr0" --bind_ip_all

docker run --name shardsvr02 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr0" --bind_ip_all

docker run --name shardsvr10 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr1" --bind_ip_all

docker run --name shardsvr11 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr1" --bind_ip_all

docker run --name shardsvr12 -d mongo:3.6.2-jessie --shardsvr --replset "rs_shardsvr1" --bind_ip_all

通過docker inspect找到對應例項的 ip。

比如docker inspect shardsvr00 | grep ipaddress

又由於--shardsvr的預設埠為 27018。所以位址為

由於後來才增加的 shardsvr1,所以 ip 末尾是 9 而不是 8。

$ docker exec -it shardsvr00 bash

mongo --host 172.17.0.5 --port 27018

> rs.initiate(

, ,]})

# 輸出

mongo --host 172.17.0.9 --port 27018

> rs.initiate(

, ,

]})

連線字串為

mongodb:

mongodb:

由於映象的預設入口是mongod,所以要通過--entrypoint "mongos"將其改為mongos

docker run --name mongos0 -d --entrypoint "mongos" mongo:3.6.2-jessie --configdb rs_configsvr/172.17.0.2:27019,172.17.0.3:27019,172.17.0.4:27019 --bind_ip_all
位址為172.17.0.8:27017

$ docker exec -it mongos bash

$ mongo --host 172.17.0.8 --port 27017

> sh.addshard("rs_shardsvr0/172.17.0.5:27018,172.17.0.6:27018,172.17.0.7:27018")

}, "operationtime" : timestamp(1518405986, 8)

}> sh.addshard("rs_shardsvr1/172.17.0.9:27018,172.17.0.10:27018,172.17.0.11:27018")

> sh.enablesharding("test")

}, "operationtime" : timestamp(1518406101, 8)

}

test.order_id字段進行雜湊分片:

> sh.shardcollection("test.order", )

}, "operationtime" : timestamp(1518406317, 6)

}

插入資料

use test

for (i = 1; i <= 1000; i=i+1))

}

檢視資料分布

mongos> db.order.find().count()

1000

rs_shardsvr0:primary> db.order.find().count()

526rs_shardsvr1:primary> db.order.find().count()

474

linux使用docker安裝mongo

拉取mongo映象,mongo latest 指最新版本,也可指定版本號拉取 mongo latest docker pull mongo latest新增容器並執行mongo,設定登陸許可權 docker run itd name mongo p 27017 27017 mongo auth 進入...

Docker 使用Docker部署Node服務

docker 是乙個開源的容器引擎。開發者可以將自己的應用以及依賴打包為乙個可移植的容器,然後發布到 linux 機器上。它類似於乙個輕量級的虛擬機器,極大地方便了使用者在伺服器端部署和管理應用環境。apt install docker.io安裝成功後檢視docker版本 建立package.jso...

使用Docker部署Gitlab

由於公司的 伺服器已使用gitosis搭建,但由於使用者和許可權管理太麻煩,現在想在原有伺服器上再搭建gitlab,使用gitlab官方方法直接安裝,會導致與gitosis衝突,使得gitosis不可用,因為要保持兩個服務同時存在,所以就想到利用docker來搭建gitlab。以下以ubuntu 1...