《Linux运维实战:Centos7.6基于docker-compose一键离线部署rabbitmq3.9.16+haproxy镜像模式高可用负载均衡集群》

news2024/12/28 4:55:05

一、部署背景

由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的重要的一环,我们需要针对不同的客户环境需要多次部署 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运维实战总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/359953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 793. 阶乘函数后 K 个零

f(x) 是 x! 末尾是 0 的数量。回想一下 x! 1 * 2 * 3 * ... * x&#xff0c;且 0! 1 。 例如&#xff0c; f(3) 0 &#xff0c;因为 3! 6 的末尾没有 0 &#xff1b;而 f(11) 2 &#xff0c;因为 11! 39916800 末端有 2 个 0 。 给定 k&#xff0c;找出返回能满足 f(x) …

Django框架之类视图

类视图 思考&#xff1a;一个视图&#xff0c;是否可以处理两种逻辑&#xff1f;比如get和post请求逻辑。 如何在一个视图中处理get和post请求 注册视图处理get和post请求 以函数的方式定义的视图称为函数视图&#xff0c;函数视图便于理解。但是遇到一个视图对应的路径提供…

【Vue/基础知识】Vue基础知识(一)

如果觉得我的分享有一定帮助&#xff0c;欢迎关注我的微信公众号 “码农的科研笔记”&#xff0c;了解更多我的算法和代码学习总结记录。或者点击链接扫码关注 【Vue/基础知识】Vue基础知识&#xff08;一&#xff09; 1、v-show 和 v-if 指令的共同点和不同点&#xff1f; 共…

【建议收藏】2023年最新最全PMP 报考条件和流程在这里!

PMP考试是由美国项目管理协会PMI发起的项目管理专业人士资格认证考试&#xff0c;在中国国内由中国国际人才交流基金会举办考试&#xff0c;考生在报名参加PMP考试前了解下PMP考试报名条件和流程是必须要做的功课&#xff0c;下面我为大家详细介绍2023年PMP考试报名条件和流程&…

音频信号处理笔记(二)

文章目录1.1.3 过零率1.1.4 谱质心和子带带宽1.1.5 短时傅里叶分析法1.1.6 小波变换相关课程&#xff1a; 音频信号处理及深度学习教程傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 - 知乎 (zhihu.com)1.1.3 过零率 过零率&#xff1a;是一个信号符号…

[软件工程导论(第六版)]第7章 实现(复习笔记)

文章目录7.1 编码7.2 软件测试基础7.2.1 软件测试的目标7.2.2 软件测试的准则7.2.3 测试方法7.2.4 测试步骤7.2.5 测试阶段的信息流7.3 单元测试&#xff08;模块测试&#xff09;7.4 集成测试7.5 确认测试&#xff08;验收测试&#xff09;7.6 白盒测试技术7.7 黑盒测试技术7.…

微型光纤光谱仪的光路性能指标

标题光路指标波长范围灵敏度分辨率&#xff08;波长&#xff09;波长准确度与波长重复性光路稳定性杂散光与二级衍射效应光路指标 波长范围 对于微型光纤光谱仪来说&#xff0c;波长范围的概念有两个层面&#xff1a; 由灵敏度所限制的范围&#xff08;Useable range&#xf…

python学习之10行代码制作炫酷的词云图(匹配指定图形形状)

文章目录前言一、需要准备什么&#xff1f;二、代码实现&#xff08;示例&#xff09;三、读入数据四、结果展示五、修改词云颜色后的运行结果展示&#xff1a;总结前言 想必大家有一个问题&#xff1a;什么是词云呢&#xff1f; 词云又叫名字云&#xff0c;是对文本数据中出…

java调用elasticSearch api

java操作es有两种方式 通过操作es的9300端口&#xff0c;9300是tcp端口&#xff0c;集群节点之间通信也是通过9300端口&#xff0c;会通过9300和es建立一个长连接&#xff0c;下面的es的依赖可以直接操作 但是随着es的版本的提升spring-data需要封装不同版本的es的jar包&#x…

Windows命令大全

Windows命令大全命令简介运行流程CMD命令—文件管理CMD命令—磁盘管理CMD命令—系统管理CMD命令—进程管理CMD命令—控制台管理CMD命令—其他管理Windows运行工具操作示例命令简介 CMD命令是一种命令提示符&#xff0c;CMD是command的缩写&#xff0c;即命令提示符&#xff08…

QT(57)-QWT+VS2019+QT5.12.4环境配置-x86

1.下载QWT源码。 2.用VS2019-MSVC2019编译生成6个文件。 3.配置6个文件&#xff0c;把6个文件放对应的目录下。 4. 用自带的example检测配置环境。 1.下载QWT源码 Qwt Users Guide: Qwt - Qt Widgets for Technical Applications2.用VS2019-MSVC2019编译生成6个文件. #qw…

测试工程师如何提高自动化测试覆盖率

前言 自动化测试一直是测试人员的核心技能&#xff0c;也是测试的重要手段之一。尤其是在今年所谓的互联网寒冬的行情下&#xff0c;各大企业对测试人员的技术水平要求的很高&#xff0c;而测试人员的技术水平主要集中在三大自动化测试领域&#xff0c;再加测试辅助脚本的编写…

350-401-补充

补充 拖图 Cloud和On-Premise&#xff1b; Cloud&#xff1a; easy to scale the capacity up and down highly agile On-Premises&#xff1a; infrstructure requires large and regular investments highly customizable 云: 易于扩大和缩小容量 非常敏捷 本地: 基础设施…

nodejs基于vue 网上商城购物系统

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…

15 个杀手级 你可能从未听说过的 JS 技术

我们都同意&#xff0c;在 Google 或 StackOverflow 上搜索 Javascript 错误修复或答案并不有趣&#x1f3f4;‍☠️。这里有 20 种简短而强大的 JavaScript 技术&#xff0c;它们可以最大限度地提高生产力 ⚡ 并最大限度地减少痛苦 &#x1fa78;。让我们深入研究代码&#x1…

人们最想看到的是:你在坚持什么?

【人们最想看到的是&#xff1a;你在坚持什么】 长远规划才能对抗不确定性 品牌也能够对抗不确定性 想想这么多年东搞搞&#xff0c;西搞搞 最后缺乏正向积累的【厚度】 趣讲大白话&#xff1a;把每滴水尽量接到碗里 人吃的是饭&#xff0c;拉出来的是信息 *********** 人们在频…

大数据周会-本周学习内容总结0102

目录 01、ElasticSearch-学习总结 02、SpringbootElasticSearch构建博客检索系统 01、将MySQL数据同步到ES中 02、SpringBoot集成ES 03、本周学习计划 第一次周会 大数据总监、搜狐四年-中国搜索 【mapReduce】sql 大数据代表&#xff1a;Hadoop、spark、es、flink zookee…

写给安徽合肥高三的你——少年不惧岁月长,敢挽桑弓射玉衡

文章目录说说我的看法英雄不论出处想帮帮你做科研&#xff0c;拼出个锦绣前程&#xff0c;朗朗乾坤&#xff01;我能做的可能很少&#xff0c;可是全世界都会为你让路说说我的看法 在今日头条看到你&#xff0c; 仿佛看到了年轻时候自己的影子&#xff0c;虽然自己现在在读研已…

PHP面向对象02:面向对象高级

PHP面向对象02&#xff1a;面向对象高级一、设计模式1. 单例模式2. 工厂模式二、面向对象三大特性1. 封装2. 继承3. 多态三、继承1. 实现继承2. 有限继承a. 属性都能继承b. 公有方法c. 受保护的方法d. 静态成员3. 重写4. PHP继承特点5. 静态延迟绑定6. 最终类和最终方法7. 抽象…

真空度精密控制技术在液相透射电子显微镜液体厚度调节中的应用

摘要&#xff1a;为了实现液相电子显微镜的更广泛和更便捷应用&#xff0c;需要对微芯片中的液体样本厚度进行精密调控。本文基于透射显微镜中被检液体样本内外压差对应于液体厚度这一凸起变形膨胀的基本现象&#xff0c;提出了通过精确控制液体池内部真空度来实现液体厚度精密…