阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

RabbitMQ默认集群模式搭建配置实现步骤

182次阅读
没有评论

共计 2684 个字符,预计需要花费 7 分钟才能阅读完成。

RabbitMQ 是什么?

MQ(Msaaage Queue,消息队列)是一种应用程序对应用程序的通信方式。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无须专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通讯。而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

RabbirMQ 使用场景

在项目中,将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高系统的吞吐量
RabbitMQ 支持消息的持久化,也就是数据写在磁盘上。为了数据安全考虑,大多数企业都会选择持久化。当然如果不需要消息持久化,那么使用内存节点即可。RabbitMQ 的集群节点包括内存节点、磁盘节点。最合适的方案就是既有内存节点,又有磁盘节点。

RabbitMQ 实际应用

RabbitMQ 是用 Erlang 开发的,集群非常方便,因为 Erlang 天生就是一门分布式语言,但其本身并不支持负载均衡。
RabbitMQ 模式大概分为三种

  • 单一模式
  • 普通模式(默认的集群模式)
  • 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于 RabbitMQ 的 HA 方案,在对业务可靠性要求较高的场合中比较适用)

要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式可以实现高可用。

RabbitMQ 功能

  • 异步消息:支持多种消息传递协议,消息队列,传递确认,灵活路由到队列,多种交换类型。
  • 开发经验:与 BOSH,Chef,Docker 和 Puppet 一起部署。使用喜欢的编程语言开发跨语言消息,例如:Java,.NET,PHP,Python,JavaScript,Ruby,Go 等等。
  • 分布式部署:部署为集群以实现高可用性和吞吐量; 联合多个可用区和区域
  • 企业和云就绪:可插拔身份验证,授权,支持 TLS 和 LDAP。轻量级,易于部署在公共云和私有云中。
  • 工具和插件:支持持续集成,运营指标和与其他企业系统集成的各种工具和插件。灵活的插件方法,用于扩展 RabbitMQ 功能。
  • 管理和监督:用于管理和监控 RabbitMQ 的 HTTP-API,命令行工具和 UI

RabbitMQ 集群搭建

实现步骤

设计架构模式:在一个集群里,有三台服务器,其中一台使用磁盘模式,另两台使用内存模式。两台内存模式的节点速度更快,因此通过客户端连接访问它们。但是在客户端不可能分别连接两台内存节点,肯定是通过前端反向代理去轮询分发请求。如果担心前端反向代理服务器故障,可以通过 keepalived 软件做一个高可用架构。而磁盘模式的节点,由于磁盘 IO 相对较慢,因此仅作数据备份使用。

环境准备

  • 关闭防火墙及 selinux
    systemctl stop firewalld.service
    setenforce 0
  • 虚拟机规划如下
主机名 IP 地址 操作系统 系统用途 软件包
mq01 172.16.10.28 CentOS-7-x86_64 磁盘节点 rabbitmq-server-3.3.5
mq02 172.16.10.29 CentOS-7-x86_64 内存节点 rabbitmq-server-3.3.5
mq03 172.16.10.31 CentOS-7-x86_64 内存节点 rabbitmq-server-3.3.5

修改主机名及 hosts 文件

vim /etc/hostname
mq01.localdomain           // 三台服务器都需要修改,分别改为 mq02,mq03,名称可以自定义
vim /etc/hosts
172.16.10.28 mq01
172.16.10.29 mq02
172.16.10.31 mq03         //hosts 文件三台服务器都一致,与 hostname 修改的内容要对应
reboot                             // 修改之后重启虚拟机生效 

安装 rabbitmq 软件

yum install epel-release -y 
yum install rabbitmq-server -y

查看节点服务

rabbitmq-plugins list

RabbitMQ 默认集群模式搭建配置实现步骤

启动管理服务

rabbitmq-plugins enable rabbitmq_management

RabbitMQ 默认集群模式搭建配置实现步骤

启动 rabbitmq 服务

systemctl start rabbitmq-server.service
netstat -ntap | grep 5672

在服务启动之后,若是有三个端口开放,则表示服务服务开启成功。其中 15672 和 25672 都是 rabbitmq 的管理端口,5672 则是和生产者、消费者通信的端口。

查看连接状态

先查看单个连接是否能够,三台服务器都要做测试,如果连接失败,就要检查前面的 hostname 和 hosts 文件设置有没有错误。

rabbitmqctl cluster_status

RabbitMQ 默认集群模式搭建配置实现步骤

修改.erlang.cookie 文件

Rabbitmq 的集群是依赖于 Erlang 的集群来工作的,所以必须先构建起 Erlang 的集群环境。在 Erlang 的集群中,各节点通过一个 magic cookie 来实现的,这个 cookie 存放在 /var/lib/rabbitmq/.erlang.cookie(该文件为隐藏文件) 中,文件是 400 的权限。必须使各节点 cookie 保持一致,否则节点之间就无法通信。注意在作修改时,应先关闭 rabbitmq 服务

cat .erlang.cookie                                    // 查看文件中的值,修改两个内存节点,使三个值相同 
systemctl stop rabbitmq-server.service   // 关闭两个内存节点的 rabbimq 服务,并修改 cookie 值 
systemctl start rabbitmq-server.service   // 修改完成之后再启动服务 

RabbitMQ 默认集群模式搭建配置实现步骤

将内存节点与磁盘节点相连

将 mq02、mq03 作为内存节点,mq01 作为磁盘节点。节点 mq01 和 mq02 上操作一致,先停止 rabbitmq 应用,然后(在 mq02 服务器上)调用 cluster 命令将 mq02 连接到 mq01;(在 mq03 服务器上)将 mq03 连接到 mq01,使三者成为一个集群,最后启动 rabbitmq 应用。

rabbitmqctl stop_app                                       // 关闭应用 
rabbitmqctl join_cluster --ram rabbit@mq01   // 将内存节点连接到磁盘节点  --ram 表示作为内存节点 
rabbitmqctl start_app                                       // 开启应用,mq02 与 mq03 操作相同 

查看端口,确保服务都正常

netstat -ntap | grep 5672

mq01

RabbitMQ 默认集群模式搭建配置实现步骤

mq02

RabbitMQ 默认集群模式搭建配置实现步骤

mq03

RabbitMQ 默认集群模式搭建配置实现步骤

访问管理网页

打开浏览器访问 http://172.16.10.28:15672,默认账号和密码均为“guest”
RabbitMQ 默认集群模式搭建配置实现步骤
RabbitMQ 默认集群模式搭建配置实现步骤

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2684字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中