发布信息

Rabbitmq 集群搭建指南:模式、策略与程序狗的梦想

作者:软荐小编      2024-07-28 10:03:44     98

点击上方蓝色字体,选择“星标公众号”

高质量文章,尽快交付

作者 | 张龙浩

来源 | urlify.cn/67fequ

前言

微风徐徐的季节,本该和家人朋友一起享受美丽的花草,或者懒洋洋地晒太阳听风鸣鸟叫,度过周末。可是因为工作和理想,我又回到了公司,敲着键盘,写着代码。程序员的世界,灰暗,灰暗。希望天下所有努力的程序员都能实现自己的梦想!!

回到正题,为什么要搭建 RabbitMQ 集群?RabbitMQ 集群有哪些模式?如何搭建 RabbitMQ 集群?RabbitMQ 镜像的高可用策略有哪些?

1、首先这个产品有很多优点,最看好的就是它的异步性,提高了系统抗峰值负载的能力。第二是系统和功能结构的解耦。基于这两点,它在整个系统中的作用至关重要。既然这么重要,当然要考虑它的高可用性。那么我们就有了第一个问题的答案。

2. RabbitMQ有3种模式,但是集群模式有2种,具体如下:

准备集群环境来安装 RabbitMQ

我的环境如下:

1、两台Centos7机器,主机名分别为:F、G。

2、IP地址为:F—172.18.8.229,G—172.18.8.224。

3、修改hosts文件如下,以下是机器G的hosts文件内容,F还需要做如下配置:

[root@G bin]# cat /etc/hosts
127.0.0.1 G  localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1       G  localhost localhost.localdomain localhost6 localhost6.localdomain6 

172.18.8.224 G
172.18.8.229 F

4、保证两台机器能互相ping通,如下图:

集群的软件_集群高可用部署方案_高可用集群软件

好了,环境现在已经满足了,接下来我们在两台机器上安装rabbitmq。

不看官方文档就别学了,地址如下:

安装rabbitmq需要依赖erlang环境,所以我们需要先安装erlang环境。

高可用集群软件_集群高可用部署方案_集群的软件

安装完成后,下载rabbitmq的rpm包ivh,如果实在不会安装,这里有Linux系统安装rabbitmq的例子(二)软件安装与卸载,如果实在不会安装,加入左上角的群,或者点击网页右上角的X,你要相信,这不是你的错,而是你和rabbitmq的缘分。

如果安装和启动过程中出现错误,您可以尝试以下解决方法:

安装成功启动后,下面是一些常用的操作。

[root@G bin]# ./rabbitmq-server -deched  --后台启动服务
[root@G bin]# ./rabbitmqctl start_app  --启动服务
[root@G bin]# ./rabbitmqctl stop_app  --关闭服务
[root@G bin]# ./rabbitmq-plugins enable rabbitmq_management --启动web管理插件
[root@G bin]# ./rabbitmqctl add_user zlh zlh  --添加用户,密码
[root@G bin]# ./rabbitmqctl set_user_tags zlh administrator --设置zlh为administrator权限

如果看到下面的操作,说明启动成功高可用集群软件,并且web管理页的插件也启动成功,如果下面的6为0,则需要启动web管理插件

集群高可用部署方案_集群的软件_高可用集群软件

具体的rabbitmqctl命令详见官网文档:

搭建rabbitmq通用模式集群

在上述两台机器上安装完rabbitmq之后,可以在机器中看到如下文件,路径在$HOME或者/var/lib/rabbitmq中,文件名为.erlang.cookie,是一个隐藏文件,那么这个文件中存放的是什么,有什么用呢?

我们这样说吧:RabbitMQ 集群依赖于 Erlang 集群,而 Erlang 集群就是用这个 cookie 来做通信认证的,所以搭建集群的第一步就是要获取这个 cookie高可用集群软件,怎么做呢?

1、集群中两台机器,即F、G的.erlang.cookie文件中的cookie值必须一致,且权限必须为owner只读。

机器 G 中的 cookie:

机器 F 中的 cookie:

修改文件权限如下:

[root@F ~]# chmod 600 .erlang.cookie

2.检查集群状态。我的已经完成了。

[root@F bin]# ./rabbitmqctl cluster_status
Cluster status of node rabbit@F ...
[{nodes,[{disc,[rabbit@G]},{ram,[rabbit@F]}]},
 {running_nodes,[rabbit@G,rabbit@F]},
 {cluster_name,<<"rabbit@F">>},
 {partitions,[]},
 {alarms,[{rabbit@G,[]},{rabbit@F,[]}]}]

3.停止当前机器上的rabbitmq服务

[root@F bin]# ./rabbitmqctl stop_app

4.将G中的rabbitmq加入到集群中

[root@F bin]# ./rabbitmqctl join_cluster --ram rabbit@G

5.启动当前机器的rabbitmq服务

[root@F bin]# ./rabbitmqctl start_app

6.打开web管理页面查看节点

集群高可用部署方案_高可用集群软件_集群的软件

就这样。你可以做一个测试来验证我们在前言中提到的正常模式指令。它们一定是正确的。

构建rabbitmq镜像高可用集群

写到这里,接下来,朋友要请我吃饭,我会尽快去参加聚会的。即便如此,我也会准备齐全。走走走。

本节参考的文件如下:

首先,镜像模式依赖的是策略模块,这个模块是干什么用的呢?

Policy的中文意思就是策略或者战略,所以就是设置哪些Exchange或者队列需要进行复制和同步。那么如何进行复制和同步呢?没错,就是它的作用。

这里面的内容有点多,我先举个例子:

[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

参数含义:

ha-all:策略名称。

^: 为匹配字符,只有一个 ^ 表示匹配全部。^zlh 匹配名为 zlh 的交换机或队列。

ha-mode:匹配类型,分为3种模式:all(所有队列)、exctly(部分)(需要配置ha-params参数,该参数为int类型,比如3,很多集群中随机3台机器)、nodes(需要配置ha-params参数,该参数为数组类型,比如["3rabbit@F", "rabbit@G"],指定了F、G两台机器)。

参考示例如下

集群的软件_高可用集群软件_集群高可用部署方案

当然也可以在web管理界面进行配置:

集群高可用部署方案_集群的软件_高可用集群软件

配置完成后队列如下,ha-haall的说明用的是我自己ha-haall策略,属于镜像模式,没有说明的是普通模式:

高可用集群软件_集群的软件_集群高可用部署方案

总结

接下来是大家最喜欢的总结,一共有两个内容,如下:

相关内容 查看全部