Rabbitmq简介及部署群集

博文大纲:
一、MQ简介
二、什么是RabbitMQ?
三、安装RabbitMQ
四、部署Rabbitmq集群
1)部署环境
2)安装rabbitmq服务
3)配置host文件,并将上述两个节点加入集群
4)rabbitmq01配置群集并将rabbitmq02、03加入01群集
5)访问web界面
6)web页面添加vhost
五、单台节点加入或退出群集
1)单节点加入集群
2)单节点退出集群

一、MQ简介

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

二、什么是RabbitMQ?

RabbitMQ是由Erlang语言编写的实现了高级消息队列协议(AMQP)的开源消息代理软件(也可称为 面向消息的中间件)。支持Windows、Linux/Unix、MAC OS X操作系统和包括JAVA在内的多种编程语言。

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

RabbitMQ使用场景:
1)异步处理;
2)应用解耦;
3)流量削峰;
4)消息通讯;

三、安装RabbitMQ

所需软件下载链接:https://pan.baidu.com/s/1vopw5bvLX4gUkabSthI0hw 提取码:ng8c

[[email protected] ~]# ls      #确认所需RPM包
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
[[email protected] ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
#安装RPM包
[[email protected] ~]# chkconfig rabbitmq-server on
#rabbitmq加入开机自启
[[email protected] ~]# /etc/init.d/rabbitmq-server start
#启动rabbitmq服务
[[email protected] ~]#  ps -ef | grep rabbitmq
#确定rabbitmq正在运行,返回结果较多,省略
[[email protected] ~]# rabbitmq-plugins enable rabbitmq_management
#开启rabbitmq的web管理插件,以便可以通过浏览器进行访问
[[email protected] ~]#  rabbitmqctl add_user admin 123.com
#创建登录用户
#默认WEB管理的登录帐号和密码统一为:guest
[[email protected] ~]#  rabbitmqctl set_user_tags admin administrator
#将创建的admin用户添加至administrator组

默认RabbitMQ拥有如下端口号:

一般常用就15672和5672!

客户端访问:

四、部署Rabbitmq集群

Rabbitmq集群大概分为两种方式:
1、普通模式:默认的集群模式,消息的尸体只存在一个节点上;
2、镜像模式:把需要的队列做成镜像,存在于多个节点。
ha-mode:
all:列队到所有节点;
exatly:随机镜像到其他节点上;
nodes:镜像到指定节点上。
集群节点模式:
1、内存节点:工作在内存上;
2、磁盘节点:工作在磁盘上;
例外:内存节点和磁盘节点共同存在,提高访问速度的同时增加数据持久化。

相比内存节点虽然不写入磁盘,但是它执行比磁盘节点要好,集群中,只需要一个磁盘来保存状态就足够了,如果集群中只有内存节点,那么节点一旦宕机,所有的状态、消息都会丢失,无法实现数据的持久化。

1)部署环境

系统 IP地址 主机名
Centos 7 192.168.1.4 rabbitmq01
Centos 7 192.168.1.5 rabbitmq02
Centos 7 192.168.1.6 rabbitmq03
Centos 7 192.168.1.7 rabbitmq04

其中192.168.1.4就是基于上面的单台rabbitmq做的。

2)安装rabbitmq服务

在192.168.1.5和192.168.1.6两个节点上部署,192.168.1.7稍后会用到!

[[email protected] ~]# ls      #确认所需RPM包
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
[[email protected] ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
#安装RPM包
[[email protected] ~]# chkconfig rabbitmq-server on
#rabbitmq加入开机自启
[[email protected] ~]# /etc/init.d/rabbitmq-server start
#启动rabbitmq服务

3)配置host文件,并将上述两个节点加入集群

[[email protected] ~]# echo -e "192.168.1.4 rabbitmq01\n192.168.1.5 rabbitmq02\n192.168.1.6 rabbitmq03\n192.168.1.7 rabbitmq04" >> /etc/hosts
[[email protected] ~]# scp /etc/hosts [email protected]:/etc/
[[email protected] ~]# scp /etc/hosts [email protected]:/etc/
[[email protected] ~]# scp /etc/hosts [email protected]:/etc/
[[email protected] ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
[[email protected] ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
#将rabbitmq01的cookie节点信息复制到其他需要加入群集的节点
#部署群集的时候需要节点cookie信息一致

群集中的所有节点都需重启(包括rabbitmq01)。若重启过程中卡在某个界面,需手动强制重启!

[[email protected] ~]# ps -ef | grep rabbitmq
#重启后,主机名自动更新了,确认了rabbitmq正在运行

4)rabbitmq01配置群集并将rabbitmq02、03加入01群集

以下操作可以根据主机名进行区分了!

[[email protected] ~]# rabbitmqctl  stop_app   #停止rabbitmq节点服务
[[email protected] ~]#  rabbitmqctl reset     #重置rabbitmq节点
[[email protected] ~]# rabbitmqctl start_app    #启动rabbit节点服务
Starting node [email protected] ... #复制返回的节点名称
###########以下操作 rabbitmq02、03都需执行###########
[[email protected] ~]# rabbitmqctl stop_app   #停止节点服务
[[email protected] ~]# rabbitmqctl reset     #重置节点
[[email protected] ~]# rabbitmqctl join_cluster --ram [email protected]
#以内存方式加入群集,后面是复制的rabbitmq01的节点名
[[email protected] ~]# rabbitmqctl start_app
[[email protected] ~]# rabbitmq-plugins enable rabbitmq_management
#开启rabbitmq的web管理插件,以便可以通过浏览器进行访问
###########rabbitmq02、03执行完成后#################
[[email protected] ~]#  rabbitmqctl cluster_status
#查看群集状态
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]},
         {ram,[[email protected],[email protected]]}]},
 {running_nodes,[[email protected],[email protected],[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]},
 {alarms,[{[email protected],[]},
          {[email protected],[]},
          {[email protected],[]}]}]
# rabbit01工作模式为磁盘节点;rabbit02和03为内存节点模式
# running_nodes:正在运行的节点
# cluster_name:节点名称
# alarms:发生问题时rabbit01、02、03会进行报警
#####由于刚才rabbitmq01重置,所以需要重新创建用户########
[[email protected] ~]# rabbitmqctl add_user admin 123.com
[[email protected] ~]# rabbitmqctl set_user_tags admin administrator

5)访问web界面

群集内任意节点的IP+15672端口都可以进行登录访问!

6)web页面添加vhost





设置匹配策略:


设置发布消息内容:


五、单台节点加入或退出群集

1)单节点加入集群

由于我在上面部署群集时,hosts文件已经可以解析群集内的节点,所以这里就省略解析了!

#############在192.168.1.7服务器上操作###################
[[email protected] ~]#  yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
[[email protected]host ~]# chkconfig rabbitmq-server on
[[email protected] ~]#  /etc/init.d/rabbitmq-server start
[[email protected] ~]# scp [email protected]:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
#将群集中的cookie信息复制到本地,之后重启
[[email protected] ~]# rabbitmqctl stop_app
[[email protected] ~]# rabbitmqctl reset
[[email protected] ~]# rabbitmqctl join_cluster --ram [email protected]
#以内存运行的方式加入群集,若要以磁盘的方式加入,省略“--ram”选项即可
[[email protected] ~]# rabbitmqctl start_app
#开启web管理页面
[[email protected] ~]# rabbitmq-plugins enable rabbitmq_management

查看web界面:

2)单节点退出集群

[[email protected] ~]# rabbitmqctl stop_app
#先在rabbitmq04上面停止节点
[[email protected] ~]# rabbitmqctl -n [email protected] forget_cluster_node [email protected]
#-n:指定节点名称
#forget_cluster_node:后面跟要删除的节点名称
#回到主节点(rabbitmq01)上删除节点

查看web界面:

——————————本文到此结束,感谢阅读—————————————

原文地址:https://blog.51cto.com/14157628/2473622

时间: 2024-10-17 09:53:39

Rabbitmq简介及部署群集的相关文章

Rabbitmq集群部署手册

一.Rabbitmq集群部署手册 1.环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux 软件版本:otp_src_17.3:rabbitmq-server-3.2.4:Python 2.6.6:simple

RabbitMQ简介与使用

RabbitMQ简介与使用 2013年3月23日  小白  学习笔记 1. AMQP简介 在了解RabbitMQ之前,首先要了解AMQP协议.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. 当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本.AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与

Rabbitmq集群部署Haproxy

安装前的说明: 1.为了配合做rabbitmq的负载均衡,本次的安装包是安装的低版本1.5.8版本,下载包的地址:https://src.fedoraproject.org/repo/pkgs/haproxy/2.按照上两篇博客,先把rabbitmq集群装好:单机版Rabbitmq部署:http://blog.51cto.com/10950710/2135676Rabbitmq集群部署:http://blog.51cto.com/10950710/2135717 安装步骤: 1.将haproxy

分布式rabbitmq集群部署

分布式rabbitmq集群部署本次部署使用的三台centos服务器安装的erlang 版本为 21.0.4安装的rabbitmq版本为3.7.8-rc.2在三台服务器中分别安装rabbitmq-serverrabbitmq通信是建立在erlang环境中 所以需要先安装erlang环境 因为国外的erlang官方地址中中国不能直接访问,所以我们使用第三方包https://github.com/rabbitmq/erlang-rpm 安装说明地址 修改系统repo包文件修改repo# In /etc

深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署

前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring.MyBatis.Dubbo 等框架以及Log4j 等结合,支持PHP.C++.Go等多语言应用,基本接入了美团点评上海侧所有核心应用.目前在中间件(MVC.RPC.数据库.缓存等)框架中得到广泛应用,为美团点评各业务线提供系统的性能指标.健康状况.监控告警等,在微服务监控领域也是非常有用的一套组件.支撑这美团每天450亿的消息,50TB的数据监控,应用于 700

node_简介及部署安装配置

Node简介及部署安装配置 一.node简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型 Node 是一个让 JavaScript 运行在服务端的开发平台,实质是对Chrome V8引擎进行了封装. 二.node优点 1.单线程 2.非阻塞IO 3.V8虚拟机 4.事件驱动 三.下载安装 1.下载node.js 打开官网下载链接https://nodejs.org/zh-cn/downlo

Redis的安装及创建节点、部署群集

Redis简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象. Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存.在内存数据库方面的另一个优点是, 相比在磁盘上相

1、django 简介与部署

环境: Centos 6.5 python 2.7.9 1.简介 Django是一个由 python 语言编写的开源Web应用框架,使用MVC的软件设计模式. 其架构可参考:http://www.crazyant.net/1001.html 其它部分边学习边补充 2.部署 可通过pip 直接安装: [[email protected] ~]# pip install django [root@learn-python ~]# python -c "import django; print(dja

RabbitMQ的安装部署

RabbitMQ安装部署 一.软件准备 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px "Helvetica Neue"; color: #00a2ff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px "Helvetica Neue" } span.s1 { col