分片集群搭建过程
配置并启动config节点集群
config部分的yml
version: '3'
services:
# config server配置
mongo_config_server_node_1:
image: mongo:latest
container_name: mongo_config_server_node_1
ports:
- 27010:27017
volumes:
- ./config_server/node_1/data:/data/db
- ./config_server/node_1/log:/var/log/mongodb
- ./config_server/node_1/mongo-entrypoint/:/docker-entrypoint-initdb.d/
- ./config_server/node_1/mongod.conf:/etc/mongod.conf
entrypoint: ["mongod","--config","/etc/mongod.conf"]
mongo_config_server_node_2:
image: mongo:latest
container_name: mongo_config_server_node_2
ports:
- 27011:27017
volumes:
- ./config_server/node_2/data:/data/db
- ./config_server/node_2/log:/var/log/mongodb
- ./config_server/node_2/mongo-entrypoint/:/docker-entrypoint-initdb.d/
- ./config_server/node_2/mongod.conf:/etc/mongod.conf
entrypoint: ["mongod","--config","/etc/mongod.conf"]
mongo_config_server_node_3:
image: mongo:latest
container_name: mongo_config_server_node_3
ports:
- 27012:27017
volumes:
- ./config_server/node_3/data:/data/db
- ./config_server/node_3/log:/var/log/mongodb
- ./config_server/node_3/mongo-entrypoint/:/docker-entrypoint-initdb.d/
- ./config_server/node_3/mongod.conf:/etc/mongod.conf
entrypoint: ["mongod","--config","/etc/mongod.conf"]
创建config_server/node_1
,config_server/node_2
,config_server/node_3
三个目录并且添加上相同配置文件mongod.conf
# 数据库文件位置
# 以追加方式写入日志
logappend=true
# 绑定ip
bind_ip=0.0.0.0
# 绑定端口
port = 27017
# 表示是一个配置服务器
configsvr=true
#配置服务器副本集名称
replSet=config-server
# 是否以守护进程方式运行
# fork = true
# 数据库文件位置
# dbpath=config/config1
# 日志文件位置
# logpath=config/logs/config1.log
使用docker-compose up启动容器,随后进入到其中一个容器当中,使用mongo shell添加节点集群的配置,注意要use admin
// 进入mongo
mongo
// 使用admin
use admin
// 初始化配置信息
var cfg = {
"_id": "config-server",
"members": [{
"_id": 1,
"host": "mongo_config_server_node_1:27017"
}, {
"_id": 2,
"host": "mongo_config_server_node_2:27017"
}, {
"_id": 3,
"host": "mongo_config_server_node_3:27017"
}]
}
// 执行初始化
rs.initiate(cfg)
配置shard集群
需要搭建起mongo_shard_1和mongo_shard_2两个ReplicaSet集群,具体的步骤如下,创建shard_1/node_1
,shard_1/node_2
,shard_1/node_3
三个目录,并分别在目录下面创建mongod.conf文件。
# 绑定ip
bind_ip=0.0.0.0
# 绑定端口
port=27017
# 日志是否总是在后面附加
logappend=true
# replSet名称,要相同才能进入同一个replSet
replSet=shard_1
# 开启日志,似乎默认就是开启的
journal=true
# 开启权限验证
# auth=true
# 数据存储的路径(在docker中的话不需要添加,使用映射即可)
# dbpath=/opt/shell-script/mongo_cluster/node_1/data
# 日志的存储路径(在docker中的话不需要添加,使用映射即可)
# logpath=/opt/shell-script/mongo_cluster/node_1/log/server.log
# 是否后台启动(在docker中的话不需要添加,因为会停止)
# fork=true
在之前的docker-compose文件后面继续追加shard1的相关配置。
docker-compose.yml
version: '3'
services:
# config server
mongo_config_server_node_1:
image: mongo:latest
container_name: mongo_config_server_node_1
ports:
- 27010:27017
volumes:
- ./config_server/node_1/data:/data/db
- ./config_server/node_1/log:/var/log/mongodb
- ./config_server/node_1/mongo-entrypoint/:/docker-entrypoint-initdb.d/
- ./config_server/node_1/mongod.conf:/etc/mongod.conf
entrypoint: ["mongod","--config","/etc/mongod.conf"]
mongo_config_server_node_2:
image: mongo:latest
container_name: mongo_config_server_node_2
ports:
- 27011:27017
volumes:
- ./config_server/node_2/data:/data/db
- ./config_