《Linux运维总结:基于ARM64+X86_64架构使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群》

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

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


一、部署背景

由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的rabbitmq 针对不同的客户环境需要多次部署集群,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对 X86_64 + ARM64 CPU架构rabbitmq 3.13.7容器版集群编写自动化部署工具。

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

二、工具介绍

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

1、多架构支持:兼容 x86_64 与 aarch64 CPU 架构。
2、支持单机MySQL部署(1 台主机运行 1 个 mysql 实例)。
3、支持单台主机部署MySQL NDB Cluster(1 台主机运行 1 个管理节点+2个数据节点+2个sql节点)。
4、支持多台主机分布式MySQL NDB Cluster集群(多台主机运行 1 个管理节点+2个数据节点+2个sql节点)。
5、安全通信:全面支持 TLS 加密,所有自动生成的证书有效期为 100 年。
6、持久化能力:配置文件、数据目录及日志目录均支持持久化存储,保障服务可靠性与可恢复性。
7、高度可配置:支持数据目录、日志目录、监听端口、root用户密码。
8、全生命周期管理:提供完整的实例管理功能,包括创建、启动、停止、状态检测及卸载。

如下图所示:

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


三、工具下载

基于X86_64+ARM64架构CPU使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群工具

主控脚本部分内容展示:


四、部署步骤

说明:这里部署的是多机分布式集群。


1、查看帮助命令


2、部署规划

宿主机IP 操作系统 内核版本 节点说明
192.168.0.61 Ubuntu 22.04.5 LTS (Jammy Jellyfish) 5.15.0-124-generic ndb-mgm-01管理节点
192.168.0.62 Ubuntu 22.04.5 LTS (Jammy Jellyfish) 5.15.0-124-generic ndb-data-01数据节点
192.168.0.63 Ubuntu 22.04.5 LTS (Jammy Jellyfish) 5.15.0-124-generic ndb-data-02数据节点
192.168.0.64 Ubuntu 22.04.5 LTS (Jammy Jellyfish) 5.15.0-124-generic ndb-sql-01sql节点
192.168.0.65 Ubuntu 22.04.5 LTS (Jammy Jellyfish) 5.15.0-124-generic ndb-sql-02sql节点

3、准备一键部署工具包

说明:将一键部署工具包上传到ndb-mgm-01管理节点上。


4、编辑变量文件

说明:以下操作分别在MySQL NDB Cluster集群节点的部署工具包中修改cluster.conf文件,四个节点上cluster.conf文件内容一致。

bash 复制代码
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# cp cluster.conf.tpl cluster.conf
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# vim cluster.conf

如下图所示:

bash 复制代码
# 建议填写为当前磁盘最大存储空间目录,如果根(/)目录空间最大,建议填写为/data,如果挂载盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"

# cpu架构,可选值为x86_64和aarch64,根据实际情况修改
export CPU_PLATFROM="aarch64"

# rabbitmq版本,默认不修改
export MYSQL_VERSION="8.0.43"

# mysql是否启用SSL连接,可选值为< yes和no >,<yes表示开启,no表示关闭>,根据实际部署需求修改
export ENABLE_TLS_SSL="no"

# mysql root用户密码,根据实际情况填写
export MYSQL_ROOT_PASSWORD="vCWNJ#k7E93r!rhN"

# mysql数据根目录,默认不修改
export MYSQL_DATA_DIR="${BASE_DIR}/basic-data/mysql-cluster"
################################################################################################################################################
# NDB Cluster集群节点信息
export NDB_MGM_01_NODE_HOST_IP="192.168.0.61"             # 管理节点节点宿主机ip地址,建议填写内网ip地址,根据实际情况填写
export NDB_MGM_01_NODE_HOST_PORT="1186"                    # 管理节点节点服务端口,不冲突情况下,建议不修改
export NDB_MGM_01_NODE_CONTAINER_HOSTNAME="ndb-mgm-01"    # 管理节点节点节点容器主机名,不冲突情况下,建议不修改
export NDB_MGM_01_NODE_CONTAINER_NAME="ndb-mgm-01"        # 管理节点节点节点容器名称,不冲突情况下,建议不修改

export NDB_DATA_01_NODE_HOST_IP="192.168.0.62"            # 数据节点节点宿主机ip地址,建议填写内网ip地址,根据实际情况填写
export NDB_DATA_01_NODE_HOST_PORT="2202"                   # 数据节点节点服务端口,不冲突情况下,建议不修改
export NDB_DATA_01_NODE_CONTAINER_HOSTNAME="ndb-data-01"  # 数据节点节点节点容器主机名,不冲突情况下,建议不修改
export NDB_DATA_01_NODE_CONTAINER_NAME="ndb-data-01"      # 数据节点节点节点容器名称,不冲突情况下,建议不修改

export NDB_DATA_02_NODE_HOST_IP="192.168.0.63"            # 数据节点节点宿主机ip地址,建议填写内网ip地址,根据实际情况填写
export NDB_DATA_02_NODE_HOST_PORT="2203"                   # 数据节点节点服务端口,不冲突情况下,建议不修改
export NDB_DATA_02_NODE_CONTAINER_HOSTNAME="ndb-data-02"  # 数据节点节点节点容器主机名,不冲突情况下,建议不修改
export NDB_DATA_02_NODE_CONTAINER_NAME="ndb-data-02"      # 数据节点节点节点容器名称,不冲突情况下,建议不修改

export NDB_SQL_01_NODE_HOST_IP="192.168.0.64"             # SQL节点节点宿主机ip地址,建议填写内网ip地址,根据实际情况填写
export NDB_SQL_01_NODE_HOST_PORT="3307"                    # SQL节点节点服务端口,不冲突情况下,建议不修改
export NDB_SQL_01_NODE_CONTAINER_HOSTNAME="ndb-sql-01"    # SQL节点节点节点容器主机名,不冲突情况下,建议不修改
export NDB_SQL_01_NODE_CONTAINER_NAME="ndb-sql-01"        # SQL节点节点节点容器名称,不冲突情况下,建议不修改

export NDB_SQL_02_NODE_HOST_IP="192.168.0.65"             # SQL节点节点宿主机ip地址,建议填写内网ip地址,根据实际情况填写
export NDB_SQL_02_NODE_HOST_PORT="3308"                    # SQL节点节点服务端口,不冲突情况下,建议不修改
export NDB_SQL_02_NODE_CONTAINER_HOSTNAME="ndb-sql-02"    # SQL节点节点节点容器主机名,不冲突情况下,建议不修改
export NDB_SQL_02_NODE_CONTAINER_NAME="ndb-sql-02"        # SQL节点节点节点容器名称,不冲突情况下,建议不修改

5、分发安装包

bash 复制代码
root@localhost:/data/pkgs# scp -r mysql-ndb-cluster-tools root@192.168.0.62:/data/pkgs
root@localhost:/data/pkgs# scp -r mysql-ndb-cluster-tools root@192.168.0.63:/data/pkgs
root@localhost:/data/pkgs# scp -r mysql-ndb-cluster-tools root@192.168.0.64:/data/pkgs
root@localhost:/data/pkgs# scp -r mysql-ndb-cluster-tools root@192.168.0.65:/data/pkgs

5、执行部署

说明:根据cluster.conf规划,分别在MySQL8.0.43 NDB Cluster集群节点上执行部署。

bash 复制代码
# 1、在ndb-mgm-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a build -m ndb-mgm-01

# 2、在ndb-data-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a build -m ndb-data-01

# 3、在ndb-data-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a build -m ndb-data-02

# 4、在ndb-sql-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a build -m ndb-sql-01

# 5、在ndb-sql-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a build -m ndb-sql-02

5、检查集群状态

bash 复制代码
./op.sh -a check -m ndb-mgm-01

如下图所示:


五、其它操作

5.1、启动

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

bash 复制代码
# 1、在ndb-mgm-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a start -m ndb-mgm-01

# 2、在ndb-data-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a start -m ndb-data-01

# 3、在ndb-data-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a start -m ndb-data-02

# 4、在ndb-sql-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a start -m ndb-sql-01

# 5、在ndb-sql-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a start -m ndb-sql-02

5.2、停止

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

bash 复制代码
# 1、在ndb-mgm-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a stop -m ndb-mgm-01

# 2、在ndb-data-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a stop -m ndb-data-01

# 3、在ndb-data-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a stop -m ndb-data-02

# 4、在ndb-sql-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a stop -m ndb-sql-01

# 5、在ndb-sql-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a stop -m ndb-sql-02

5.3、检查

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

bash 复制代码
# 1、在ndb-mgm-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a check -m ndb-mgm-01

# 2、在ndb-data-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a check -m ndb-data-01

# 3、在ndb-data-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a check -m ndb-data-02

# 4、在ndb-sql-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a check -m ndb-sql-01

# 5、在ndb-sql-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a check -m ndb-sql-02

5.4、卸载

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

bash 复制代码
# 1、在ndb-mgm-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a clear -m ndb-mgm-01

# 2、在ndb-data-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a clear -m ndb-data-01

# 3、在ndb-data-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a clear -m ndb-data-02

# 4、在ndb-sql-01节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a clear -m ndb-sql-01

# 5、在ndb-sql-02节点
root@localhost:/data/pkgs/mysql-ndb-cluster-tools# ./op.sh -a clear -m ndb-sql-02

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

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

相关推荐
Bigger40 分钟前
告别版本焦虑:如何为 Hugo 项目定制专属构建环境
前端·架构·go
狗哥哥5 小时前
微前端架构下的平台级公共组件资源体系设计
前端·架构
两万五千个小时5 小时前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
木心月转码ing5 小时前
WSL+Cpp开发环境配置
linux
Mintopia6 小时前
思想长期停在事物表面的深层原因:认知机制、环境结构与技术化治理
架构
兆子龙6 小时前
React Compiler 来了:少写 useMemo,照样稳
前端·架构
兆子龙1 天前
用 React + Remotion 做视频:入门与 AI 驱动生成
前端·架构
一枚前端小姐姐1 天前
低代码平台表单设计系统技术分析(实战二)
低代码·架构·前端框架
爱勇宝1 天前
2026年前端生存规划:只会写页面的人,正在被悄悄淘汰
前端·后端·架构
Turnip12021 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql