docker mongodb分片集群
-
#docker创建网络
-
docker network create --subnet= 172.32.0.0/24 mongo-br
-
-
#mongodb集群、分片概述
-
#mongodb分片集群由下面几个组建组成:
-
-
#shard 官方建议采用副本集,提供数据冗余和高可用,主要存储业务数据
-
#mongos 是应用程序的接口,通过它,应用程序与整个集群是透明的,故一般每个应用服务器对应一个实例,可以跟应用部署到一台服务器上。它主要读取或缓存配置服务器中元数据,提供查询路由到每个分片的功能
-
#configure servers 官方建议采用副本集,存储集群的元数据。很重要,能够影响集群的使用
-
-
docker pull mongo:4.2.0
-
#创建配置服务复制集
-
docker run -d --net mongo-br --ip 172.32.0.3 --name configsvr0 -v /home/mongodb/data/cs/configsvr0:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
-
docker run -d --net mongo-br --ip 172.32.0.4 --name configsvr1 -v /home/mongodb/data/cs/configsvr1:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
-
docker run -d --net mongo-br --ip 172.32.0.5 --name configsvr2 -v /home/mongodb/data/cs/configsvr2:/data/configdb mongo:4.2.0 --configsvr --replSet "rs_configsvr" --bind_ip_all
-
-
-
#通过docker inspect 容器名去获取在容器里的ip地址:
-
docker inspect configsvr0 | grep IPAddress
-
docker inspect configsvr1 | grep IPAddress
-
docker inspect configsvr2 | grep IPAddress
-
-
#由于–configsvr 的默认端口为 27019。所以配置服务的地址为
-
•configsvr0: 172.32.0.3:27019
-
•configsvr1: 172.32.0.4:27019
-
•configsvr2: 172.32.0.5:27019
-
-
#初始化配置服务复制集:
-
docker exec -it configsvr0 bash
-
mongo --host 172.32.0.3 --port 27019
-
-
rs.initiate(
-
{
-
_id: "rs_configsvr",
-
configsvr: true,
-
members: [
-
{ _id : 0, host : "172.32.0.3:27019" },
-
{ _id : 1, host : "172.32.0.4:27019" },
-
{ _id : 2, host : "172.32.0.5:27019" }
-
]
-
})
-
-
-
#创建分片复制集
-
docker run --name shardsvr00 -d --net mongo-br --ip 172.32.0.6 -v /home/mongodb/data/sh/shardsvr00:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
-
docker run --name shardsvr01 -d --net mongo-br --ip 172.32.0.7 -v /home/mongodb/data/sh/shardsvr01:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
-
docker run --name shardsvr02 -d --net mongo-br --ip 172.32.0.8 -v /home/mongodb/data/sh/shardsvr02:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr0" --bind_ip_all
-
-
docker run --name shardsvr10 -d --net mongo-br --ip 172.32.0.9 -v /home/mongodb/data/sh/shardsvr10:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
-
docker run --name shardsvr11 -d --net mongo-br --ip 172.32.0.10 -v /home/mongodb/data/sh/shardsvr11:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
-
docker run --name shardsvr12 -d --net mongo-br --ip 172.32.0.11 -v /home/mongodb/data/sh/shardsvr12:/data/db mongo:4.2.0 --shardsvr --replSet "rs_shardsvr1" --bind_ip_all
-
-
#继续通过 docker inspect 找出实例的ip
-
docker inspect shardsvr00 | grep IPAddress
-
docker inspect shardsvr01 | grep IPAddress
-
docker inspect shardsvr02 | grep IPAddress
-
docker inspect shardsvr10 | grep IPAddress
-
docker inspect shardsvr11 | grep IPAddress
-
docker inspect shardsvr12 | grep IPAddress
-
-
#由于–shardsvr 的默认端口为 27018。所以地址为
-
•shardsvr00: 172.32.0.6:27018
-
•shardsvr01: 172.32.0.7:27018
-
•shardsvr02: 172.32.0.8:27018
-
-
•shardsvr10: 172.32.0.9:27018
-
•shardsvr11: 172.32.0.10:27018
-
•shardsvr12: 172.32.0.11:27018
-
-
docker exec -it shardsvr00 bash
-
mongo --host 172.32.0.6 --port 27018
-
-
rs.initiate(
-
{
-
_id : "rs_shardsvr0",
-
members: [
-
{ _id : 0, host : "172.32.0.6:27018" },
-
{ _id : 1, host : "172.32.0.7:27018" },
-
{ _id : 2, host : "172.32.0.8:27018" }
-
]
-
})
-
-
-
#输出 { "ok" : 1 }
-
docker exec -it shardsvr10 bash
-
mongo --host 172.32.0.9 --port 27018
-
-
rs.initiate(
-
{
-
_id : "rs_shardsvr1",
-
members: [
-
{ _id : 0, host : "172.32.0.9:27018" },
-
{ _id : 1, host : "172.32.0.10:27018" },
-
{ _id : 2, host : "172.32.0.11:27018" }
-
]
-
})
-
-
-
#输出 { "ok" : 1 }
-
-
#创建mongos,连接mongos到分片集群
-
#由于镜像的默认入口是 mongod,所以要通过 --entrypoint "mongos" 将其改为 mongos:
-
-
docker run --name mongos0 -d --net mongo-br --ip 172.32.0.12 -p 27017:27017 --entrypoint "mongos" mongo:4.2.0 --configdb rs_configsvr/172.32.0.3:27019,172.32.0.4:27019,172.32.0.5:27019 --bind_ip_all
-
docker inspect mongos0 | grep IPAddress
-
#地址为:172.32.0.12:27017
-
#注:映射到宿主机便于外面客户端访问
-
-
#添加分片到集群
-
docker exec -it mongos0 bash
-
mongo --host 172.32.0.12 --port 27017
-
-
sh.addShard("rs_shardsvr0/172.32.0.6:27018,172.32.0.7:27018,172.32.0.8:27018")
-
-
sh.addShard("rs_shardsvr1/172.32.0.9:27018,172.32.0.10:27018,172.32.0.11:27018")
-
-
#数据库 启用 分片
-
docker exec -it mongos0 bash
-
mongo --host 172.32.0.12 --port 27017
-
use admin
-
db.runCommand({"enablesharding":"sharedemodb"})
-
sh.shardCollection("sharedemodb.student",{"age":1}) #必须有最少一个集合,在工具里才会显示
-
#数据库 启用 分片
-
docker exec -it mongos0 bash
-
mongo --host 172.31.0.12 --port 27017
-
use admin
-
db.runCommand({"enablesharding":"sharedemodb"})
-
sh.shardCollection("sharedemodb.student",{"age":1}) #必须有最少一个集合,在工具里才会显示
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaccic
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24