mogodb 集群部署

介绍:通过单个服务器部署的伪集群,采用不同的端口号模拟正式环境的多个节点,借助docker-compose快速搭建环境。

一. 三节点副本集(一主一从一仲裁)
172.16.7.108:27018 主节点
172.16.7.108:27019 从节点
172.16.7.108:27020 仲裁节点

二. 搭建流程

  1. 生成mongodb.key
openssl rand -base64 756 -out mongodb.key
  1. 编写docker-compose.yml
version: '3.1'
services:
  mongodb-primary:
    image: mongo:5.0
    restart: always
    container_name: mongodb-primary
    privileged: true   #开启权限
    volumes:
      - ./data/primary/db:/data/db
      - ./data/primary/configdb:/data/configdb
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27018:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
  mongodb-secondary:
    image: mongo:5.0
    restart: always
    container_name: mongodb-secondary
    privileged: true   #开启权限
    volumes:
      - ./data/secondary/db:/data/db
      - ./data/secondary/configdb:/data/configdb
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27019:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@
  mongodb-arbiter:
    image: mongo:5.0
    restart: always
    container_name: mongodb-arbiter
    privileged: true
    volumes:
      - ./data/arbiter/db:/data/db
      - ./data/arbiter/configdb:/data/configdb
      - ./mongodb.key:/data/mongodb.key
    ports:
      - 27020:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@

  1. 修改容器配置
    启动并进入容器:docker exec -it mongodb-primary /bin/bash
    (1)初始化mongo集群
mongo -u root -p 123456
   rs.initiate({_id:"mongos",members:[{_id:0,host:"172.16.7.108:27018"},{_id:1,host:"172.16.7.108:27019"},{_id:2,host:"172.16.7.108:27020",arbiterOnly:true}]})

(2)开启备机可读

   rs.secondaryOk()

(3)增加mongodb-primary权重

   config = rs.conf()
  config.members[0].priority=2

(4)配置生效

  rs.reconfig(config)

(5)查看配置

  rs.conf()

(6)退出容器

三. 测试
使用Studio 3T 连接集群
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看节点情况
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值