使用Docker部署MongoDB Cluster
环境准备
- 四台服务器,分别命名为ServerA、ServerB、ServerC、ServerD
- 2 Shard(1 Primary 1 Secondary 1 Arbiter) Nodes
- 3 Config Nodes
- 4 Router Nodes
- Docker版本:1.12.5
- Docker Compose版本:1.9.0
Docker镜像
docker-compose.yml
ServerA配置文件
|
|
ServerB配置文件
|
|
ServerC配置文件
|
|
ServerD配置文件
|
|
启动前准备工作
- 创建mongodb-keyfile文件
|
|
- 创建宿主机的volume文件夹
初始化Config节点
重要:在初始化启动前需要去掉docker-compose.yml
配置文件中的--keyFile
参数
启动节点
在ServerA、ServerB和ServerC三台服务器上运行命令:docker-compose up -d configsrv
初始化
利用mongo连接到ServerA节点,输入以下命令创建管理用户:
|
|
初始化ReplicaSet信息
|
|
初始化Shard1节点
重要:在初始化启动前需要去掉docker-compose.yml
配置文件中的--keyFile
参数
启动节点
在ServerA和ServerB两台服务器上运行命令:docker-compose up -d rs1_node
在ServerC服务器上运行命令:docker-compose up -d rs1_arbiter
初始化
利用mongo连接到ServerA节点,创建管理用户
|
|
初始化ReplicaSet信息
|
|
增加Arbiter节点
|
|
查看rs状态:rs.status()
初始化Shard2节点
与Shard1节点雷同,只需要修改对应的服务器IP
重启Config和Shard节点
取消--keyFile
参数的注释,删掉上述创建的所有container
利用docker-compose
再次启动上面所有节点
启动Router节点
使用命令docker-compose up -d router
在四台服务器上启动路由节点
配置Cluster
增加Shard节点
使用mongo连接到任意一台服务器的router节点,然后执行以下命令将Shard节点加入到当前Cluster中
|
|
启动Sharding
在对collection进行sharding之前一定要先对数据库启动sharding
|
|