本文环境mongo=3.4, keepalived=2.0.5, docker=1.8
本次采用三个节点,搭建mongo集群3sharding,每个sharding采用一主一从一仲裁, 其中搭建三个router节点,为防止application与mongo集群中router节点的连接出现单点故障,特搭建keepalived集群,通过虚拟ip连接三个节点上的router节点,application连接虚拟生成的虚拟ip。
搭建步骤详解
搭建mongo集群
https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/#deploy-a-sharded-cluster
建议搭建看一遍官方文档,写的非常详细
1、 配置文件
node1节点
version: '2.2'
services:
configsrv:
image: mongo:3.4
command: mongod --keyFile /opt/keyfile --oplogSize 1024 --replSet configrs --port 27017 --configsvr --wiredTigerCacheSizeGB 5
# command: mongod --oplogSize 1024 --replSet configrs --port 27017 --configsvr --wiredTigerCacheSizeGB 5
volumes:
- /mnt/dataset/databases/mongo_meinian/configsrv208:/data/db
- ./keyfile:/opt/keyfile
healthcheck:
test: "exit 0"
ports:
- "27020:27017"
restart:
always
container_name:
meinian_configsrv
rs1_node:
image: mongo:3.4
command: mongod --keyFile /opt/keyfile --oplogSize 10240 --replSet rs1 --directoryperdb --port 27017 --shardsvr
# command: mongod --oplogSize 10240 --replSet rs1 --directoryperdb --port 27017 --shardsvr
volumes:
- /mnt/dataset/databases/mongo_meinian/meinian_rs1_208:/data/db
- ./keyfile:/opt/keyfile
healthcheck:
test: "exit 0"
ports:
- "27021:27017"
restart:
always
container_name:
meinian_rs1_node
rs2_node:
image: mongo:3.4
command: mongod --keyFile /opt/keyfile --oplogSize 10240 --replSet rs2 --directoryperdb --port 27017 --shardsvr
# command: mongod --oplogSize 10240 --replSet rs2 --directoryperdb --port 27017 --shardsvr
volumes:
- /mnt/dataset/databases/mongo_meinian/meinian_rs2_208:/data/db
- ./keyfile:/opt/keyfile
healthcheck:
test: "exit 0"
ports:
- "27022:27017"
restart:
always
container_name:
meinian_rs2_node
rs3_arbiter:
image: mongo:3.4
command: mongod --keyFile /opt/keyfile --oplogSize 10240 --replSet rs3 --directoryperdb --port 27017 --shardsvr
# command: mongod --oplogSize 10240 --replSet rs3 --directoryperdb --port 27017 --shardsvr
volumes:
- /mnt/dataset/databases/mongo_meinian/meinian_rs3_arb:/data/db
- ./keyfile:/opt/keyfile
healthcheck:
test: "exit 0"
ports:
- "27023:27017"
restart:
always
container_name:
meinian_rs3_arbiter
router:
image: mongo:3.4
command: mongos --keyFile /opt/keyfile --configdb configrs/192.168.1.208:27020,192.168.1.209:27020,192.168.1.210:27020
# command: mongos --configdb configrs/192.168.1.208:27018,192.168.1.209:27018,192.168.1.210:27018
ports:
- "27024:27017"
volumes:
- /mnt/dataset/databases/mongo_meinian/meinian_router208:/data/db
- ./keyfile:/opt/keyfile
healthcheck:
test: "exit 0"
restart:
always
co