最近准备自学mongodb集群的相关知识
鉴于项目部署已经全面使用docker,故准备将mongodb集群放在容器中
系统:
cat /etc/issue Ubuntu 16.04.2 LTS \n \l
宿主环境是ubuntu 16.04.2
docker的相关安装不在介绍,docker-compose相关也不在介绍有兴趣的小伙伴可以自行查阅资料。
-----------------------------------------------------------相关背景知识------------------------------------------------------------------
MongoDB复制集由一组MongoDB实例节点组成,包含一个Primary节点、多个Secondary节点。
客户端写入的数据会被写入Primary节点,Secondary节点从Primary节点自动同步数据,保持所有成员的数据相同,提供数据库的高可用性
MongoDB复制集的配置非常简单,只需要指定复制集中包含哪些节点就好了
不需要我们指定哪个节点是Primary,会自动选举出来,其他节点便成为Secondary,自动与Primary同步,当Primary坏掉后,也会自动从多个Secondary中重新选举出Primary
下面使用Docker的MongoDB镜像创建3个MongoDB实例,配置成复制集,然后测试一下数据自动复制的情况,并模拟Primary坏掉的情况
好了,先用docker 安装好 mongo
docker pull mongo
直接下载官方latest版本就OK
-----------------------------------------------------------构建docker网络层------------------------------------------------------------
由于复制集合应该在docker中同属于一个网络层,所以我们先创建一个network,执行命令
docker network create mongo-cluster
查看网络层
docker network ls
如图所示:
-----------------------------------------------------------docker-compose构建-------------------------------------------------------
现在创建文件 docker-compose.yml
mongo-replica-1-1: image: 'mongo' net: 'mongo-cluster' ports: - '30001:27017' volumes: - '/root/mondodb-cluster/replica-1-1-data:/data/db' command: mongod --replSet mongo-repliset
mongo-replica-1-2: image: 'mongo' net: 'mongo-cluster' ports: - '30002:27017' command: mongod --replSet mongo-repliset
mongo-replica-1-3: image: 'mongo' net: 'mongo-cluster' ports: - '30003:27017' command: mongod --replSet mongo-repliset
注意复制节点是不需要挂载的,执行构建命令
docker-compose up -d docker-compose ps
可以看到:
三个mongo实例已经运行起来了
-----------------------------------------------------------添加配置信息-----------------------------------------------------------------
OK 实例已经建立,现在我们让mongo1成为primary
执行命令:
docker-compose exec mongo-replica-1-1 mongo
进入mongo1的mongod的shell控制台
config = { "_id" : "mongo-repliset", "members" : [ { "_id" : 0, "host" : "mondodbcluster_mongo-replica-1-1_1:27017" }, { "_id" : 1, "host" : "mondodbcluster_mongo-replica-1-2_1:27017" }, { "_id" : 2, "host" : "mondodbcluster_mongo-replica-1-3_1:27017" } ] }
注意哦,host是指在docker ps 下原本的container 名字,config 中第一个 key "_id" 的值 "mongo-repliset" 就是 启动容器时 --replSet 参数的值,"members" 指定了复制集成员的信息 ,继续执行命令
rs.initiate(config)
返回{"ok":1},则成功了,多敲几次回车键你会发现shell变为
ok,mongo1已经变为主节点了,写数据必须使用本节点
-----------------------------------------------------------验证复制集------------------------------------------------------------
好使用mongoBooster创建三个mongo的连接
ok,都连接成功
我们创建testDB及collection,最后插入几条数据,可以看到3个数据库均有数据
OK到此,数据一致性一验证成功
最后我们模拟当有一个节点,比如primary节点爆炸了的情况
docker-compose stop mongo-replica-1-1
现在进入mongo2容器
docker-compose exec mongo-replica-1-2 mongo
你可以在shell上看到mongo2变为primary,此节点变为了主节点,图就不截了。
至此你已经成功构建了一个mongodb副本集
但是到mongo集群还有很多东西需要处理,config集,路由集等等。博主也在学习。
相关推荐
在docker容器中安装的示例。 mongodb-org-shell ,包含mongo shell。 mongodb-org-tools ,包含以下MongoDB工具:mongoimport bsondump,mongodump,mongoexport,mongofiles,mongorestore,mongostat和mongotop。 ...
离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...
docker-compose 创建并运行 docker-compose up -d 停止docker docker-compose stop 删除docker docker-compose rm --all
libnvidia-container-tools-1.0.2-1.x86_64.rpm libnvidia-container1-1.0.2-1.x86_64.rpm nvidia-container-runtime-2.0.0-3.docker18.09.6.x86_64.rpm nvidia-container-runtime-hook-1.4.0-2.x86_64.rpm nvidia-...
带有Docker Compose的演示Mongo分片集群 PSS样式(小学-中学-中学) 需要PSA吗? 检查 警告(Windows和OS X) Windows和OS X上的默认Docker设置使用VirtualBox VM托管Docker守护程序。 不幸的是,VirtualBox用于在...
docker-compose-Linux-x86-64
群晖旧版DOCKER
自带dsm的17版本(低版本) 安装ddsm使用 ,洗白白用。
centos6 不再支持直接使用yum安装, 可使用rpm包的安装低版本docker方式, docker 1.7.1
第四章:Docker容器升华--swarm集群一、Docker Swarm集群概述;二、Docker Swarm核心架构;三、案例:实现Docker Swarm
群辉 docker 还有dsm的17版本(低版本) 安装ddsm使用
下载后解压rar,将内部的docker-compose-Linux-x86_64上传到服务器指定目录。 重命名:mv docker-compose-Linux-x86_64 docker-compose 授予可执行权限:chmod +x docker-compose 查看版本,验证安装成功:docker-...
使用python脚本和docker部署mongodb集群, 支持多种角色, 并且支持, 复制集群和分片集群. 具体参数配置看脚本
从Github上下载下来的最新1.25.4的docker-compose-Linux-x86_64........
此docker文件为MongoDB-Azure-Ansible创建docker映像,该镜像通过Windows Azure Cloud创建和配置MongoDB群集,使用MongoDB管理服务或(MMS)来管理备份和还原过程,并使用NewRelic监视工具来跟踪运行的服务MongoDB...
ubuntu docker 下mongodb集群和分片.rar
在arm版本的服务器上可用的docker-compose, 可执行文件
docker-ce-17.03.2.ce-1.el7.centos.x86_64 Centos7 离线安装包和依赖包、 audit-libs-python-2.7.6-3.el7.x86_64.rpm checkpolicy-2.5-4.el7.x86_64.rpm docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm docker-ce-...
docker-compose-window-2.14.2.exe免费下载
docker-compose部署xxl-job方案