RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

时间:2024-05-21 07:35:49

RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

什么是RabbitMQ?

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue,高级队列消息协议)的开源实现。

RabbitMQ应用场景:

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

架构思路:

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

注意:三台服务器都需要连上互联网并安装软件包,另外RabbitMQ集群节点必须在同一个网段里,如果是跨广域网,效果就会变差。

配置表:

IP地址

主机名

操作系统

防火墙和SELINUX

用途

192.168.80.184

mq01

Centos7.4

关闭

磁盘节点

192.168.80.185

mq02

Centos7.4

关闭

内存节点

192.168.80.186

mq03

Centos7.4

关闭

内存节点

注意:这里主机名不可以带 . 否则会出错

----1.使用Centos7.4自带的YUM源安装软件--三台都一样---需要公网环境---

service firewalld stop

setenforce 0

yum install -y epel-release

yum install -y rabbitmq-server

 

/usr/lib/rabbitmq/bin/rabbitmq-plugins list                     //查看插件安装情况

/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management    //启用rabbitmq_management服务

 

vi /etc/hosts

192.168.80.181 mq01      //注意这里的主机名mq01中不能带.

:wq

service rabbitmq-server start

netstat -anpt | grep 5672

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

service rabbitmq-server stop            //停止三台服务器是为了下面修改cookie值时不会报错

more /var/lib/rabbitmq/.erlang.cookie  //查看三台服务器上的cookie,集群场景下,三台的值需要相同,所以需要修改三台的cookie值为相同

vi /var/lib/rabbitmq/.erlang.cookie

......

:wq

service rabbitmq-server start      //此时启动三台服务器,再去验证三台服务器cookie值是否一致

rabbitmqctl cluster_status        //检查三台的集群状态,目前相互独立,没有形成集群。

mq01这台服务器情况显示如下:

Cluster status of node [email protected] ...

[{nodes,[{disc,[[email protected]]}]},

 {running_nodes,[[email protected]]},

 {cluster_name,<<"[email protected]">>},

 {partitions,[]}]

...done.

---------2.mq02和mq03上操作---内存节点------------

rabbitmqctl stop_app                          //仅关闭应用,不关闭节点  

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

rabbitmqctl join_cluster --ram [email protected]   //把mq02和mq03节点加入到磁盘节点mq01 

rabbitmqctl start_app                        //开启应用

rabbitmqctl cluster_status                   //验证集群状态如下

Cluster status of node [email protected] ...

[{nodes,[{disc,[[email protected]]},{ram,[[email protected]]}]},

 {running_nodes,[[email protected],[email protected]]},

 {cluster_name,<<"[email protected]">>},

 {partitions,[]}]

...done.

去浏览器中访问:

http://192.168.80.184:15672/        //默认用户名:guest 密码:guest,端口会自动将5672变成15672

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

--------新增一个策略---------

admin->policies->add/update a policy

name:策略名称

pattern: ^a                //以a开头

definition:ha-mode  all   //使用ha-mode模式中的all,也就是同步所有匹配的队列

Priority:优先级,默认是0,值越大优先级越高

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

add policy 完成

---------以下简单增加消息队列-----

queues->

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

add queue 完成

--------------再新建一个bb队列--arguments项不填写-----------

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

add queue 完成

-----------以下在aa和bb队列中新建消息--------

aa->Publish message

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

close 完成

以同样的方法给bb也创建消息,查看消息记录如下:

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

------------以下做破坏性测试-----------

[[email protected] ~]# service rabbitmq-server stop     //把mq01关闭

http://192.168.80.185:15672/              //02或03上测试消息是否存在。而且bb消息队列已经不在了,说明没有做镜像模式。

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

[[email protected] ~]# service rabbitmq-server stop    //02关闭在03上查看应该消息还在,注意地址

http://192.168.80.186:15672/

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

service rabbitmq-server start              //把01和02都启动,消息不同步

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

此时若想同步消息队列:

[[email protected] ~]# rabbitmqctl sync_queue aa    //在任意节点手动同步队列

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq01/queues/        //在mq01上查看消息队列中的信息

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq02/queues/       //在mq02上查看消息队列中的信息

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

[[email protected] ~]# ll /var/lib/rabbitmq/mnesia/rabbit\@mq03/queues/      //在mq03上查看消息队列中的信息

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

再去客户端查看:

 RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用

-----------以下JMeter压力测试软件------------

下载-Binaries 包网址:https://jmeter.apache.org/download_jmeter.cgi

-------在微软系统下配置JAVA环境-------

安装jdk-8u161-windows-x64

右击电脑-》属性-》高级-》环境变量-》系统变量-》PATH-》编辑-》新建-》加入下面的路径-》确定

C:\Program Files (x86)\Java\jdk1.7.0_55\bin

cmd查看版本信息:

Java -version

解压JMeter,然后到解压目录中的bin目录下运行,jmeter.bat 启动程序

在选项中选择语言环境。

使用技巧,查找相关资料。