惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 最新话题
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
T
Tenable Blog
T
Threatpost
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
Security Latest
Security Latest
P
Privacy & Cybersecurity Law Blog
Google Online Security Blog
Google Online Security Blog
SecWiki News
SecWiki News
P
Palo Alto Networks Blog
TaoSecurity Blog
TaoSecurity Blog
Webroot Blog
Webroot Blog
Spread Privacy
Spread Privacy
O
OpenAI News
The Last Watchdog
The Last Watchdog
P
Proofpoint News Feed
C
Check Point Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
人人都是产品经理
人人都是产品经理
S
Security @ Cisco Blogs
Scott Helme
Scott Helme
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
月光博客
月光博客
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
T
Troy Hunt's Blog
W
WeLiveSecurity
GbyAI
GbyAI
N
News | PayPal Newsroom
Y
Y Combinator Blog
C
Cisco Blogs
H
Help Net Security
The GitHub Blog
The GitHub Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 【当耐特】
Jina AI
Jina AI
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
云风的 BLOG
云风的 BLOG
小众软件
小众软件
N
News and Events Feed by Topic

博客园 - py哥

rabbitmq集群docker部署 MySQL8.0单实例部署 prometheus 监控 eureka 里面的服务状态 Redis管理平台 k8s网络与本地开发环境网络互通方案 CentOS7 FTP结合ssl/tls实现加密通信安装与配置 数据库运维平台 基于Docker构建Jenkins CI平台 KeepLived + nginx 高可用 k8s-1.16 二进制安装 Ansible自动化部署K8S集群 Kubernetes1.16下部署Prometheus+node-exporter+Grafana+AlertManager 监控系统 在Kubernetes下部署Prometheus docker部署coredns kubeadm部署多master节点高可用k8s1.16.2 二进制搭建一个完整的K8S集群部署文档 kubeadm部署k8s集群 Keepalived+LVS+nginx搭建nginx高可用集群 centos7 dns(bind)安装配置
MongoDB副本集docker部署
py哥 · 2026-01-27 · via 博客园 - py哥

#MongoDB副本集部署(192.168.0.74主 192.168.0.79备 192.168.0.76仲裁 )
#准备目录(主备节点),在2台机器上都执行下面的命令
# 数据文件
mkdir -p /data/mongo/data
# 日志文件
mkdir -p /data/mongo/log
# 配置文件
mkdir -p /data/mongo/conf
# key文件
mkdir -p /data/mongo/key
#准备配置文件,在2台机器上都执行
cd /data/mongo/conf
vi mongo.conf
storage:
wiredTiger:
engineConfig:
# mongodb内存上限的80%
configString : cache_size=1024m
net:
#启动端口
port: 27017
#允许连接的IP(0.0.0.0作用与--bind_ip_all类似)
bindIp: 0.0.0.0
systemLog:
#重新启动mongodb的时候日志拼接在以前的日志文件上
logAppend: true
security:
#路径是容器内的路径
keyFile: "/data/mongodbKey.key"
#开启客户端连接认证 disabled 关闭授权
authorization: "enabled"
replication:
replSetName: "mongo"
#在仲裁上准备对应的仲裁节点的路径
# 数据文件
mkdir -p /data/mongo-arbiter-el/data
# 日志文件
mkdir -p /data/mongo-arbiter-el/log
# 配置文件
mkdir -p /data/mongo-arbiter-el/conf
# key文件
mkdir -p /data/mongo-arbiter-el/key
#准备仲裁节点配置文件
cd /data/mongo-arbiter-el/conf
vi mongo.conf
net:
#启动端口
port: 27017
#允许连接的IP(0.0.0.0作用与--bind_ip_all类似)
bindIp: 0.0.0.0
systemLog:
#重新启动mongodb的时候日志拼接在以前的日志文件上
logAppend: true
security:
#路径是容器内的路径
keyFile: "/data/mongodbKey.key"
#开启客户端连接认证 disabled 关闭授权
authorization: "enabled"
replication:
replSetName: "mongo"
#准备KEY文件,在主机器上执行后COPY到从机器
cd /data/mongo/key
# 生成key文件
openssl rand -base64 756 > mongodbKey.key
# key文件必须设置成400,否则将会失败(设置成其他都会失败了,不知道是不是这个权限问题)
chmod 400 mongodbKey.key
# 赋予容器内key权限(主从仲裁节点都需要执行)
chown 999:999 mongodbKey.key
#将mongodbKey.key分别复制到机器B的 /usr/local/mongo/key 和 /usr/local/mongo-arbiter/key 路径下
sudo scp /data/mongo/key/mongodbKey.key root@192.168.0.79:/data/mongo/key
sudo scp /data/mongo/key/mongodbKey.key root@192.168.0.76:/data/mongo-arbiter-el/key
#并分别进入/data/mongo/key 和/data/mongo-arbiter-el/key 路径下给mongodbKey.key授予权限
chmod 400 mongodbKey.key
chown 999:999 mongodbKey.key
#主节点
docker run -di -p 27017:27017 -e TZ=Asia/Shanghai --restart always \
-v /data/mongo/conf/:/data/conf \
-v /data/mongo/data/:/data/db \
-v /data/mongo/log:/data/log \
-v /data/mongo/key/mongodbKey.key:/data/mongodbKey.key \
--name mongo_master \
public.ecr.aws/docker/library/mongo:8.0.17 --auth \
--replSet "mongo" \
--bind_ip_all -f /data/conf/mongo.conf
#从节点
# mongo从节点
docker run -di -p 27017:27017 -e TZ=Asia/Shanghai --restart always \
-v /data/mongo/conf/:/data/conf \
-v /data/mongo/data/:/data/db \
-v /data/mongo/log:/data/log \
-v /data/mongo/key/mongodbKey.key:/data/mongodbKey.key \
--name mongo_slave public.ecr.aws/docker/library/mongo:8.0.17 --auth \
--replSet "mongo" \
--bind_ip_all -f /data/conf/mongo.conf
# 仲裁节点
docker run -di -p 27018:27017 -e TZ=Asia/Shanghai --restart always \
-v /data/mongo-arbiter-el/conf/:/data/conf \
-v /data/mongo-arbiter-el/data/:/data/db \
-v /data/mongo-arbiter-el/log:/data/log \
-v /data/mongo-arbiter-el/key/mongodbKey.key:/data/mongodbKey.key \
--name mongo_arbiter-el public.ecr.aws/docker/library/mongo:8.0.17 --auth \
--replSet "mongo" \
--bind_ip_all -f /data/conf/mongo.conf
docker container update mongo_arbiter-el --memory="1g" --memory-swap="1g"
docker stats
#初始化主从节点,在主机器上执行
# 进入容器中mongo客户端
docker exec -it mongo_master mongosh
# 带仲裁节点的初始化
# _id:"mongo",mongo为副本集名称(mongo.conf中的replSetName,注意保持一致),对应--replSet后的名称
# priority数值大的优先级高,即为默认主节点
config={
_id:"mongo",
members:[
{_id:0,host:"192.168.0.74:27017",priority:3},
{_id:1,host:"192.168.0.79:27017",priority:2},
{_id:2,host:'192.168.0.76:27018',arbiterOnly:true}
]
}
#初始化
rs.initiate(config)
# 初始化完成后可以查看状态
rs.status()
#创建用户名密码
docker exec -it mongo_master mongo
#切换至admin
use admin
#添加用户
db.createUser({user:'admin',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'root',db:'admin'}]})
#登录
db.auth('admin','123456')


#初始化数据库

use test
db.createUser({
user: "admin",
pwd: "123456",
roles: [{ role: "readWrite", db: "test" }]
})