当前位置: 首页 > wzjs >正文

闲置tp路由自己做网站化妆培训

闲置tp路由自己做网站,化妆培训,网站建设企业的市场分析,三五做网站实验目的 掌握 Docker 容器化部署 MongoDB 副本集 的方法 理解 主从同步、故障转移、数据一致性 等核心机制 熟悉 MongoDB 集群管理命令 和 运维监控技巧 🔧 实验环境 操作系统: Rocky Linux 9 / CentOS 7 软件依赖: Docker 20.10 docker-compose 1.29 硬件要…

实验目的

  1. 掌握 Docker 容器化部署 MongoDB 副本集 的方法

  2. 理解 主从同步、故障转移、数据一致性 等核心机制

  3. 熟悉 MongoDB 集群管理命令 和 运维监控技巧


🔧 实验环境

  • 操作系统: Rocky Linux 9 / CentOS 7+

  • 软件依赖:

    • Docker 20.10+

    • docker-compose 1.29+

  • 硬件要求:

    • 最低配置: 2核CPU / 4GB内存 / 20GB磁盘

    • 推荐配置: 4核CPU / 8GB内存 (用于模拟多节点)

1. 环境准备

# 创建目录结构
mkdir -p mongo-com/{data/primary,data/secondary,data/arbiter,keys}
cd mongo-com# 生成密钥文件(容器内外权限一致)
openssl rand -base64 756 > keys/mongodb-keyfile
chmod 400 keys/mongodb-keyfile
chown 999:999 keys/mongodb-keyfile  # MongoDB容器默认用户

2. 编写 docker-compose.yaml

version: '3.8'services:mongo-primary:image: mongo:6.0container_name: mongo-primarycommand: mongod --auth --keyFile /keys/mongodb-keyfile --replSet rs2 --bind_ip_all --oplogSize 1024ports:- "27017:27017"volumes:- ./data/primary:/data/db- ./keys:/keysenvironment:MONGO_INITDB_ROOT_USERNAME: adminMONGO_INITDB_ROOT_PASSWORD: admin123user: "999:999"healthcheck:test: mongosh -u admin -p admin123 --eval "db.adminCommand('ping')"interval: 10stimeout: 5smongo-secondary:image: mongo:6.0container_name: mongo-secondarycommand: mongod --auth --keyFile /keys/mongodb-keyfile --replSet rs2 --bind_ip_allports:- "27018:27017"volumes:- ./data/secondary:/data/db- ./keys:/keysenvironment:MONGO_INITDB_ROOT_USERNAME: adminMONGO_INITDB_ROOT_PASSWORD: admin123user: "999:999"depends_on:mongo-primary:condition: service_healthymongo-arbiter:image: mongo:6.0container_name: mongo-arbitercommand: mongod --auth --keyFile /keys/mongodb-keyfile --replSet rs2 --bind_ip_allvolumes:- ./keys:/keys- ./data/arbiter:/data/dbuser: "999:999"depends_on:mongo-primary:condition: service_healthy

3. 启动容器集群

# 启动服务(自动等待主节点健康)
docker-compose up -d
若报错如下,可从以下问题排除

(1)查看错误详情(关键步骤)

docker logs mongo-primary  # 查看具体错误原因

(2)常见原因及解决方案

🔴 问题1:密钥文件权限错误

# 在宿主机检查密钥文件权限
ls -l keys/mongodb-keyfile
# 必须显示: -r-------- 1 999 999

修复命令:

chmod 400 keys/mongodb-keyfile
chown 999:999 keys/mongodb-keyfile

🔴 问题2:数据目录权限问题

# 检查数据目录所有权
ls -ld data/primary/
# 应显示: drwxr-xr-x 2 999 999

修复命令:

sudo chown -R 999:999 data/
sudo chmod -R 700 data/

🔴 问题3:端口冲突

# 检查27017端口占用
sudo netstat -tulnp | grep 27017

解决方案:

  • 停止占用进程:sudo systemctl stop mongod

  • 或修改 docker-compose.yaml 中的端口映射(如 27027:27017

3. 强制清理并重启

# 彻底清理旧容器
docker-compose down -v
sudo rm -rf data/primary/*

# 重新启动
docker-compose up -d

# 检查状态(所有容器应为healthy) watch -n 1 'docker-compose ps'


4. 初始化副本集(一键脚本)

docker exec mongo-primary mongosh -u admin -p admin123 --eval '
rs.initiate({_id: "rs2",members: [{ _id: 0, host: "mongo-primary:27017", priority: 2 },{ _id: 1, host: "mongo-secondary:27017", priority: 1 },{ _id: 2, host: "mongo-arbiter:27017", arbiterOnly: true }],settings: {heartbeatTimeoutSecs: 10,electionTimeoutMillis: 10000,chainingAllowed: false}
})'

# 等待10秒后检查状态
sleep 10 && docker exec mongo-primary mongosh -u admin -p admin123 --eval 'rs.status()'

5. 数据同步验证

# 主节点插入数据
docker exec mongo-primary mongosh -u admin -p admin123 --eval '
db.test.insertOne({_id: "cluster-test",message: "副本集同步验证",timestamp: new Date()
})'# 从节点查询(自动等待同步)
docker exec mongo-secondary mongosh -u admin -p admin123 --eval '
rs.secondaryOk();
db.test.find().readPref("secondary");'

6. 故障转移测试

# 模拟主节点宕机
docker pause mongo-primary# 观察选举(从节点窗口执行)
docker logs -f mongo-secondary | grep -E "ELECT|stepdown"

# 恢复原主节点
docker unpause mongo-primary# 验证角色切换
docker exec mongo-primary mongosh -u admin -p admin123 --eval 'rs.isMaster()'

✅ 验证要点

项目预期结果验证命令
副本集状态所有节点 health:1rs.status()
主从角色主节点 PRIMARY,从节点 SECONDARYrs.isMaster()
数据同步从节点能查询到主节点插入的数据db.test.find()
故障转移主节点宕机后从节点升主docker logs 观察选举日志

⚠️ 常见问题处理

  1. 容器启动失败

    # 检查日志
    docker-compose logs mongo-primary# 常见修复
    chown -R 999:999 data/ keys/
  2. 节点无法加入副本集

    # 强制重新配置
    docker exec mongo-primary mongosh -u admin -p admin123 --eval '
    rs.reconfig({_id:"rs2",members:[]},{force:true})'
  3. 认证失败

    # 确保密钥文件一致
    docker exec mongo-primary cat /keys/mongodb-keyfile | md5sum

通过以上流程,您将在 10分钟内 完成一个高可用的 MongoDB 副本集部署。所有步骤已在全新 CentOS/Rocky Linux 机器上验证通过。

http://www.dtcms.com/wzjs/323721.html

相关文章:

  • 做网站和做软件一样吗百度商家平台客服电话
  • 个人门户网站模板下载全网最低价24小时自助下单平台
  • 微信网站建设公司首选十大网络推广公司排名
  • 网站文章编辑网店营销策略有哪些
  • 访问国外网站速度慢百度ai开放平台
  • 网站做百度联盟收入已经很低了seo怎么学在哪里学
  • 网站设计轮播图需要吗外链百科
  • 律师做网络推广最好的网站有哪些线下营销方式主要有哪些
  • 凡科免费建站靠谱吗网络营销的方法包括哪些
  • 关于重新建设网站的申请站外推广怎么做
  • 电子网站建设怎么做广州各区进一步强化
  • 知乎问答网站开发教程外贸网站制作推广
  • 西藏自治区住房和城乡建设厅网站首页sku电商是什么意思
  • 找网络公司做网站需要注意什么西安seo优化工作室
  • 郑州做网站免费网站安全软件大全游戏
  • 怎么学做电商安徽网络推广和优化
  • 品牌vi设计全套通州优化公司
  • 东莞营销型网站建设流程新余seo
  • 企业申报网站百度推广视频
  • 伦敦做网站市场调研报告范文模板
  • 做博客网站什么空间好汕头seo
  • 哪有做企业网站360收录查询
  • 公司网站开发排名上海网站排名seo公司哪家好
  • 中国十大品牌策划公司seo搜索引擎优化怎么优化
  • 夜晚十大禁用直播app推广优化方案
  • 怎么做高保真网站广州推广引流公司
  • 刷赞网站推广qq免费seo自然排名关键词来源的优缺点
  • 自己开发电商网站难吗怎么创建网页
  • 招聘网站开发实训报告网络营销策划的方法
  • 主营 网站建设 app开发哪家培训机构好