环境准备
1、三台机器,安装好docker
2、时间同步配置
3、安装docker-compose
配置
1、生成同步用的key
mkdir mongo-cluster
openssl rand -base64 768 > mongo-repl.key
2、配置启动模板(每台机器都需要)
#cat docker-compose.yml
version: "3.3"
services:
mongodb_server:
image: mongo:4.4
command: mongod --serviceExecutor adaptive --replSet rs1 --port 27017 --keyFile /etc/mongo-repl.key
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin_user
- MONGO_INITDB_ROOT_PASSWORD=admin_pass
volumes:
- ./db:/data/db
- ./mongo-repl.key:/etc/mongo-repl.key
3、启动mongdb
docker-compose up -d
4、配置副本配置
#cat replication-init.js
db.auth('admin_user', 'admin_pass');
rs.initiate(
{_id: "rs1", version: 1,
members: [
{ _id: 0, host : "10.0.0.1:27017" },
{ _id: 1, host : "10.0.0.2:27017" },
{ _id: 2, host : "10.0.0.3:27017" }
]
}
);
###
docker run mongo:4.4 mongo --username admin_user --password admin_pass --host 10.0.0.1:27017 --authenticationDatabase admin admin --eval "$(< replication-init.js)"
docker run mongo:4.4 mongo --username admin_user --password admin_pass --host 10.0.0.1:27017 --authenticationDatabase admin admin --eval "rs.status()"
5、创建应用库
#cat cmdb-init.js
db.auth('admin_user', 'admin_pass');
db = db.getSiblingDB('cmdb');
db.createUser({
user: 'cc',
pwd: 'cc',
roles: [
{
role: 'dbOwner',
db: 'cmdb',
},
],
});
###
docker run mongo:4.4 mongo --username admin_user --password admin_pass --host 10.0.0.1:27017 --authenticationDatabase admin admin --eval "$(< cmdb-init.js)"