0
点赞
收藏
分享

微信扫一扫

搭建mongo副本集

南陵王梁枫 2023-08-16 阅读 74

1. 下载镜像

docker pull mongo:6.0.8

2. 在 /data/mongodb 目录下新建 mongodb-1、mongodb-2、mongodb-3 三个文件夹

3. 生成keyfile文件

# 400权限是要保证安全性,否则mongod启动会报错
openssl rand -base64 756 > mongodb.key
chown 999:999 mongodb.key

将生成的mongodb.key文件分别复制到mongodb-1、mongodb-2、mongodb-3 三个文件夹

4. 在/data/mongodb目录下新建docker-compose.yml文件,内容如下:

version: '3.3'

services:
  mongodb1:
    image: mongo:6.0.8
    volumes:
      - /data/mongodb/mongodb-1:/data/db
      - /data/mongodb/mongodb-1/mongodb.key:/data/mongodb.key
    user: root
    environment:
     - MONGO_INITDB_ROOT_USERNAME=root
     - MONGO_INITDB_ROOT_PASSWORD=admin
    container_name: mongodb1
    ports:
      - 37017:27017
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    restart: always
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@


  mongodb2:
    image: mongo:6.0.8
    volumes:
      - /data/mongodb/mongodb-2:/data/db
      - /data/mongodb/mongodb-2/mongodb.key:/data/mongodb.key
    user: root
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=admin
    container_name: mongodb2
    ports:
      - 37018:27017
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    restart: always
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@


  mongodb3:
    image: mongo:6.0.8
    volumes:
      - /data/mongodb/mongodb-3:/data/db
      - /data/mongodb/mongodb-3/mongodb.key:/data/mongodb.key
    user: root
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=admin
    container_name: mongodb3
    ports:
      - 37019:27017
    command: mongod --replSet mongos --keyFile /data/mongodb.key
    restart: always
    entrypoint:
      - bash
      - -c
      - |
        chmod 400 /data/mongodb.key
        chown 999:999 /data/mongodb.key
        exec docker-entrypoint.sh $$@

5. 启动容器

# 后台启动并运行所有容器
docker-compose up -d 

image.png

6. 查看容器启动情况

docker ps | grep mongo
或者
# 查看运行的容器
docker ps 

image.png

7. 进入容器

docker exec -it mongodb1 /bin/bash

执行mongod --version image.png 说明启动成功

#连接mongo
mongosh -u root -p admin

注意:MongoDB 6.0全面弃用了mongo而使用mongosh

8. 执行初始化

# 需将IP替换成自己的主机IP
rs.initiate({ _id: "mongos", members: [  
   { _id : 0, host : "IP:37017" },  
   { _id : 1, host : "IP:37018" },  
   { _id : 2, host : "IP:37019" },
	]})

9. 查看状态

rs.status()

image.png

举报

相关推荐

0 条评论