本文Mongdb分片使用Docker-compose方式构建,不熟悉Docker-compose的请自行恶补。
一、准备工作
1.建立工作目录
Docker容器中的相关工作目录不好管理,我们将使用目录映射的方式,将相关工作目录映射到宿主机上,这样方便管理和维护,同时就算我们删除了Docker,相关的数据也不会丢失。
相关命令如下:
rm -rf /mongodb/*
mkdir -p /mongodb/components
mkdir -p /mongodb/data0{
1,2,3}
进行防火墙的相关设置,主要是打开要使用的端口
firewall-cmd --zone=public --add-port=27019/tcp --permanent
firewall-cmd --zone=public --add-port=27118/tcp --permanent
firewall-cmd --zone=public --add-port=27218/tcp --permanent
firewall-cmd --zone=public --add-port=27318/tcp --permanent
firewall-cmd --zone=public --add-port=37017/tcp --permanent
firewall-cmd --reload
2.config和shard配置文件
这里为了操作方便,我们把这两个配置写到一个文件里,这里一共使用3个shard,由于我一般使用的服务器都是高配置大内存的,如果你的机器配置比较小,请修改相应的内存分配。
version: '3'
networks:
mongo-network:
external: false
services:
config:
image: mongo:latest
networks:
- mongo-network
container_name: config
restart: always
ports:
- 27019:27019
command: --configsvr --replSet "config" --bind_ip_all --wiredTigerCacheSizeGB 2
volumes:
- /mongodb/components/config_mongodb/data/db:/data/db
- /mongodb/components/config_mongodb/data/logs:/data/logs
- /mongodb/components/config_mongodb/data/conf:/etc/mongo
- /mongodb/components/config_mongodb/data/configdb:/data/configdb
environment:
- TZ=Asia/Shanghai
shard1:
image: mongo:latest
networks:
- mongo-network
container_name: shard1
restart: always
ports:
- 27118:27018
command: --shardsvr --replSet "shard1" --bind_ip_all --wiredTigerCacheSizeGB 2
volumes:
- /mongodb/data01/mongo/shard1/db:/data/db
- /mongodb/data01/mongo/shard1/configdb:/data/configdb
environment:
- TZ=Asia/Shanghai
shard2:
image: mongo:latest
networks:
- mongo-network
container_name: shard2
restart: always
ports:
- 27218:27018
command: --shardsvr --replSet "shard2" --bind_ip_all --wiredTigerCacheSizeGB 2
volumes:
- /mongodb/data02/mongo/shard2/db:/data/db
- /mongodb/data02/mongo/shard2/configdb:/data/configdb
environment:
- TZ=Asia/Shanghai
shard3:
image: mongo:latest
networks:
- mongo-network
container_name: shard3
restart: always
ports:
- 27318:27018
command: --shardsvr --replSet "shard3"