基于docker的mongodb分片集群
基于docker的mongodb分片集群
要求:
前提条件:已经下载完成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:端口号/数据库
。
但是,这里没有开启分片功能,你还需要开启分片功能
更多推荐
所有评论(0)