内容简介:RabbitMQ (Message Qucue, 消息队列)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。 排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求在项目中,将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大地节省了服务器的请求响应时间,从
千万PV
RabbitMQ群集配置
(1)什么是RabbitMQ
RabbitMQ (Message Qucue, 消息队列)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。 排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求
(2)RabbitMQ应用场景
在项目中,将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大地节省了服务器的请求响应时间,从而提高了系统的吞吐量。 RabbitMQ支持消息的持久化,也就是数据写在磁盘上。为了数据安全考虑,大多数企业都会选择持久化。当然如果觉得不需要消息持久化,那么使用内存节点即可!其实最合适的方案就是既有内存节点,又有磁盘节点,下面的案例就是这样一个例子。 消息队列持久化包括了3个部分:
- (1) Exchange持久化,在声明时指定durable=> 1。
- (2) Queue持久化,在声明时指定durable=> 1。
- (3)消息持久化,在投递时指定delivery. mode=>2 (1是非持久化)。
实现步骤
设计架构模式:
在一个集群里,有三台服务器,其中一台使用磁盘模式,另两台使用内存模式。两台内存模式的节点无疑速度更快,因此通过客户端连接访问它们。使用客户端不可能分别连接两个内存节点,肯定是通过前端反向代理左轮询分发请求。但是相心前端反向代理服务器故障,可以通过Kepint软件o一个离可用架构。 而磁盘模式的节点,由于磁盘I0相对较慢,因此仅作数据备份使用。注意这里请将三台服务器都连接上互联网并安装软件包。另外RabbitMQ集点必须在同一个网段里,如果是跨广域网,效果就会变差。
RabbitMQ群集具体配置信息表如下
IP地址 | 主机名 | 操作系统 | 防火墙和SElinux | 用途 |
---|---|---|---|---|
192.168.179.128 | mq1 | CentOS7 | 关闭 | 磁盘节点 |
192.168.179.129 | mq2 | CentOS7 | 关闭 | 内存节点 |
192.168.179.130 | mq3 | CentOS7 | 关闭 | 内存节点 |
配置RabbitMQ群集
(1)关闭防火墙和SElinux
#三台都要关 [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0
(2)修改主机名
[root@localhost ~]# vim /etc/hostname //其他两台相同 mq01.localdomain
(3)修改hosts文件
![image]
(4)安装yum源
[root@mq01 ~]# yum install -y epel-release [root@mq01 yum.repos.d]# yum install -y rabbitmq-server -----------如果安装不了请执行下列操作--------- wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum -y install epel-release yum clean all && yum makecache
查看配置
#//查看插件安装情况 [root@mq01 yum.repos.d]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list #//启用rabbitmq_management服务 [root@mq01 yum.repos.d]# /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management [root@mq01 ~]# systemctl start rabbitmq-server.service
检查三台的集群状态,目前相互独立,没有形成集群。
systemctl stop rabbitmq-server.service //停止三台服务器
#//三台值配置成一样的,复制内容到其他两台
vi /var/lib/rabbitmq/.erlang.cookie
more /var/lib/rabbitmq/.erlang.cookie //验证三台服务器上的cookie,集群场景下,三台的值需要相同 systemctl start rabbitmq-server.service netstat -anpt | grep 5672
在02和03上操作---内存节点
rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@mq01 //加入到磁盘节点 rabbitmqctl start_app
验证群集状态
[root@mq01 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@mq01 ... [{nodes,[{disc,[rabbit@mq01]},{ram,[rabbit@mq03,rabbit@mq02]}]}, {running_nodes,[rabbit@mq03,rabbit@mq02,rabbit@mq01]}, {cluster_name,<<"rabbit@mq01">>}, {partitions,[]}] ...done.
http://192.168.175.132:15672/ //默认用户名:guest 密码:guest
登陆进入页面
创建消息队列
---------以下简单增加消息队列-----
queues-> name:aa //消息队列的名称 durability:durable //是否支持持久化 node:rabbit@mq01 arguments:x-ha-policy = all add queue 完成 在新建一个bb队列。arguments项不填写。 add queue 完成 --------------以下在aa和bb队列中新建消息---- 点aa->Publish message mode:2-persistent haders a = 123 properties message_id=1 payload:1234 publish message close 完成 ---------------------------------------------
service rabbitmq-server stop //把mq01关闭 http://192.168.80.185:15672/ 在02或03上测试消息是否存在。 service rabbitmq-server stop //把02关闭在03上查看应该消息还在,注意地址 http://192.168.80.186:15672/ service rabbitmq-server start //把01和02都启动,消息不同步 rabbitmqctl sync_queue aa //在任意节点手动同步队列 ll /var/lib/rabbitmq ll /var/lib/rabbitmq/mnesia/rabbit\@mq01/queues/ //在mq01上查看消息队列中的信息 ll /var/lib/rabbitmq/mnesia/rabbit\@mq02/queues/ ll /var/lib/rabbitmq/mnesia/rabbit\@mq03/queues/ -------------------以下JMeter压力测试软件----https://jmeter.apache.org/download_jmeter.cgi 下载-Binaries 包 -------在微软系统下配置 JAVA 环境--- 安装jdk-8u161-windows-x64 右击电脑-》属性-》高级-》环境变量-》系统变量-》PATH-》编辑-》新建-》加入下面的路径-》确定 C:\Program Files\Java\jdk1.8.0_161\bin cmd java -version 解压JMeter,然后到解压目录中的bin目录下运行,jmeter.bat 启动程序 在选项中选择语言环境。 使用技巧,查找相关资料。
以上所述就是小编给大家介绍的《千万PV,RabbitMQ群集配置》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- docker CE on Linux示例浅析(四)swam群集配置 原 荐
- RabbitMQ 群集安装
- WSFC 来宾群集架构
- Kubernetes 群集管理概述
- MongoDB分片群集搭建入门详解
- LVS负载均衡之LVS-DR搭建Web群集与LVS结合Keepalived搭建高可用Web群集
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。