Centos7RabbitMQ消息队列集群-创新互联

一、简介

创新互联建站专注于企业网络营销推广、网站重做改版、雨山网站定制设计、自适应品牌网站建设、HTML5商城系统网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为雨山等各大城市提供网站开发制作服务。

   MQ(Message Queue,消息队列)是一款消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。

1、集群原理

   rabbitmq 是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbitmqctl会启动Erlang节点,并基于Erlang节点来使用Erlang系统连接RabbitMQ节点,在连接过程中需要正确的Erlang Cookie和节点名称,Erlang节点通过交换Erlang Cookie以获得认证)来实现的,所以部署rabbitmq分布式集群时要先安装erlang,并把其中一个服务的cookie复制到另外的节点。

   rabbitmq集群中,各个rabbitmq为对等节点,即每个节点均提供给客户端连接,进行消息的接收和发送。节点分为内存节点和磁盘节点,一般的,均应建立为磁盘节点,为了防止机器重启后的消息消失;

   RabbitMQ的Cluster集群模式一般分为两种, 普通模式和镜像模式 。消息队列通过rabbitmq HA镜像队列进行消息队列实体复制。

   普通模式下, 以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。

   镜像模式下, 将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。

2、系统架构

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

概念说明:

Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输

Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

Queue:消息的载体,每个消息都会被投到一个或多个队列

Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来

Routing Key:路由关键字,exchange根据这个关键字进行消息投递

vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离

Producer:消息生产者,就是投递消息的程序

Consumer:消息消费者,就是接受消息的程序

Channel:消息通道,在客户端的每个连接里,可建立多个channel

二、环境准备

1、系统环境

主机名

系统

IP

用途

master

CentOS7.4

192.168.56.129

磁盘节点

slave1

CentOS7.4

192.168.56.130

内存节点

slave2

CentOS7.4

192.168.56.131

内存节点

2、暂时关闭防火墙和selinux

3、设置三个节点主机名hosts

[root@master ~]# cat /etc/hosts

192.168.56.129 master

192.168.56.130 slave1

192.168.56.131 slave2

三、搭建服务

1、安装最新repo源

[root@master ~]# yum -y install epel-release

2、安装三个节点的rabbitmq-server软件包

[root@master ~]# yum -y install rabbitmq-server

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

3、查看已安装的插件

[root@master ~]# rabbitmq-plugins list

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

4、启动管理服务(三个节点)

[root@master ~]# rabbitmq-plugins enable rabbitmq_management

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

5、分别启动rabbitmq服务(三个节点)

[root@master ~]# systemctl start rabbitmq-server.service

rabbitmq集群部署

1、关闭服务(三个节点)

[root@master ~]# systemctl stop rabbitmq-server.service

2、进入cookie文件目录,配置(各节点需要有相同序列号值)

[root@master ~]# cd /var/lib/rabbitmq/

[root@master rabbitmq]# vim .erlang.cookie

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

3、再启动rabbitmq服务

[root@master rabbitmq]# systemctl start rabbitmq-server.service

4、关闭rabbitmq应用(只关闭slave1和slave2)

[root@master rabbitmq]# rabbitmqctl stop_app

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群

5、将slave1、slave2加入master,使它们成为一个集群。再次启动应用

[root@slave1 ~]# rabbitmqctl join_cluster --ram rabbit@master

[root@slave1 ~]# rabbitmqctl start_app

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群Centos7 RabbitMQ消息队列集群6、分别查看rabbitmq服务器状态

[root@master ~]# rabbitmqctl cluster_status

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群7、通过客户端浏览器进行访问RabbitMQ (用户名:guest 密码:guest)

http://192.168.56.129:15672

Centos7 RabbitMQ消息队列集群

Centos7 RabbitMQ消息队列集群

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:Centos7RabbitMQ消息队列集群-创新互联
转载来于:http://azwzsj.com/article/cccpoj.html