内容简介: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群集
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript Patterns
Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99
What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!