一、部署背景 由于业务系统的特殊性,我们需要针对不同的客户环境部署 rabbitmq+haproxy高可用镜像模式集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ansible自动化工具, 一键远程离线部署rabbitmq+haproxy高可用镜像模式容器版集群,当然也会编写二进制版本,敬请期待吧!
说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?
二、功能简介 1、支持 1台主机一键远程部署rabbitmq单实例。
2、支持 1台主机一键远程部署rabbitmq+haproxy高可用镜像模式集群+(1个磁盘节点+2个内存节点+1个haproxy节点)。
3、支持 2台或3台主机一键远程部署rabbitmq+haproxy高可用镜像模式集群(1个磁盘节点+1个内存节点+1个haproxy节点)。
3、支持 3台或4台主机一键远程部署rabbitmq+haproxy高可用镜像模式集群(1个磁盘节点+2个内存节点+1个haproxy节点)。
5、支持一键部署所有节点或单个rabbitmq和haproxy实例依次部署、启动、停止、重启、检查、移除等功能。
6、 支持数据目录、日志目录、插件目录、IP地址、端口、内存阀值、磁盘阀值、账号、密码等参数的灵活配置。
7、 支持数据目录、日志目录、插件目录、配置文件目录等持久化。
三、工具下载 基于ansible一键离线部署rabbitmq镜像模式容器版分布式集群工具
四、工具说明 目录结构如下:
目录说明如下:
README.txt文件内容如下:
op.sh主控脚本参数如下:
其中代码行数:4847行,使用shell语言+jinja2语言。
五、部署要求 1、建议提前关闭好防火墙和selinux。
2、rabbitmq模式镜像集群是基于docker和docker-compose工具, 所以rabbitmq模式镜像集群主机上提前安装好docker和docker-compose工具。
六、部署步骤 说明:根据主机数量,请选择一台主机作为主控端,其它主机作为受控端,如果服务器数量为1台,则即可为主控端,又可为受控端。主控端需提前安装好ansible工具。这里为了避免麻烦,特意写了一个离线的ansible部署脚本,可实现一键部署ansible。脚本已经集成到该工具中,开箱即用,非常方便!
由于文章篇幅有限,这里就只介绍,在3台主机上,如何使用ansible工具实现rabbitmq镜像模式分布式集群的一键容器化部署?
1、生成3台主机的hosts文件和config.yml文件
[root@localhost rabbitmq]
2023-02-24 11:33:35 DEBUG generate custom cluster files in /opt/rabbitmq/cluster/node3
2023-02-24 11:33:35 DEBUG cluster node3: files successfully created.
2023-02-24 11:33:35 INFO next steps 1: to config '/opt/rabbitmq/cluster/node3/hosts'
2023-02-24 11:33:35 INFO next steps 2: to config '/opt/rabbitmq/cluster/node3/config.yml'
2、编辑hosts文件
注意:base_dir变量无需修改,这个变量是自动生成的,只需修改服务器ip地址、ssh端口、账号密码等信息即可。
MAX_SPACE_DIR: "/data"
RABBITMQ_WORK_DIR: "{{ MAX_SPACE_DIR }}/pkgs/rabbitmq-cluster"
RABBITMQ_DATA_DIR: "{{ MAX_SPACE_DIR }}/basic-data/rabbitmq-cluster"
RABBITMQ_DEFAULT_USER: "lolaage"
RABBITMQ_DEFAULT_PASS: "XnZKE7jGOn6SRXG"
VM_MEMORY_HIGH_WATERMARK_RELATIVE: "0.6"
DISK_FREE_LIMIT_ABSOLUTE: "5GB"
RABBITMQ_NODE1_HOST: "192.168.1.191"
RABBITMQ_NODE1_PORT: "5672"
RABBITMQ_NODE1_MANAGEMENT_PORT: "15672"
RABBITMQ_NODE1_DIST_PORT: "25672"
RABBITMQ_NODE1_ERL_EPMD_PORT: "4369"
RABBITMQ_NODE2_HOST: "192.168.1.192"
RABBITMQ_NODE2_PORT: "5672"
RABBITMQ_NODE2_MANAGEMENT_PORT: "15672"
RABBITMQ_NODE2_DIST_PORT: "25672"
RABBITMQ_NODE2_ERL_EPMD_PORT: "4369"
RABBITMQ_NODE3_HOST: "192.168.1.193"
RABBITMQ_NODE3_PORT: "5672"
RABBITMQ_NODE3_MANAGEMENT_PORT: "15672"
RABBITMQ_NODE3_DIST_PORT: "25672"
RABBITMQ_NODE3_ERL_EPMD_PORT: "4369"
4、执行部署操作
说明:如果不清楚部署操作命令,可使用其帮助命令,如下所示
一键部署服务
[root@localhost es-tools]
[root@localhost es-tools]
[root@localhost es-tools]
[root@localhost es-tools]
一键部署结果,如下图所示:
查看集群节点信息,如下图所示:
总结:使用ansible自动化工具一键部署rabbitmq镜像模式集群,效率确实非常高,全程部署2分钟就完全搞定了,对于一些需要多次部署的场景,自动化确实很重要,可以极大的提高整个部署效率,我觉得对于运维来说,一定要有高度的自动化意识,当然这只是单个服务模块的自动化部署,如果是把整个业务系统,编写成一键自动化部署工具的化,这可能是一个非常的工程,当然,后期有机会我也会进行分享整个业务系统的一键部署是如果设计及编写的。
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》