Docker MongoDB v4.0.0 集群搭建
简单地在Docker环境上搭建一个无认证的MongoDB集群。
本文基于CentOS 7.4,MongoDB版本为4.0.0,Docker版本为17.09.0-ce
1. 本文使用的容器
集群角色 | ContainerName | IP:port |
---|---|---|
Config Server | cfg_1 | 10.1.1.2:27019 |
Config Server | cfg_2 | 10.1.1.3:27019 |
Config Server | cfg_3 | 10.1.1.4:27019 |
Shard Server | shard1_1 | 10.1.1.5:27018 |
Shard Server | shard1_2 | 10.1.1.6:27018 |
Shard Server | shard1_3 | 10.1.1.7:27018 |
Shard Server | shard2_1 | 10.1.1.8:27018 |
Shard Server | shard2_2 | 10.1.1.9:27018 |
Shard Server | shard2_3 | 10.1.1.10:27018 |
Shard Server | shard3_1 | 10.1.1.11:27018 |
Shard Server | shard3_2 | 10.1.1.12:27018 |
Shard Server | shard3_3 | 10.1.1.13:27018 |
Mongos | mongos_1 | 10.1.1.14:27020 |
Mongos | mongos_2 | 10.1.1.15:27020 |
Mongos | mongos_3 | 10.1.1.16:27020 |
2. 从Docker Hub上拉取MongoDB镜像
docker pull mongo:4.0.0
3. Docker网络配置
为MongoDB集群创建独立的docker网桥
docker network create --subnet=10.1.1.0/24 mongodb0
4. 准备MongoDB集群配置文件
准备Docker挂载的目录
mkdir -p /home/dmc/configsvr
mkdir -p /home/dmc/shard1
mkdir -p /home/dmc/shard2
mkdir -p /home/dmc/shard3
mkdir -p /home/dmc/mongos
- Config-Server 配置文件
路径:/home/dmc/configsvr/mongod.conf
说明:MongoDB v3.4 之后要求Config-Server也需要组成副本集形式
storage:
dbPath: /data/db
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 127.0.0.1
processManagement:
timeZoneInfo: /usr/share/zoneinfo
replication:
replSetName: cfg
sharding:
clusterRole: configsvr
- Shard-Server 配置文件
路径:/home/dmc/shard1/mongod.conf
说明:此处配置3个分片为shard1,shard2,shard3;每个分片都需要组成副本集。
shard2,shard3目录下配置文件同名,修改replSetName字段的值分别为’shard2’和’shard3’
storage:
dbPath: /data/db
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
bindIp: 127.0.0.1
processManagement:
timeZoneInfo: /usr/share/zoneinfo
replication:
replSetName: shard1
sharding:
clusterRole: shardsvr
- Mongos 配置文件
路径:/home/dmc/mongos/mongos.conf
说明:mongos不需要存储因此去掉storage字段;可任意配置net.port字段,需要指定processManagement.fork为true以–fork方式启动;sharding.configDB字段用于指定Config-Server集群地址,格式为[replSetName]/[config-server1:port],[config-server2:port],[config-server3:port]…
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
net:
port: 27020
bindIp: 127.0.0.1
processManagement:
fork: true
timeZoneInfo: /usr/share/zoneinfo
sharding:
configDB: cfg/10.1.1.2:27019,10.1.1.3:27019,10.1.1.4:27019
5. 启动Docker容器
- 启动3个Config-Server容器:
docker run -d -