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

栏目: 后端 · 发布时间: 5年前

内容简介:MQ(Msaaage Queue,消息队列)是一种应用程序对应用程序的通信方式。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无须专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通讯。而不是通过直接调用彼此来通信。队列的使用除去了接收和发送应用程序同时执行的要求。在项目中,将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高系统的吞吐量RabbitMQ支持消息的持久化,也就是数据写在磁盘上。为了数据安全考虑,大

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默认集群模式搭建配置实现步骤

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code Reading

Code Reading

Diomidis Spinellis / Addison-Wesley Professional / 2003-06-06 / USD 64.99

This book is a unique and essential reference that focuses upon the reading and comprehension of existing software code. While code reading is an important task faced by the vast majority of students,......一起来看看 《Code Reading》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具