MongoDB 集群部署

MongoDB 集群部署

环境

系统:CentOS 7

主机 端口 角色
192.168.93.100 27017 master
192.168.93.101 27017 slave
192.168.93.102 27017 arditer

镜像拉取

docker pull mongo:4.4

挂载目录

# 配置文件地址
mkdir -p /data/mongodb/configdb
# db 存放地址
mkdir -p /data/mongodb/db

创建配置文件

vi /data/mongodb/configdb/mongod.conf

mongod.conf

net:
port: "27017" # 启动端口
bindIp: "0.0.0.0 " # 允许连接的 IP
systemLog:
logAppend: "true" # 重新启动 mongodb 的时候日志拼接在以前的日志文件上
security:
keyFile: "/data/configdb/mongodb-keyfile" # 路径是容器映射到宿主机的路径
authorization: "enabled" # 开启客户端连接认证,disabled 关闭授权
replication:
replSetName: "mongo_rs"

生成 keyfile 文件

openssl rand -base64 745 > /data/mongodb/configdb/mongodb-keyfile
chmod 400 /data/mongodb/configdb/mongodb-keyfile
# 一个节点生成后,复制到另外两个节点对应的位置
scp mongodb-keyfile root@192.168.93.101:/data/mongodb/configdb/
scp mongodb-keyfile root@192.168.93.102:/data/mongodb/configdb/

启动容器

# -i 保持容器的标准输入打开
docker run -di \
-p 27017:27017 \
-v /data/mongodb/configdb:/data/configdb \
-v /data/mongodb/db:/data/db \
mongo:4.4 -f /data/configdb/mongod.conf

添加主节点副本集

# 进入主节点
docker exec -it ea0ed200a28f mongo admin
# 添加主节点副本集
rs.initiate({
_id: "mongo_rs",
members: [{
_id: 0,
host: "192.168.93.100:27017"
}]
});

添加超户

# 进入主节点
docker exec -it ea0ed200a28f mongo admin
# 添加超户
db.createUser({
user: "admin",
pwd: "123456",
roles: [{
role: "root",
db: "admin"
}]
});

添加其它副本集

# 进入主节点
docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin
rs.add("192.168.93.101:27017");
rs.addArb("192.168.93.102:27017");

添加普通账号

# 进入主节点
docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin
# 创建并切换至 test 数据库
use test;
# 添加普通账号
db.createUser({
user: "lsy",
pwd: "123456",
roles: [{
role: "readWrite",
db: "test"
},{
role: "dbAdmin",
db: "test"
},{
role: "userAdmin",
db: "test"
}]
});

查看集群状态

# 进入主节点
docker exec -it ea0ed200a28f mongo -u admin -p 123456 --port 27017 admin
use admin;
rs.status();

参考

docker 部署mongodb集群(主、从、仲裁) - ①尘不染 - 博客园 (cnblogs.com)

posted @   Wndexx  阅读(14)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示