docker-compose 搭建 mongo 4.4.2 集群

mkdir -p /data/docker-compose/mongodb/conf && cd /data/docker-compose/mongodb/

# 生成 auth.key, 用于多节点之间的认证
openssl  rand -base64  756  > ./conf/auth.key
chmod 600 ./conf/auth.key
chown -R 999.999 conf

docker-compose.yml

version: '3.4'
services:
  mongo1:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo1_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb1
    command: mongod --port 27017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root

  mongo2:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo2_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb2
    command: mongod --port 37017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always

  mongo3:
    image: mongo:4.4.2
    network_mode: "host"
    volumes:
      - ./mongo3_data:/data/db
      - ./conf:/conf
      - /etc/localtime:/etc/localtime
    container_name: mongodb3
    command: mongod --port 47017 --replSet rs --wiredTigerCacheSizeGB 1 --keyFile /conf/auth.key 
    restart: always

启动和设置集群

docker-compose up -d


# 进入容器
docker exec -it mongodb1 /bin/bash

# 连接mongo, 进行认证
mongo 

use admin

db.auth("root","root")

# 设置集群,ip 根据自身情况设置
var config={
     _id:"rs",
     members:[
         {_id:0,host:"172.16.16.109:27017"},
         {_id:1,host:"172.16.16.109:37017"},
         {_id:2,host:"172.16.16.109:47017"}
]};

# 启动副本集
rs.initiate(config)

# 显示副本集配置对象
rs.conf()

# 查看副本集的当前状态
rs.status()

# 设置用户密码
use admin

db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

db.createUser({user: "root",pwd: "root", roles: [ { role: "root", db: "admin" } ]})

show users

 

posted @ 2022-11-30 15:01  浅笑19  阅读(267)  评论(0编辑  收藏  举报