最近准备自学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。 ...
1、上传文件到/data/docker-ce解压,或者任意目录后修改docker-ce-26.1.0.repo 中baseurl路径。 2、mv docker-ce-26.1.0.repo /etc/yum.repo.d/ 3、安装docker yum install docker-ce-26.1.0 4、或更新版本 yum ...
标题中的“群晖 Docker-x64-17.05.0-0400.spk”指的是群晖NAS(Network Attached Storage)系统上的Docker软件包,适用于64位架构,版本号为17.05.0,且带有修订版号0400。这个SPK文件是群晖系统专用的软件安装包...
离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...
toolkit_1.5.1-1_amd64.deb nvidia-docker2_2.6.0-1_all.deb 2)docker:containerd.io_1.6.26-1_amd64.deb,docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb,docker-ce_24.0.7-1~ubuntu.20.04~focal_...
docker 安装mongodb的docker-dompose.yml
docker-compose 创建并运行 docker-compose up -d 停止docker docker-compose stop 删除docker docker-compose rm --all
带有Docker Compose的演示Mongo分片集群 PSS样式(小学-中学-中学) 需要PSA吗? 检查 警告(Windows和OS X) Windows和OS X上的默认Docker设置使用VirtualBox VM托管Docker守护程序。 不幸的是,VirtualBox用于在...
$mv docker-compose-Linux-x86_64 docker-compose $chmod +x docker-compose $docker-compose version --------------------------------------------------------------- docker-compose version 1.24.0, build 0...
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行...
docker-compose-Linux-x86-64
群晖旧版DOCKER
这里准备了一份docker-ce-v18的离线包供下载。 也可以自己手动下载最新包,下载方法如下: mkdir /apps/docker-ce-v18 yum install --downloadonly --downloaddir=/apps/docker-ce-v18 \ yum-utils device-...
群辉 docker 还有dsm的17版本(低版本) 安装ddsm使用
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-...
centos6 不再支持直接使用yum安装, 可使用rpm包的安装低版本docker方式, docker 1.7.1
1. **初始化集群**:在一台主机上执行 `docker swarm init` 命令,获取加入集群所需的 token。 2. **加入集群**:其他主机使用 `docker swarm join` 命令,用管理节点的 token 和 IP 加入集群。 3. **检查集群状态**...
用法选择集群的节点数(至少 6 个)启动集群docker-compose up -d --scale redis=9docker-compose logs -f这需要一点时间。删除容器docker-compose rm -f使用Reddie导航至https://localhost访问 Reddie。
docker-compose v2.17.2
使用python脚本和docker部署mongodb集群, 支持多种角色, 并且支持, 复制集群和分片集群. 具体参数配置看脚本