mongodb 8.0 集群部署

发布时间: 更新时间: 总字数:480 阅读时间:1m 作者: IP上海 分享 网址

使用 docker-compose 部署 mongodb 8.0 集群部署

步骤

openssl rand -base64 756 > mongodb.key

# 修改权限,否则mongod启动会报错
chmod 400 mongodb.key
  • docker-compose.yml
version: "3"

services:
  #主节点
  mongodb1:
    image: mongo:8.0.6-noble
    container_name: mongo1
    restart: always
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@123
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - ./mongo1/data:/data/db
      - ./mongo1/configdb:/data/configdb
      - ./mongo1/mongodb.key:/mongodb.key
    networks:
      - mongonet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
  # 副节点
  mongodb2:
    image: mongo:8.0.6-noble
    container_name: mongo2
    restart: always
    ports:
      - 27018:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@123
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - ./mongo2/data:/data/db
      - ./mongo2/configdb:/data/configdb
      - ./mongo2/mongodb.key:/mongodb.key
    networks:
      - mongonet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
  # 副节点
  mongodb3:
    image: mongo:8.0.6-noble
    container_name: mongo3
    restart: always
    ports:
      - 27019:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=mongodb@123
    command: mongod --replSet rs0 --keyFile /mongodb.key
    volumes:
      - /etc/localtime:/etc/localtime
      - ./mongo3/data:/data/db
      - ./mongo3/configdb:/data/configdb
      - ./mongo3/mongodb.key:/mongodb.key
    networks:
      - mongonet
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /mongodb.key
        chown 999:999 /mongodb.key
        exec docker-entrypoint.sh $$@
networks:
  mongonet:
    driver: bridge
  • 初始化目录
mkdir -pv ./mongo{1,2,3}/{data,configdb}

cp mongodb.key mongo1/
cp mongodb.key mongo2/
cp mongodb.key mongo3/

# 单节点
docker-compose up -d
# 多节点启动
docker-compose up -d mongodb1
docker-compose up -d mongodb2
docker-compose up -d mongodb3
  • 初始化集群

登录交互 shell

# 进入容器操作
docker exec -it mongo1 bash

# 登录mongo,mongodb 8 版本的 mongo shell 命令为 mongosh
mongosh -u root -p mongodb@123

# 或
$ docker exec -it mongo1 mongosh
> use admin
> db.auth('root', 'mongodb@123')

初始化集群

# 配置文件,注意修改ip,多节点需要修改ip和端口
> config={_id:"rs0",members:[
  {_id:0,host:"10.0.0.1:27017"},
  {_id:1,host:"10.0.0.1:27018"},
  {_id:2,host:"10.0.0.1:27019"}]
}

# 初始化集群
> rs.initiate(config)

# 增长 mongo1 和 mongo2 的权重
> cfg = rs.conf()

# 修改权重
> cfg.members[0].priority=5
> cfg.members[1].priority=3

# 从新配置
> rs.reconfig(cfg)

# 查看集群状态,一个 PRIMARY 两个 second
> rs.status()

扩展

F&Q

mongodb ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible.

容器间网络不通

参考

  1. https://www.cnblogs.com/evescn/p/16203350.html
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数