Docker MongoDB v4.1.6集群搭建

网友投稿 264 2022-10-25

Docker MongoDB v4.1.6集群搭建

Docker MongoDB v4.1.6 集群搭建 简单地在Docker环境上搭建一个无认证的MongoDB集群。 本文基于ubuntu18.04,MongoDB版本为4.1.6,Docker版本为19.0.0-ce 1. 本文使用的容器 集群角色    ContainerName    IP:port Config Server    cfg_1    10.1.1.2:27019 Config Server    cfg_2    10.1.1.3:27019 Config Server    cfg_3    10.1.1.4:27019 Shard Server    shard1_1    10.1.1.5:27018 Shard Server    shard1_2    10.1.1.6:27018 Shard Server    shard1_3    10.1.1.7:27018 Shard Server    shard2_1    10.1.1.8:27018 Shard Server    shard2_2    10.1.1.9:27018 Shard Server    shard2_3    10.1.1.10:27018 Shard Server    shard3_1    10.1.1.11:27018 Shard Server    shard3_2    10.1.1.12:27018 Shard Server    shard3_3    10.1.1.13:27018 Mongos    mongos_1    10.1.1.14:27020 Mongos    mongos_2    10.1.1.15:27020 Mongos    mongos_3    10.1.1.16:27020 2. 从Docker Hub上拉取MongoDB镜像 docker pull mongo:4.1.6 3. Docker网络配置 为MongoDB集群创建独立的docker网桥 docker network create --subnet=10.1.1.0/24 mongodb0 4. 准备MongoDB集群配置文件 准备Docker挂载的目录 mkdir -p /home/w/mongoDB/configsvr mkdir -p /home/w/mongoDB/shard1 mkdir -p /home/w/mongoDB/shard2 mkdir -p /home/w/mongoDB/shard3 mkdir -p /home/w/mongoDB/mongos Config-Server 配置文件 路径:/home/w/mongoDB/configsvr/mongod.conf 说明:MongoDB v3.4 之后要求Config-Server也需要组成副本集形式 storage:   dbPath: /data/db   journal:     enabled: true systemLog:   destination: file   logAppend: true   path: /var/log/mongodb/mongod.log net:   bindIp: 127.0.0.1 processManagement:   timeZoneInfo: /usr/share/zoneinfo replication:   replSetName: cfg sharding:   clusterRole: configsvr Shard-Server 配置文件 路径:/home/w/mongoDB/shard1/mongod.conf 说明:此处配置3个分片为shard1,shard2,shard3;每个分片都需要组成副本集。 shard2,shard3目录下配置文件同名,修改replSetName字段的值分别为’shard2’和’shard3’ storage:   dbPath: /data/db   journal:     enabled: true systemLog:   destination: file   logAppend: true   path: /var/log/mongodb/mongod.log net:   bindIp: 127.0.0.1 processManagement:   timeZoneInfo: /usr/share/zoneinfo replication:   replSetName: shard1 sharding:   clusterRole: shardsvr Mongos 配置文件 路径:/home/dmc/mongos/mongos.conf 说明:mongos不需要存储因此去掉storage字段;可任意配置net.port字段,需要指定processManagement.fork为true以–fork方式启动;sharding.configDB字段用于指定Config-Server集群地址,格式为[replSetName]/[config-server1:port],[config-server2:port],[config-server3:port]… systemLog:   destination: file   logAppend: true   path: /var/log/mongodb/mongos.log net:   port: 27020   bindIp: 127.0.0.1 processManagement:   fork: true   timeZoneInfo: /usr/share/zoneinfo sharding:   configDB: cfg/10.1.1.2:27019,10.1.1.3:27019,10.1.1.4:27019 5. 启动Docker容器 启动3个Config-Server容器: docker run -d --name=cfg_1 --network=mongodb0 --ip=10.1.1.2 -v /home/w/mongoDBconfigsvr:/etc/mongodb mongo:4.1.6 -f /etc/mongodb/mongod.conf docker run -d --name=cfg_2 --network=mongodb0 --ip=10.1.1.3 -v /home/w/mongoDB/configsvr:/etc/mongodb mongo:4.1.6 -f /etc/mongodb/mongod.conf docker run -d --name=cfg_3 --network=mongodb0 --ip=10.1.1.4 -v /home/w/mongoDB/configsvr:/etc/mongodb mongo:4.1.6 -f /etc/mongodb/mongod.conf 进入其中一个容器配置Config-Server副本集: # 宿主机 docker exec -it cfg_1 bash # 容器中 mongo --port 27019 # Mongo Shell中 rs.initiate({     "_id":"cfg",     "members":[         {             "_id":0,             "host":"10.1.1.2:27019"         },         {             "_id":1,             "host":"10.1.1.3:27019"         },         {             "_id":2,             "host":"10.1.1.4:27019"         }     ] }) 启动3*3个Shard-Server容器: 说明:分片服务器启动后默认是以27018作为端口。 # 启动第一个分片 - shard1 docker run -d --name=shard1_1 --network=mongodb0 --ip=10.1.1.5 -v /home/dmc/shard1:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard1_2 --network=mongodb0 --ip=10.1.1.6 -v /home/dmc/shard1:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard1_3 --network=mongodb0 --ip=10.1.1.7 -v /home/dmc/shard1:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf 进入其中一个容器配置Shard-Server副本集: # 宿主机 docker exec -it shard1_1 bash # 容器中 mongo --port 27018 # Mongo Shell中 rs.initiate({     "_id":"shard1",     "members":[         {             "_id":0,             "host":"10.1.1.5:27018"         },         {             "_id":1,             "host":"10.1.1.6:27018"         },         {             "_id":2,             "host":"10.1.1.7:27018"         }     ] }) # 启动第二个分片 - shard2 docker run -d --name=shard2_1 --network=mongodb0 --ip=10.1.1.8 -v /home/dmc/shard2:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard2_2 --network=mongodb0 --ip=10.1.1.9 -v /home/dmc/shard2:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard2_3 --network=mongodb0 --ip=10.1.1.10 -v /home/dmc/shard2:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf 进入其中一个容器配置Shard-Server副本集: # 宿主机 docker exec -it shard2_1 bash # 容器中 mongo --port 27018 # Mongo Shell中 rs.initiate({     "_id":"shard2",     "members":[         {             "_id":0,             "host":"10.1.1.8:27018"         },         {             "_id":1,             "host":"10.1.1.9:27018"         },         {             "_id":2,             "host":"10.1.1.10:27018"         }     ] }) # 启动第三个分片 - shard3 docker run -d --name=shard3_1 --network=mongodb0 --ip=10.1.1.11 -v /home/dmc/shard3:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard3_2 --network=mongodb0 --ip=10.1.1.12 -v /home/dmc/shard3:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf docker run -d --name=shard3_3 --network=mongodb0 --ip=10.1.1.13 -v /home/dmc/shard3:/etc/mongodb mongo:4.0.0 -f /etc/mongodb/mongod.conf 进入其中一个容器配置Shard-Server副本集: # 宿主机 docker exec -it shard3_1 bash # 容器中 mongo --port 27018 # Mongo Shell中 rs.initiate({     "_id":"shard3",     "members":[         {             "_id":0,             "host":"10.1.1.11:27018"         },         {             "_id":1,             "host":"10.1.1.12:27018"         },         {             "_id":2,             "host":"10.1.1.13:27018"         }     ] }) 启动3个mongos服务器 说明:这里也使用了mongo镜像,但是需要开启mongos进程,mongod进程并不需要用到。 docker run -d --name=mongos_1 --network=mongodb0 --ip=10.1.1.14 -v /home/dmc/mongos:/etc/mongodb mongo:4.0.0 docker run -d --name=mongos_2 --network=mongodb0 --ip=10.1.1.15 -v /home/dmc/mongos:/etc/mongodb mongo:4.0.0 docker run -d --name=mongos_3 --network=mongodb0 --ip=10.1.1.16 -v /home/dmc/mongos:/etc/mongodb mongo:4.0.0 进入每个容器中,启动mongos进程(此处可以改进一下,自动运行mongos进程) # 宿主机 docker exec -it mongos_1 bash # 容器中 mongos -f /etc/mongodb/mongos.conf 可以就在其中一个mongos容器中使用mongo shell连接mongos进程配置分片集群。 # 连接mongos,端口号与mongos配置文件中设定一致 mongo -port 27020 # 将分片加入集群 sh.addShard("shard1/10.1.1.5:27018,10.1.1.6:27018,10.1.1.7:27018") sh.addShard("shard2/10.1.1.8:27018,10.1.1.9:27018,10.1.1.10:27018") sh.addShard("shard3/10.1.1.11:27018,10.1.1.12:27018,10.1.1.13:27018") # 对数据库开启分片功能 sh.enableSharding("[dbName]") # 对数据库中集合开启分片,并指定片键 sh.shardCollection("[dbName.collectionName]",{[keyName]:1}) 6. 尝试写入数据观察数据分块 # 插入5百万个简单的文档,耐心等待插入结束 for(var i=1;i<=5000000;i++){     db.coll1.insert({         name:i,         age:Math.round(Math.random() * 100),         score1:Math.round(Math.random() * 100),         score2:Math.round(Math.random() * 100),         score3:Math.round(Math.random() * 100),         score4:Math.round(Math.random() * 100),         score5:Math.round(Math.random() * 100)     }); } # 查看分片状态 sh.status()

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈电脑接口HDMI与DP的区别
下一篇:docker-compose 部署MongoDB4.1.6部署副本集)集群 本人
相关文章

 发表评论

暂时没有评论,来抢沙发吧~