Rabbitmq群集搭建

Rabbitmq群集搭建

实验介绍

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

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

MQ实际应用

RabbitMQ使用Erlang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。RabbitMQ模式大概分为三种:

  • 单一模式
  • 普通模式(默认就是集群模式)
  • 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案,在对业务可靠性较高的场合中比较适用)
    要实现镜像模式,首先需要搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。

试验环境

IP地址 主机名 操作系统 用途
192.168.58.141 rabbitmq01 CentOS7 磁盘节点
192.168.58.132 rabbitmq02 CentOS7 内存节点
192.168.58.130 rabbitmq03 CentOS7 内存节点

实验部署

首先我们需要配置三个节点的hosts文件,将下面内容分别加入到三台服务器上。

[[email protected] /]# vim /etc/hosts
192.168.58.141 rabbitmq01
192.168.58.132 rabbitmq02
192,168.58.130 rabbitmq03

然后需要修改三个节点的主机名,修改每个节点的/etc/hostname文件

[[email protected] /]# vim /etc/hostname
rabbitmq01
[[email protected] /]# vim /etc/hostname
rabbitmq02
[[email protected] /]# vim /etc/hostname
rabbitmq03

然后将三个节点重启,当启动以后要关闭防火墙和增强性安全功能。

[[email protected] /]# systemctl stop firewalld.service
[[email protected] /]# setenforce 0
[[email protected] /]# yum install -y epel-release  #安装epel源
[[email protected] /]# yum install -y rabbitmq-server  #安装rabbitmq软件包
[[email protected] /]# ln -s /usr/lib/rabbitmq/bin/* /usr/bin   #建立软链接,方便直接使用命令
[[email protected] /]# rabbitmq-plugins list           #查看插件安装情况
[e] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[e] mochiweb                          2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0                  3.3.5
[ ] rabbitmq_auth_backend_ldap        3.3.5
[ ] rabbitmq_auth_mechanism_ssl       3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation               3.3.5
[ ] rabbitmq_federation_management    3.3.5
[E] rabbitmq_management               3.3.5
[e] rabbitmq_management_agent         3.3.5
[ ] rabbitmq_management_visualiser    3.3.5
[ ] rabbitmq_mqtt                     3.3.5
[ ] rabbitmq_shovel                   3.3.5
[ ] rabbitmq_shovel_management        3.3.5
[ ] rabbitmq_stomp                    3.3.5
[ ] rabbitmq_test                     3.3.5
[ ] rabbitmq_tracing                  3.3.5
[e] rabbitmq_web_dispatch             3.3.5
[ ] rabbitmq_web_stomp                3.3.5
[ ] rabbitmq_web_stomp_examples       3.3.5
[ ] sockjs                            0.3.4-rmq3.3.5-git3132eb9
[e] webmachine                        1.10.3-rmq3.3.5-gite9359c7

[[email protected] /]# rabbitmq-plugins enable rabbitmq_management
#启用rabbitmq_management服务
[[email protected] /]# systemctl start rabbitmq-server.service   #启动mq服务
[[email protected] /]# netstat -ntap | grep 5672
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      3878/beam
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      3878/beam
tcp6       0      0 :::5672                 :::*                    LISTEN      3878/beam   

有上面三个端口开启说明正常。15672和55672都是rabbitmq的管理端口,5672是生产者、消费者通信的端口。

[[email protected] /]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]}]},
 {running_nodes,[[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]}]
...done.
#检查三台的集群状态,目前相互独立,没有形成集群。

[[email protected] /]# vim /var/lib/rabbitmq/.erlang.cookie
#三台节点服务器的这个文件中的编码需要配置成一样的,复制内容到其他两台
PKBPLZGDCESRUHHDCOJV




然后将rabbitmq02、rabbitmq03作为内存节点与rabbitmq01磁盘节点连接起来,在rabbitmq02和rabbit03上执行下面的命令:

[[email protected] ~]# rabbitmqctl join_cluster --ram [email protected]
Clustering node [email protected] with [email protected] ...
...done.
[[email protected] yum.repos.d]# rabbitmqctl join_cluster --ram [email protected]
Clustering node [email protected] with [email protected] ...
...done.

在rabbitmq01节点上查看集群状态:

[[email protected] /]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]},
         {ram,[[email protected],[email protected]]}]},
 {running_nodes,[[email protected]]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]}]
...done.
#可以看到集群中的成员

打开浏览器输入http://192.168.58.141:15672,可以看到访问页面,账号密码都是guest,进入到里面就能看到图形化的界面。

原文地址:http://blog.51cto.com/10693404/2152982

时间: 2024-10-10 01:15:05

Rabbitmq群集搭建的相关文章

lvs负载均衡群集搭建(DR)

lvs负载均衡群集搭建(DR) 1:之前有讲过使用NAT技术的lvs的群集搭建接下来使用DR的直接路由模式来搭建负载均衡群集 2:在DR模式中.lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点来自internet.发送给客户端的web相应数据包不需要经过负载调度器:这种方式入站.出站访问数据分别被处理,因此lvs负载调度器和所有节点服务器都需要配置VIP地址,以便响应整个群集的访问. VIP地址192.168.1.254 负载均衡服务器           web1服务

千万PV,RabbitMQ群集配置

千万PV RabbitMQ群集配置 (1)什么是RabbitMQ RabbitMQ (Message Qucue, 消息队列)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来连接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术. 排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求 (2)RabbitMQ应用场景 在项目中,

MGR群集搭建

MGR群集搭建 环境 IP地址 主机名 数据库 端口号 Server_ID 操作系统 192.168.144.10 apenglinux-001.cn MySQL5.7.26 3306 100 CentOS7.5 192.168.144.20 apenglinux-002.cn MySQL5.7.26 3306 101 CentOS7.5 192.168.144.30 apenglinux-003.cn MySQL5.7.26 3306 102 CentOS7.5 single master 模

数据库_MHA群集搭建

MHA概念介绍,群集搭建与测试 一, MHA介绍 1.概念:MHA master high availability,由日本DeNA公司开发,解决mysql故障切换可以做到0-30秒,而且在故障切换过程中,能最大限度保障数据的一致性,实现真正的高可用. 2.组成:管理节点(MHA manager),管理所有数据库服务器,可以部署于一台独立的主机,也可以与某台数据库服务器共用一台主机;数据节点(MHA node),运行在每台存储数据的服务器上. 3.原理:由manager探测集群中的master节

ElasticSearch群集搭建介绍,实现高可用

ElasticSearch简介:ElasticSearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值.ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elastic Search 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户.

Redis群集搭建

Redis群集搭建 实验环境 两台Centos 7虚拟机,均添加三块网卡用以模拟六台服务器实景 服务器角色 IP地址 centos7-1 主节点M1 192.168.142.130 centos7-2 主节点M2 192.168.142.145 centos7-3 主节点M3 192.168.142.146 centos7-4 从节点S1 192.168.142.143 centos7-5 从节点S2 192.168.142.147 centos7-min 从节点S3 192.168.142.1

haproxy群集搭建web群集

 haproxy群集调度器搭建web群集 1:haproxy调度器是目前市场上比较流行的群集调度器,当然调度器有好多种类:lvs.nginx.和haproxy,接下来对它们进行比较看看它们的优缺点: lvs:工作在七层模型的4层传输层:根据ip+端口进行访问:不考虑访问的内容,可以任意访问,基于ip地址,能实现所有应用构建的群集,性能好,可以和keepalived完美结合.稳定性能好.健康检查节点服务器性能较好:搭建时结构相对复杂 nginx:工作在7层应用层,根据内容.ip网页进行给用户分配内

RabbitMq ----&gt; 环境搭建和使用

1.环境搭建 参考官网 https://www.rabbitmq.com/install-windows.html 2.RabbitMQ入门教程,参考官网 ,有java,spring boot,Python,php,go等,目前关注这几种的用法. https://www.rabbitmq.com/getstarted.html 3.RabbitMQ使用场景 参考下面博文 CSDN https://blog.csdn.net/whoamiyang/article/details/54954780

在CentOS7上实现RabbitMQ群集配置

一.什么是RabbitMQMQ(消息队列)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队值得是应用程序通过队列来通信.队列的使用出去了接收和发送应用程序同时执行的要求.RabbitMQ是目前流行的开源消息队列系统,用Erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现.