《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系统运维指南》

相关推荐
creator_Li2 小时前
即时通讯项目--(1)环境搭建
linux·运维·ubuntu
Ka1Yan2 小时前
Docker:基本概念与快速入门
运维·docker·容器
Mr'liu3 小时前
MongoDB 7.0 副本集高可用部署
linux·mongodb
Coder_Boy_3 小时前
基于SpringAI的在线考试系统-0到1全流程研发:DDD、TDD与CICD协同实践
java·人工智能·spring boot·架构·ddd·tdd
文静小土豆4 小时前
Rocky Linux 二进制 安装K8S-1.35.0高可用集群
linux·运维·kubernetes
小技工丨4 小时前
华为TaiShan 200 2280 ARM服务器虚拟化部署完整指南
运维·服务器·arm开发
衫水4 小时前
[特殊字符] MySQL 常用指令大全
数据库·mysql·oracle
暮云星影4 小时前
二、linux系统 应用开发:整体Pipeline流程
linux·arm开发
阿杰 AJie5 小时前
MySQL 里给表添加索引
数据库·mysql