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