配置RabbitMQ默认群集模式

RabbitMQ是什么?

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

RabbirMQ使用场景

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

RabbitMQ实际应用

RabbitMQ是用Erlang开发的,集群很是方便,由于Erlang天生就是一门分布式语言,但其自己并不支持负载均衡。
RabbitMQ模式大概分为三种编程

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

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

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服务cookie

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

配置RabbitMQ默认群集模式

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

将mq0二、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默认群集模式app

相关文章
相关标签/搜索