热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Rabbitmq群集搭建

本文由编程笔记#小编为大家整理,主要介绍了Rabbitmq群集搭建相关的知识,希望对你有一定的参考价值。 Rabbitmq群集搭建实验介绍MQ(Message Queue消息队列)是一种应用程序对应用
本文由编程笔记#小编为大家整理,主要介绍了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.141rabbitmq01CentOS7磁盘节点
192.168.58.132rabbitmq02CentOS7内存节点
192.168.58.130rabbitmq03CentOS7内存节点

实验部署

首先我们需要配置三个节点的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&#160;protected]">>},
{partitions,[]}]
...done.
#检查三台的集群状态,目前相互独立,没有形成集群。
[[email&#160;protected] /]# vim /var/lib/rabbitmq/.erlang.COOKIE
#三台节点服务器的这个文件中的编码需要配置成一样的,复制内容到其他两台
PKBPLZGDCESRUHHDCOJV

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

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

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

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

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


推荐阅读
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Linux下安装依赖包版本高解决方法
    本文介绍了在Linux系统下,当已安装的依赖包版本高于需要安装的依赖包版本时,解决方法包括欺骗安装程序和修改相关配置文件等操作。针对不同情况,提供了不同的解决方案。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 怎么解决oracle提示框显示不全问题
    这篇文章主要介绍“怎么解决oracle提示框显示不全问题”,在日常操作中,相信很多人在怎么解决oracle提示框显示不全问题问题上存在疑惑,小编查阅 ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
author-avatar
齐cC含低
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有