Docker 搭建MongoDB 4.0副本集_shizhengju的博客-程序员秘密

技术标签: mongo  Docker  MongoDB  docker  docker mongo  

一、安装docker、docker-compose

1、不会安装docker的请移步----》centos7安装docker  Ubantu16.04安装docker

2、安装docker-compose(Centos7环境无pip的----》centos7安装pip2)

pip install docker-compose

二、创建副本集所需的key

mkdir mongod && cd mongod

openssl rand -base64 756 > mongo.key

docker volume create mongod_mongo_key

MONGO_KEY_DIR=`docker volume inspect mongod_mongo_key | grep Mount | sed -r 's#.*"(.*)",$#\1#'`

cp mongo.key $MONGO_KEY_DIR

chmod 400 $MONGO_KEY_DIR/mongo.key

chown 999.999 $MONGO_KEY_DIR/mongo.key

mkdir /data/mongo/mongdb{1..3} -pv

三、创建docker-compose文件

#映射/data/mongo/mongdb{1,2,3}目录到容器里,将数据持久化到磁盘
#映射出三个端口,以便外部用户连接
#MONGO_INITDB_ROOT_USERNAME:管理员用户的账号
#MONGO_INITDB_ROOT_PASSWORD:管理员用户的密码

cat << EOF > docker-compose.yaml
version: "3.7"
services:
  mongodb1:
    image: mongo:4.0.3
    container_name: mongodb1
    networks:
      - mongodb
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=123456x
    volumes:
      - /data/mongo/mongdb1:/data/db
      - mongo_key:/mongo
    command: ["mongod","--replSet","BigBoss","--keyFile","/mongo/mongo.key","--directoryperdb"]

  mongodb2:
    image: mongo:4.0.3
    container_name: mongodb2
    networks:
      - mongodb
    ports:
      - "27018:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=123456x
    volumes:
      - /data/mongo/mongdb2:/data/db
      - mongo_key:/mongo
    command: ["mongod","--replSet","BigBoss","--keyFile","/mongo/mongo.key","--directoryperdb"]

  mongodb3:
    image: mongo:4.0.3
    container_name: mongodb3
    networks:
      - mongodb
    ports:
      - "27019:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=123456x
    volumes:
      - /data/mongo/mongdb3:/data/db
      - mongo_key:/mongo
    command: ["mongod","--replSet","BigBoss","--keyFile","/mongo/mongo.key","--directoryperdb"]

networks:
  mongodb:
    driver: bridge
    name: mongodb

volumes:
  mongo_key:
EOF

四、启动副本集

1、拉取mongo4.0的镜像

docker pull mongo:4.0.3

我这失败了一次,后面查了一下mongo镜像docker search mongo,docker官网是有这个镜像的,然后有拉取了一次

2、执行docker-compose文件,在docker-compose.yaml同级目录下执行

docker-compose up -d

3、连接mongodb1容器,开始配置集群

docker exec -it mongodb1 mongo -uroot -p123456x --authenticationDatabase admin

#三节点,其中一个为投票节点,并隐藏
#注意host的IP地址,一定要让客户端也能连接所有的地址
#_id的值为--replSet参数后的字符串

rs.initiate(
{
  _id: "BigBoss",
  version: 1,
  protocolVersion: 1,
  writeConcernMajorityJournalDefault: true,
  members: [
    {
      _id: 0,
      host: "mongodb1:27017",
      arbiterOnly: false,
      buildIndexes: true,
      hidden: false,
      priority: 66,
      tags: {
        BigBoss: "YES"
      },
      slaveDelay: 0,
      votes: 1
    },
    {
      _id: 1,
      host: "mongodb2:27017",
      arbiterOnly: false,
      buildIndexes: true,
      hidden: false,
      priority: 55,
      tags: {
        BigBoss: "NO"
      },
      slaveDelay: 0,
      votes: 1
    },
    {
      _id: 2,
      host: "mongodb3:27017",
      arbiterOnly: true,
      buildIndexes: true,
      hidden: true,
      priority: 0,
      tags: {
      },
      slaveDelay: 0,
      votes: 1
    }
  ],
  settings: {
    chainingAllowed : true,
  }
}
)

4、查看状态

rs.status()

五、检测

1、进入mongodb2容器中

docker exec -it mongodb2 mongo -uroot -p123456x --authenticationDatabase admin

2、停止PRIMARY的容器

docker stop mongodb1

3、连接mongdb2容器查看状态是否改变

docker exec -it mongodb2 mongo -uroot -p123456x --authenticationDatabase admin

MongoDB4.0副本集搭建完毕

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aafeiyang/article/details/103084211

智能推荐

导入项目后,所有的import全部爆红,而且mian后面一个main1,main2等等,,,_谁人不识我千夜的博客-程序员秘密

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种情况下的话,肯定搞过这个项目不止一次,然后idea里面有缓存(我试过清缓存的方式请不掉),这时候导入项目的时候如果你没有进行指定的话,默认main都成了main1了,main2等等,,,而且所有的import全部爆红,每个类都需要打开一下手动重新导入,但是这样子太麻烦了解决方案1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;打开项

C语言的关键字,运算符,标识符_weixin_34007879的博客-程序员秘密

关键字数据类型修饰相关auto按照自动的方式进行变量的存储const定义常量或常参数extern声明外部变量或函数register指定变量的存储类型是寄存器变量static指定变量的存储类型是静态变量,或指定函数是静态函数volatile变量的值可能在程序的外部被改变数据类型相关char字符型数据short定义短整型变量或指针int整型数据long长整型数据signed有...

JAVA基础WEB阶段第 十 一 天——tomcat+servlet | 运用【servlet+tomcat+jdbc+mysql】实现用户的登录校验案例_大数据架构师Pony的博客-程序员秘密

JAVA需求:运用servlet实现用户的登录校验案例项目结构如下:一.准备工作 jar包 : mysql.jar c3p0.jar (web,jar复制的时候放到WEB-INF/lib) 配置文件: c3p0-config.xml (src下) web.xml 包结构 : com.itheima.web com.itheima....

如何用java开发一个网站?_java开发网站_ychenjava的博客-程序员秘密

问题:如何用java开发一个网站?下载了最新的JDK软件、最新的Eclipse、数据库mysql以及tomcat、struts但是不知道怎么连接起来,在数据库连接的时候mysql-connector-java-5.1.44中没有Driver.jar,tomcat配置环境的时候也有问题,tomcat plugin没有和最新的JDK配套的怎么办?看了问题,我建议题主还是好好先学一轮基础的东西。基于问题我简单提几点:Eclipse是开发工具,最新的没问题。JDK其实不需要用最新,现在市面上大多数还是JDK

RouterOS防火墙_superXX07的博客-程序员秘密

/ip firewall filter add chain=input connection-state=invalid action=drop comment="丢弃非法连接数据" disabled=no/ip firewall filter add chain=input protocol=icmp action=drop comment="禁止外网Ping" disabled=no in-i...

南京宇航YHCNC FANUC2004 12操作说明书_software2017的博客-程序员秘密

宇航Fanuc与Siemens的车铣模拟机破解版 1CD宇航数控车铣网络版 1CD南京斯沃数控仿真SSCNC 6.40 1CDAutoSEA2 2004.v2.5.0.8-ISO 1CD(噪声和振动分析软件,它代表了统计能量分析(SEA)领域的最高水平)AutoSEA2 v2004 用户指南(英文) GridPro.v4.5

随便推点

Vue 3.0 遇到的问题_vue intlify_Rkatsiteli的博客-程序员秘密

Vue3.0 安装npm i [email protected] [email protected] install [email protected] i webpack webpack-cli webpack-dev-server --save-devtypescript安装依赖npm install ts-loader --save-devnpm install typescript --save-devnpm install @vue/babel-plugin-jsx -Dnpm i @babe

数据开发(三)_weixin_30341745的博客-程序员秘密

一、Hive概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据表,并提供类似于SQL(HiveSQL)的操作功能。在Hive中,本质上是将SQL转换成为MapReduce程序。二、1、建表语句CREATE TABLE `app.app_test`( `data_dt` string COMMENT '时间', `...

hql和sql的区别_hql语句和sql语句区别_是金子总会发光的博客-程序员秘密

hql没有delete和update 1、首先,hql是面向对象查询的;sql是面向数据库做查询。2、hql的语法结构:from  + 类名+类对象 +where+类对象属性的条件;      sql的语法结构:from  +数据库表名+ where +表字段条件3、新增:hql不需要再用insert语句,只需构造新增对象后调用save()方法4、修改:hql不需要再用up...

python 预测结果输出到CSV中_python随机森林预测结果导出csv_Angela Dong~诗的博客-程序员秘密

本文重点:将python的回归预测结果输出到CSV文件中学习机器学习已经三个月了,参加了一些比赛,也完成了一些任务,之前一直把遇到和解决的问题林林总总的积累到了OneNote中,随着内容的增多,越来越感受到了分类整理的重要性,这便是这第一篇博客的由来~这两天完成了kaggle的第一个比赛,结果又遵循了我一贯的风格,一个bug卡一天,哈哈哈!终于解决了结果输出的问题,遂于此文总结一下哈~欢迎...

python 将labelme标注的json文件批量转为txt文件_深度学习菜鸟的博客-程序员秘密

功能说明将labelme标注的json文件中的坐标和label信息提取到txt文件中注意:labelme标注时使用“polygon”即画点标注方式,不是“rectangle”和“circle”标注方式,每个点坐标包括x和y,所以总共输出8个坐标值和1个label值。json格式批量转换dir_json为json文件夹dir_txt为txt文件夹同级目录下创建json2txt.py文...

[IMWeb训练营作业]vuejs仿写朋友圈_vue.js 作业_普通网友的博客-程序员秘密

vuejs仿写朋友圈。* 将HTML中按逻辑切割成vue组件* 每个vue组件单独建立一个.vue文件* 实现父->子通信。如:将data通过props传到子组件,并按照存储逻辑分层渲染。* 实现子->父通信。如:子组件点赞后emit在父组件中显示点赞的效果。

推荐文章

热门文章

相关标签