要求:
前提条件:已经下载完成mongodb镜像文件
搭建方案:
路由服务器 1台
配置服务器 1个副本集,每个副本集1主2从
分片服务器 2个副本集,每个副本集1主2从

1、查看docker网络名称docker network ls
在这里插入图片描述
2、搭建分片服务器
(1)创建三个容器
docker run --name shardMaster1 --docker 网络名称 mongodbnet -v 主机映射目录:docker目录 -d mongo --replSet 集群名称 --shardsvr --port 端口号

(2)查看容器ip地址:docker inspect 容器ID | grep IPAddress
在这里插入图片描述
(3)进入容器,设置主从副本集
进入容器:docker exec -it shardMaster1 mongo
初始化及设置副本集

/*这里的...代表空格,不要删除,复制后改集群名称、ip、端口号*/
rs.initiate(
... {
...     _id:"rsconfig",
...     members:[
...        {_id:0,host:" 172.17.0.8:27017"},
...        {_id:1,host:" 172.17.0.9:27017"},
...        {_id:2,host:" 172.17.0.10:27017"}
...     ]
... }
... )

在这里插入图片描述
ok为1意味着成功,大概十秒后,点击回车,会变成主节点,可以进入从节点查看,若进入从节点容器显示不用初始化,直接显示为XXX:SECONDY>,那就意味着成功
在这里插入图片描述
在这里插入图片描述
这个分片集群第一个副本集就搭建完成了,接下来就照猫画虎搭第二个副本集
(3)搭建第二个分片服务器副本集,步骤都一样,下面不细说
创建容器
docker run --name shardMaster2 --network bridge -v /root/sharddata2/dbm:/data/db -d mongo --replSet shard2 --shardsvr --port 27017

docker run --name shardSlave21 --network bridge -v /root/sharddata2/dbs1:/data/db -d mongo --replSet shard2 --shardsvr --port 27017

docker run --name shardSlave22 --network bridge -v /root/sharddata2/dbs2:/data/db -d mongo --replSet shard2 --shardsvr --port 27017

查看ip地址
在这里插入图片描述
设置主从节点:
在这里插入图片描述
在这里插入图片描述
到这里分片服务器就已经搭建完毕了,接下来是配置服务器

3、搭建配置服务器
(1)创建三个容器,这里与上面的略有不同,需要从主机映射到docker两个文件,注意映射文件不能重名

docker run --name configMaster --network bridge -v /root/dataconfig/dbm:/data/db  -v /root/config/configm:/data/configdb -d mongo  --replSet rsconfig --configsvr   --port 27017

docker run --name configSlave1 --network bridge -v /root/dataconfig/dbs1:/data/db  -v /root/config/configm1:/data/configdb -d mongo  --replSet rsconfig  --configsvr   --port 27017

docker run --name configSlave2 --network bridge -v /root/dataconfig/dbs2:/data/db  -v /root/config/configm2:/data/configdb -d mongo  --replSet rsconfig  --configsvr   --port 27017

在这里插入图片描述
(2)查看ip,初始化,设置主从节点
在这里插入图片描述
在这里插入图片描述
(3)查看从节点状态:docker exec -it configSlave1 mongo
显示为SECONDY即为成功

3、搭建路由服务器(下面需要配置分片服务器以及配置服务器,需要IP地址,IP地址都是前面配置的)
(1)创建容器
docker run -p 27020:27018 --name routerServer1 --network bridge -d mongo --bind_ip 0.0.0.0
这里创建容器指定了主机端口号映射到docker的端口号,然后是容器名称,network 是网络名,bind_ip 是指定连接的ip,这里设置为0.0.0.0,表明外部端口号都可以连接。
(2)进入容器
docker exec -it routerServer1 /bin/bash

(3)启动mongos,指定配置服务器地址
mongos --configdb rsconfig/8d94eb45abe4:27017,172.17.0.3:27017,172.17.0.4:27017 --port 27018 --bind_ip 0.0.0.0
在这里插入图片描述

这样子路由服务器就启动了,你需要启动另外的界面,去连接mongos ,monggos其实就是集群和用户的交互点,也就是你在进行插入数据的时候,mongod负责代码逻辑,而mongos负责分片。但是我们这里还需要配置一些东西,接着往下吧
(4)连接mongos
在这里插入图片描述
(5)切换gateway数据库: use gateway
(6)添加切片服务器
sh.addShard(“shard1/172.18.0.8:27017,172.18.0.9:27017,172.18.0.10:27017”)
sh.addShard(“shard2/172.18.0.11:27017,172.18.0.12:27017,172.18.0.13:27017”)
在这里插入图片描述
到这一步也就完成了。
最后,连接的是外部端口号,也就是主机端口号,我这篇文章写的是27020,不管你是想用java连接还是一些操作mongodb的客户端,需要连接的url,mongodb是uri,都配置:mondodb://ip:端口号/数据库
但是,这里没有开启分片功能,你还需要开启分片功能

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐