RabbitMQ管理(5)——集群管理

rabbitmqctl join_cluster {cluster_node} [–ram]
将节点加入指定集群中。在这个命令执行前需要停止RabbitMQ应用并重置节点。更多详细内容请参考RabbitMQ安装

rabbitmqctl cluster_status
显示集群的状态。更多详细内容请参考RabbitMQ安装

rabbitmqctl change_cluster_node_type {disc|ram}
修改集群节点的类型。在这个命令执行前需要停止RabbitMQ应用。更多详细内容请参考RabbitMQ安装

rabbitmqctl forget_cluster_node [–offline]
将节点从集群中删除,允许离线执行。更多详细内容请参考RabbitMQ安装

rabbitmqctl update_cluster_nodes {clusternode}
在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新相应的集群信息。这个和join_cluster不同,它不加入集群。考虑这样一种情况,节点A和节点B都在集群中,当节点A离线了,节点C又和节点B组成了一个集群,然后节点B又离开了集群,当A醒来的时候,它会尝试联系节点B,但是这样会失败,因为节点B已经不在集群中了。rabbitmqctl update_cluster_nodes -n A C可以解决这种场景。
示例如下:

##假设已有node1和node组成的集群
##1.初始状态
[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node2]}]},
 {running_nodes,[rabbit@node2,rabbit@node1]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
 {alarms,[{rabbit@node2,[]},{rabbit@node1,[]}]}]
##2.关闭node1节点的应用
[root@node1 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node1
##3.之后将node3加入到集群中(rabbitmqctl join_cluster rabbit@node2)
##4.再将node2节点的应用关闭
##5.最后启动node1节点的应用,此时会报错
[root@node1 ~]# rabbitmqctl start_app
Starting node rabbit@node1
BOOT FAILED
===========
Timeout contacting cluster nodes: [rabbit@node2].
....(省略)
##6.如果在启动node1节点的应用之前咨询node3并更新相关集群信息则可以解决这个问题
[root@node1 ~]# rabbitmqctl update_cluster_nodes rabbit@node3
Updating cluster nodes for rabbit@node1 from rabbit@node3
[root@node1 ~]# rabbitmqctl start_app
Starting node rabbit@node1
##7.最终集群状态
[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node3]}]},
 {running_nodes,[rabbit@node3,rabbit@node1]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
 {alarms,[{rabbit@node3,[]},{rabbit@node1,[]}]}]

rabbitmqctl force_boot
确保节点可以启动,即使它不是最后一个关闭的节点。通常情况下,当关闭整个RabbitMQ集群时,重启的第一个节点应该是最后关闭的节点,因为它可以看到其它节点所看不到的事情。但是有时会有一些异常情况出现,比如整个集群都掉电而所有节点都认为它不是最后一个关闭的。在这种情况下,可以调用rabbitmqctl force_boot命令,这就告诉节点可以无条件的启动节点。在此节点关闭后,集群的任何变化,它都会丢失。如果最后一个关闭的节点永久丢失了,那么你需要优先使用rabbitmqctl forget_cluster_node –offline命令,因为它可以确保镜像队列的正常运转。
示例如下:

[root@node2 ~]# rabbitmqctl force_boot
Forcing boot for Mnesia dir /opt/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@node2
[root@node2 ~]# rabbitmq-server –detached

rabbitmqctl sync_queue [-p vhost] {queue}
指示未同步队列queue的slave镜像可以同步master镜像行的内容。同步期间此队列会被阻塞(所有此队列的生产消费者都会被阻塞),直到同步完成。此条命令执行成功的前提是队列queue配置了镜像。注意,未同步队列中的消息被耗尽后,最终也会变成同步,此命令主要用于未耗尽的队列。
示例如下:

[root@node1 ~]# rabbitmqctl sync_queue queue
Synchronising queue 'queue' in vhost '/'

rabbitmqctl cancel_sync_queue [-p vhost] {queue}
取消队列queue同步镜像的操作。
示例如下:

[root@node1 ~]# rabbitmqctl cancel_sync_queue queue
Stopping synchronising queue 'queue' in vhost '/'

rabbitmqctl set_cluster_name {name}
设置集群名称。集群名称在客户端连接时会通报给客户端。Federation和Shovel插件也会有用到集群名称的地方。集群名称默认是集群中第一个节点的名称,通过这个命令可以重新设置。
示例如下:

[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node2]}]},
 {running_nodes,[rabbit@node2,rabbit@node1]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
 {alarms,[{rabbit@node2,[]},{rabbit@node1,[]}]}]
[root@node1 ~]# rabbitmqctl set_cluster_name cluster_hidden
Setting cluster name to cluster_hidden
[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node2]}]},
 {running_nodes,[rabbit@node2,rabbit@node1]},
 {cluster_name,<<"cluster_hidden">>},
 {partitions,[]},
 {alarms,[{rabbit@node2,[]},{rabbit@node1,[]}]}]
时间: 2024-12-31 18:03:33

RabbitMQ管理(5)——集群管理的相关文章

Hadoop - Ambari集群管理剖析

1.Overview Ambari是Apache推出的一个集中管理Hadoop的集群的一个平台,可以快速帮助搭建Hadoop及相关以来组件的平台,管理集群方便.这篇博客记录Ambari的相关问题和注意事项.方便为初学者省去搭配各个社区版的烦恼. 2.How to works 在Ambari的官方WIKI上介绍了如何去使用Ambari,[官方文档].官方说法比较简要,下面我补充相关注意事项,并给大家罗列一个详细的步骤. 2.1 Env 首先,节点(物理机)需要实现准备好,这里笔者准备了5台节点,大

[喵咪Liunx(5)集群管理利器pssh

[喵咪Liunx(5)集群管理利器pssh 前言 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件更改任何一个配置文件就要无比麻烦的每一台机器都去执行命令(当然用docker等的请无视),pssh可以帮我们解决这些问题,可以吧准备好的脚本批量在所有机器上进行执行,帮助你批量管理服务器集群! 附上: 喵了个咪的博客:w-blog.cn pssh官网地址:http://www.theether.org/pssh/ 1. 安装 pssh和mon

从单机到集群会话的管理之集群模式二(更大的集群)

<从单机到集群会话的管理之集群模式一>中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群. 下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体.前面各种模式的实现都无需负

pdsh、ClusterSSH和mussh集群管理软件

我是想把 /etc/hosts 文件 分发到 10.205.10.11至20机器上 安装命令 sudo yum -y install clusterssh pdsh pdsh-rcmd-ssh pdsh-rcmd-rsh mussh pdcp -w ssh:root@srv[11-20] /etc/hosts /etc/ pdsh软件包还包括一个pdcp命令,可以将文件拷贝到一组机器上,用法如下:pdsh -w [SSH_OR_RSH]:[USERNAME]@nodesrv[1,2-4,5] S

Java微服务开发指南 -- 集群管理、失败转移和负载均衡的实践

集群管理.失败转移和负载均衡的实践     在前一章节中,我们快速的介绍了集群管理.Linux容器,接下来让我们使用这些技术来解决微服务的伸缩性问题.作为参考,我们使用的微服务工程来自于第二.第三和第四章节(Spring Boot.Dropwizard和WildFly Swarm)中的内容,接下来的步骤都适合上述三款框架. 开始     我们需要将微服务打包成为Docker镜像,最终将其部署到Kubernetes,首先进入到项目工程hola-springboot,然后启动jboss-forge,

思科又发紧急安全通告 IOS集群管理协议漏洞和Struts2漏洞 有影响产品列表及应对措施了

思科今天更新了两个"紧急"的安全通告,一个针对 Cisco互联网操作系统(IOS) 和Cisco IOS XE Software,另一个针对问题不断的 Apache Struts2 ,确认了两个漏洞对于思科产品的影响列表(密密麻麻数不清,大家点文末的官方文档,自己看吧),并给出了临时应对措施.在此之前,绿盟科技 曾就前一个漏洞 CVE-2017-3881 作出应对措施的整理 . 思科集群管理协议漏洞CVE-2017-3881 思科表示, IOS漏洞存在于Cisco IOS和Cisco

Spark集群管理器介绍

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器. Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式:如果是想让Spark部署在其他集群上,各应用共享集群的话,可以采取两种集群管理器:Hadoop Yarn 或 Apache Mesos. 一.独立集群管理器 Spark独立集群管理器提供的在集群上运行应用的简单方法.要使用集群启动脚本,按照以下步骤执行即可: 1.将编译好的Spark发送到集群的其

DockOne微信分享( 九十五):树莓派上的Docker集群管理

本文讲的是DockOne微信分享( 九十五):树莓派上的Docker集群管理[编者的话]随着IOT市场的火热发展,Docker天然的轻量级以及帮助业务快速重构的特性,将会在IOT领域迎来巨大发展潜力,甚至有可能会比它在云端的潜力更大.本文将致力于构建一个利用Rancher&RancherOS来管理运行在树莓派上的容器集群. 目前业界主流基本都是在x86架构上使用Docker,除了因为Intel在服务器领域的绝对领导地位之外,x86 CPU的确在性能上有着卓越的表现.但是近些年来,随着云计算的迅猛

ONOS集群管理架构分析

除了分发数据,ONOS集群还要负责以下的任务: 1.检测和处理集群节点的加入和离开(由Cluster Subsystem管理) 2.为每一个设备提供一个主Controller ONOS集群协调的一个重要工具便是Store,Store生成事件,事件被分布式储存持久化,在集群中共享. 根据具体服务的需求,储存的内容可以有不同的特征,如强一致性或最终一致性,这使得每个服务的储存根据需求采用合适的分布机制. 目前ONOS主控部分采用Hazelcast以达到强一致性,而Device.Link等部分的管理使

Hadoop 集群管理上的新“绝招”

Hadoop在一些企业部署时,往往会遇到多个用户各自创建的数据处理工作的情况.这些工作都运行在同一个Hadoop系统上时,他们之间可能会彼此冲突,争夺可用的处理器资源. David Clubb,在移动游戏平台和市场公司Chartboost的高级数据工程师,试图优化大数据技术,提升产品体验时,也遇到了Hadoop集群管理的问题."我们正在更新Hadoop软件,并试图将其迁移到新的集群,但并没有找到监控集群的好方法,"Clubb说道."你可以看到工作在运行,但你却不能看到其所使用