docker 搭一个mongodb shard cluster
本文按照mongodb网站上的指导教程使用docker搭建了一个shard集群,仅供学习参考。
【docker 搭一个mongodb shard cluster】有如下目录结构:
.
├── docker-compose.yaml
└── shard-setup
└── setup.sh
其中,
docker-compose.yaml
内容如下:version: "3.8"services:mongos-1:
hostname: mongos-1
container_name: mongos-1
image: mongo:5.0.0
entrypoint: /usr/bin/bash /shard-setup/setup.sh
volumes:
- ./shard-setup:/shard-setup
networks:
- mongo-shard-net
restart: on-failure
depends_on:
- cfgrs0-1
- cfgrs0-2
- cfgrs0-3
- dbrs0-1
- dbrs0-2
- dbrs0-3
- dbrs1-1
- dbrs1-2
- dbrs1-3cfgrs0-1:
hostname: cfgrs0-1
container_name: cfgrs0-1
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --configsvr --replSet "cfgrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27019"
cfgrs0-2:
hostname: cfgrs0-2
container_name: cfgrs0-2
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --configsvr --replSet "cfgrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27019"
cfgrs0-3:
hostname: cfgrs0-3
container_name: cfgrs0-3
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --configsvr --replSet "cfgrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27019"# 配置dbrs0和dbrs1
dbrs0-1:
hostname: dbrs0-1
container_name: dbrs0-1
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"dbrs0-2:
hostname: dbrs0-2
container_name: dbrs0-2
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"dbrs0-3:
hostname: dbrs0-3
container_name: dbrs0-3
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs0" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"dbrs1-1:
hostname: dbrs1-1
container_name: dbrs1-1
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs1" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"dbrs1-2:
hostname: dbrs1-2
container_name: dbrs1-2
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs1" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"dbrs1-3:
hostname: dbrs1-3
container_name: dbrs1-3
image: mongo:5.0.0
entrypoint: /usr/bin/mongod --shardsvr --replSet "dbrs1" --bind_ip_all
networks:
- mongo-shard-net
restart: on-failure
expose:
- "27018"networks:
mongo-shard-net:
name: mongo-shard-net
setup.sh
用于设置config以及shard主从,最后作为mongos运行,内容如下:#/bin/bashCFGRS0_NAME=cfgrs0
CFGRS0_REPLICA_1=${CFGRS0_NAME}-1
CFGRS0_REPLICA_2=${CFGRS0_NAME}-2
CFGRS0_REPLICA_3=${CFGRS0_NAME}-3CFGSVR_PORT=27019DBRS0_NAME=dbrs0
DBRS0_REPLICA_1=${DBRS0_NAME}-1
DBRS0_REPLICA_2=${DBRS0_NAME}-2
DBRS0_REPLICA_3=${DBRS0_NAME}-3DBRS1_NAME=dbrs1
DBRS1_REPLICA_1=${DBRS1_NAME}-1
DBRS1_REPLICA_2=${DBRS1_NAME}-2
DBRS1_REPLICA_3=${DBRS1_NAME}-3DBSVR_PORT=27018until mongosh --host ${CFGRS0_REPLICA_1} --port ${CFGSVR_PORT} <
使用
docker-compose up
即可启动集群,使用docker-compose down --volumes
即可停止集群。PS:仅使用
docker-compose down
可能会致使磁盘空间不断减小,每次挂载的volume在/var/lib/docker
目录下会越积越多。推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 七年之痒之后
- 我从来不做坏事
- 异地恋中,逐渐适应一个人到底意味着什么()
- 迷失的世界(二十七)
- live|live to inspire 一个普通上班族的流水账0723
- 遗憾是生活的常态,但孝顺这件事,我希望每一个人都不留遗憾