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
原来的 27017 端口被占用情况下的办法


浙公网安备 33010602011771号