一、部署背景
由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的重要的一环,我们需要针对不同的客户环境需要多次部署 rabbitmq镜像模式高可用负载均衡集群,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对rabbitmq3.9.16镜像模式高可用负载均衡集群编写自动化部署工具。
说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?
二、工具介绍
实现功能如下:
1、支持rabbitmq单实例部署
2、支持单机haproxy+rabbitmq高可用镜像集群部署
3、支持多机haproxy+rabbitmq高可用分布式镜像集群部署
4、支持数据目录、日志目录、插件目录、配置文件持久化
5、支持数据目录、日志目录、端口、账号、密码、内存阀值、磁盘阀值等参数灵活配置
6、支持创建、启动、停止、检测、卸载等功能
目录结构如下:
三、工具下载
基于docker-compose一键离线部署haproxy+rabbitmq3.9.16高可用镜像集群工具
四、部署要求
1、建议提前关闭好防火墙和selinux。
2、rabbitmq高可用负载均衡集群是基于docker和docker-compose工具, 所以需要提前安装好docker和docker-compose工具。
五、工具使用
说明:工具使用非常简单,只需要修改变量文件,一分钟就可以快速帮你部署rabbitmq高可用负载均衡集群。
5.1、单实例部署
说明:单实例部署是指在一台服务器上部署单个rabbtimq服务。
1、复制变量文件
#复制变量文件
[root@localhost haproxy_rabbitmq]# cp single.conf.tpl single.conf
2、编辑变量文件
#编辑变量文件
[root@localhost haproxy_rabbitmq]# vim single.conf
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"
# 宿主机内网ip地址,根据实际情况填写
export RABBITMQ_HOST="192.168.1.191"
# 客户端连接端口,端口不冲突情况下,默认不修改
export RABBITMQ_PORT="5672"
# web管理端口,端口不冲突情况下,默认不修改
export RABBITMQ_MANAGEMENT_PORT="15672"
# 默认用户密码,可根据实际情况填写,注意密码格式为<大小写英文字母+数字>,根据实际情况填写
export RABBITMQ_DEFAULT_USER="lolaage"
export RABBITMQ_DEFAULT_PASS="XnZKE7jGOn6SRXG"
# 内存告警阀值(相对值),建议值为0.4~0.7区间,根据实际情况修改
# 当MQ服务器使用超过内存阀值时,会触发告警,并阻塞所有正在发布消息的连接
export VM_MEMORY_HIGH_WATERMARK_RELATIVE="0.6"
# 数据目录磁盘空间阀值(绝对值),根据实际情况修改
# 当MQ服务器数据目录的磁盘空间超过阀值时,会触发告警,并阻塞所有正在发布消息的连接
export DISK_FREE_LIMIT_ABSOLUTE="5GB"
# 数据存储目录,一般选择一个存储空间比较大且速度快的分区目录
export RABBITMQ_DATA_DIR="${BASE_DIR}/basic-data"
3、执行部署脚本
4、登录管理平台
5.2、单机伪集群部署
说明:单机伪集群是指在一台机器上部署haproxy+rabbitmq镜像高可用负载均衡集群。
1、复制变量文件
#复制变量文件
[root@localhost haproxy_rabbitmq]# cp allinone.conf.tpl allinone.conf
2、编辑变量文件
#编辑变量文件
[root@localhost haproxy_rabbitmq]# vim allinone.conf
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"
# 默认用户密码,可根据实际情况填写,注意密码格式为<大小写英文字母+数字>,根据实际情况填写
export RABBITMQ_DEFAULT_USER="lolaage"
export RABBITMQ_DEFAULT_PASS="XnZKE7jGOn6SRXG"
# 数据存储根目录,一般选择一个存储空间比较大且速度快的分区目录,默认不修改
export RABBITMQ_DATA_DIR="${BASE_DIR}/basic-data"
# 内存告警阀值(相对值),建议值为0.4~0.7区间,根据实际情况修改
# 当MQ服务器使用超过内存阀值时,会触发告警,并阻塞所有正在发布消息的连接
export VM_MEMORY_HIGH_WATERMARK_RELATIVE="0.6"
# 数据目录磁盘空间阀值(绝对值),根据实际情况修改
# 当MQ服务器数据目录的磁盘空间超过阀值时,会触发告警,并阻塞所有正在发布消息的连接
export DISK_FREE_LIMIT_ABSOLUTE="5GB"
# 当前宿主机ip地址,根据实际情况填写
export RABBITMQ_HOST="192.168.1.191"
#################################################<mq1磁盘节点变量>######################################################
# mq1<磁盘节点>宿主机内网ip地址,默认不修改
export RABBITMQ1_HOST="${RABBITMQ_HOST}"
# mq1节点供客户端建立连接端口,端口不冲突情况下,默认不修改
export RABBITMQ1_PORT="3001"
# mq1节点web页面管理端口,端口不冲突情况下,默认不修改
export RABBITMQ1_MANAGEMENT_PORT="13001"
#################################################<mq2内存节点变量>######################################################
# mq2<内存节点>宿主机内网ip地址,默认不修改
export RABBITMQ2_HOST="${RABBITMQ_HOST}"
# mq2节点供客户端建立连接端口,端口不冲突情况下,默认不修改
export RABBITMQ2_PORT="3002"
# mq2节点web页面管理端口,端口不冲突情况下,默认不修改
export RABBITMQ2_MANAGEMENT_PORT="13002"
#################################################<mq3内存节点变量>######################################################
# mq3<内存节点>宿主机内网ip地址,默认不修改
export RABBITMQ3_HOST="${RABBITMQ_HOST}"
# mq3节点供客户端建立连接端口,端口不冲突情况下,默认不修改
export RABBITMQ3_PORT="3003"
# mq3节点web页面管理端口,端口不冲突情况下,默认不修改
export RABBITMQ3_MANAGEMENT_PORT="13003"
###############################################<haproxy节点变量>####################################################
# haproxy节点宿主机内网ip地址,默认不修改
export HAPROXY_HOST="${RABBITMQ_HOST}"
# haproxy节点<rabbitmq集群业务负载均衡端口>,端口不冲突情况下,建议不修改
export HAPROXY_RABBITMQ_PORT="5672"
# haproxy节点<rabbitmq集群管理页面负载均衡端口>,端口不冲突情况下,建议不修改
export HAPROXY_RABBITMQ_MANAGEMENT_PORT="15672"
# haproxy管理页面端口,端口不冲突情况下,建议不修改
export HAPROXY_MANAGEMENT_PORT="15000"
3、执行部署脚本
4、登录rabbtimq管理平台
5、登录haproxy管理平台
5.3、分布式集群部署
说明:分布式集群部署是指在多台机器上部署haproxy+rabbitmq镜像高可用负载均衡集群。
1、复制变量文件
[root@localhost haproxy_rabbitmq]# cp cluster.conf.tpl cluster.conf
2、编辑变量文件
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"
# 默认用户密码,可根据实际情况填写,注意密码格式为<大小写英文字母+数字>,根据实际情况填写
export RABBITMQ_DEFAULT_USER="lolaage"
export RABBITMQ_DEFAULT_PASS="XnZKE7jGOn6SRXG"
# 数据存储根目录,一般选择一个存储空间比较大且速度快的分区目录,默认不修改
export RABBITMQ_DATA_DIR="${BASE_DIR}/basic-data"
# 内存告警阀值(相对值),建议值为0.4~0.7区间,根据实际情况修改
# 当MQ服务器使用超过内存阀值时,会触发告警,并阻塞所有正在发布消息的连接
export VM_MEMORY_HIGH_WATERMARK_RELATIVE="0.6"
# 数据目录磁盘空间阀值(绝对值),根据实际情况修改
# 当MQ服务器数据目录的磁盘空间超过阀值时,会触发告警,并阻塞所有正在发布消息的连接
export DISK_FREE_LIMIT_ABSOLUTE="5GB"
###################################################<mq节点>########################################################
# mq1<磁盘节点>宿主机内网ip地址,根据实际情况填写
export RABBITMQ1_HOST="192.168.1.191"
# mq2<内存节点>宿主机内网ip地址,根据实际情况填写
export RABBITMQ2_HOST="192.168.1.192"
# mq3<内存节点>宿主机内网ip地址,根据实际情况填写
export RABBITMQ3_HOST="192.168.1.193"
####################################################<haproxy>#######################################################
# haproxy节点宿主机内网ip地址,根据实际情况填写
export HAPROXY_HOST="192.168.1.194"
# haproxy节点<rabbitmq集群业务负载均衡端口>,端口不冲突情况下,建议不修改
export HAPROXY_RABBITMQ_PORT="5673"
# haproxy节点<rabbitmq集群管理页面负载均衡端口>,端口不冲突情况下,建议不修改
export HAPROXY_RABBITMQ_MANAGEMENT_PORT="15673"
# haprox<管理页面端口>,端口不冲突情况下,建议不修改
export HAPROXY_MANAGEMENT_PORT="15000"
3、将haproxy_rabbitmq部署包拷贝到需要部署的主机上
[root@localhost pkgs]# scp -r haproxy_rabbitmq root@192.168.1.192:/data/pkgs
[root@localhost pkgs]# scp -r haproxy_rabbitmq root@192.168.1.193:/data/pkgs
[root@localhost pkgs]# scp -r haproxy_rabbitmq root@192.168.1.194:/data/pkgs
4、执行部署脚本
#根据上述变量文件
#1、192.168.1.191主机上执行
[root@localhost haproxy_rabbitmq]# ./op.sh build mq1
#2、192.168.1.192主机上执行
[root@localhost haproxy_rabbitmq]# ./op.sh build mq2
#3、192.168.1.193主机上执行
[root@localhost haproxy_rabbitmq]# ./op.sh build mq3
#4、192.168.1.194主机上执行
[root@localhost haproxy_rabbitmq]# ./op.sh build haproxy
4、登录rabbtimq管理平台
5、登录haproxy管理平台
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结