《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版分片集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》


一、部署背景

**由于业务系统的特殊性,我们需要面向不同客户环境部署定制化的系统实例。作为基础组件之一,MongoDB在各类客户现场需频繁 部署高可用分片集群。尤其在支持多种 CPU 架构 **(如 x86_64 和 ARM64)的场景下,手动部署不仅效率低下,还容易引发配置不一致等问题。

当前我们已采用 MongoDB 7.0.22 容器化版本,具备良好的可移植性与环境隔离能力。为进一步提升运维效率、降低人为错误风险,有必要开发一套 自动化部署工具,专门用于快速、可靠地构建跨架构(x86_64 + ARM64)的 MongoDB 分片集群,实现部署流程的标准化、批量化和可重复化。

CPU架构 docker版本 docker-compose版本
X86_64 26.1.3 v2.29.0
ARM64 26.1.3 v2.29.0

二、工具介绍

一键部署工具实现功能如下:

1、支持 ARM64与x86_64架构 CPU,确保在异构硬件环境下均可部署运行。
2、支持TLS/SSL全链路通信加密, SSL证书有效期为100年,降低证书维护频率与部署复杂度。
3、支持单节点MongoDB实例部署,适用于开发、测试或轻量级应用场景。
4、支持在同一主机上部署完整的伪分布式分片集群,包含:1个Config Server副本集,2个Shard副本集,3个mongos路由节点,实现本地模拟生产环境架构。
5、支持跨主机的生产级分布式部署,架构包括:1个高可用Config Server副本集,2个独立Shard副本集,3个mongos路由节点(负载均衡),满足高并发、高可用业务需求。
6、支持数据目录、日志目录路径、服务端口、最大并发连接数、管理账号与密码、副本集名称等灵活配置。
7、支持数据目录、日志目录及核心配置文件的持久化存储。
8、支持集群的创建、启动、停止、卸载等完整生命周期操作,便于自动化运维与环境清理。
9、提供一键连接、一键备份、一键还原等便捷功能,提升运维效率,降低操作门槛。

如下图所示:



说明:工具使用非常简单,只需要修改变量文件,就可以快速帮你快速部署mongodb 7.0.22分片集群。


三、工具下载

基于X86_64+ARM64架构CPU使用docker-compose一键离线部署mongodb 7.0.22容器版分片集群工具

主控脚本部分内容如下:


四、部署步骤

说明:单机伪集群是指在单主机部署mongodb分片集群,分布式集群是指在多个不同主机上部署mongodb分片集群,这里部署的是多机分布式分片集群。


4.1、部署规划

1、查看帮助命令

说明:这里由于资源限制,使用4台服务器部署分片集群。如果你的资源充足,建议每个实例使用单独1台服务器部署。

宿主机IP 操作系统 内核版本 节点说明
192.168.1.111 Ubuntu 22.04.4 LTS 5.15.0-113-generic 配置服务副本集(1primary+2secondary,共3个实例)
192.168.1.112 Ubuntu 22.04.4 LTS 5.15.0-113-generic 分片1副本集(1primary+1secondary+1arbiter,共3个实例)
192.168.1.113 Ubuntu 22.04.4 LTS 5.15.0-113-generic 分片2副本集(1primary+1secondary+1arbiter,共3个实例)
192.168.1.114 Ubuntu 22.04.4 LTS 5.15.0-113-generic 路由节点(3个mongos实例)

说明:部署顺序必须为
1、配置节点 > 分片节点1 > 分片节点2 > 路由节点
2、配置节点顺序为secondary2>secondary1>primary,分片节点顺序为arbiter>secondary>primary,路由节点顺序为route1>route2>route3


4.2、部署配置服务副本集

1、准备一键部署工具包

说明:将一键部署工具包分上传到config-secondary2节点。


2、编辑变量文件

说明:分片集群所有节点变量文件相同。

bash 复制代码
root@config:/data/pkgs/mongodb-shard-cluster# cp cluster.conf.tpl cluster.conf
root@config:/data/pkgs/mongodb-shard-cluster# vim cluster.conf

如下图所示:



3、配置服务副本集部署(192.168.1.111)

bash 复制代码
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-secondary2
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-secondary1
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-primary

如下图所示:


4.3、分发部署包

说明:部署完config-secondary2实例后,将部署包分别发送到其它实例节点主机。

bash 复制代码
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.112:/data/pkgs
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.113:/data/pkgs
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.114:/data/pkgs

4.4、部署分片1副本集

1、分片1副本集部署(192.168.1.112)

bash 复制代码
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-arbiter
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-secondary
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-primary

如下图所示:


4.5、部署分片2副本集

1、分片2副本集部署(192.168.1.113)

bash 复制代码
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-arbiter
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-secondary
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-primary

如下图所示:


4.6、部署路由节点集群

1、路由节点部署(192.168.1.114)

bash 复制代码
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route1
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route2
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route3

如下图所示:


五、其它操作

5.1、启动

说明:分别在对应主机节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route3

5.2、停止

说明:分别在对应主机节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route3

5.3、检查

说明:分别在对应主机节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route3

5.4、卸载

说明:分别在对应主机节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-primary

root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route3

5.5、连接

说明:分别在对应主机节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-primary

root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-primary

root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-primary

root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route1
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route2
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route3

5.6、备份(支持单机和分片集群模式)

说明:在route3节点上执行。

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# cd tools
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_backup.sh backup route3

注意:如果你想手动备份还原,建议参考《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》


5.7、还原(仅支持单机模式)

bash 复制代码
root@localhost:/data/pkgs/mongodb-shard-cluster# cd tools
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_backup.sh backup single

注意:由于分片集群还原操作,比较复杂,建议参考《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》

相关推荐
Akamai中国5 小时前
运维逆袭志·第4期 | 安全风暴的绝地反击 :从告警地狱到智能防护
运维·人工智能·云计算·云服务·云存储
peiwang2455 小时前
Linux系统中CoreDump的生成与调试
java·linux·开发语言
小立爱学习5 小时前
Linux 内存 --- get_user_pages/pin_user_pages函数
linux·c语言
吃饺子不吃馅5 小时前
了解微前端:为何 Web Component 是绕不开的关键技术?
前端·javascript·架构
江公望6 小时前
Qt enum ApplicationAttribute枚举值浅解
linux·qt
Yuki’6 小时前
Linux系统的ARM库移植
linux·arm开发
报错小能手6 小时前
linux学习笔记(51)Redis发布订阅 主从复制 缓存 雪崩
linux·笔记·学习
酷柚易汛智推官6 小时前
基于MemU的自主代理记忆管理系统:技术解析与实践
java·安全·架构
塔能物联运维6 小时前
物联网运维中的容器化服务部署与弹性扩展技术
运维·物联网