Windows 下搭建RabbitMQ集群

RabbitMQWindows集群操作

1、下载Erlang程序,可以在http://www.erlang.org/download.html这个地方找到最新的Erlang/OTP

2、安装rabbitmq-server-windows程序,下载http://www.rabbitmq.com/server.html

3、分别在每个集群机器上面配置hosts文件,里面是机器的IP地址和机器的名称

例如:192.168.1.26 rabbitmqwin1

192.168.1.40 rabbitmqwin2

4、集群时需要保证erlang的cookie各个机器一致,否则无法通信。

任意选择一台集群中的机器,进入到C:\Windows目录下,找到.erlang.cookie文件,复制该文件并替换其他各个机器,再把该文件复制到每台集群机器的目录:C:\Users\Administrator  下。保证所有机器下面的这两个目录下的cookie文件内容一致。

5、命令行方式

  1. 将各节点的rabbitmq服务开启: rabbitmq-service start
  2. 选择其中一个节点将其停止: rabbitmqctl stop_app
  3. 将步骤2中的机器加入集群: rabbitmqctl join_cluster (--ram) [email protected]

(ram 为内存节点, 默认情况下为disc磁盘节点) 注意此时的node在windows机器下面是大写的。

  1. 开启rabbitmq服务: rabbitmqctl start_app
  2. 查看集群状况: rabbitmqctl cluster_status

*以上是单个节点加入集群的方式,只要一个节点加入到集群中的任何一个节点,该节点就算是加入到了集群中.

6、自动化集群

2  关闭所有节点的服务: rabbitmqctl stop_app, rabbitmqctl reset, rabbitmqctl stop

2  在各节点机器下C:\Users\Administrator\AppData\Roaming\RabbitMQ 创建rabbitmq.config文件, 内容为

[{rabbit, [{cluster_nodes, {[‘[email protected]‘, ‘[email protected]‘], disc}}]}].

该配置方式和命令行一样,可以一次将所有节点都写在配置中,也可以只写集群中的一个节点,disc也可改为ram

2  启动所有节点: rabbitmq-server –detached

2  查看集群状况: rabbitmqctl cluster_status

在镜像状况下查看队列的Mater-Slave关系

rabbitmqctl -n [nodename] list_queues name pid slave_pids

在镜像状况下查看队列的Mater-Slave关系及队列的同步状况

rabbitmqctl -n [nodename] list_queues name pid slave_pids synchronised_slave_pids

更多命令请看:

http://www.rabbitmq.com/man/rabbitmqctl.1.man.html

Windows下的rabbitmq的开启与停止也可以在计算机服务中进行手动的开启和停止的。尽量不要用自带的服务,可以使其停止。

erlang profiler tool:

C:\Program Files\erl5.10.1\lib\observer-1.3\priv\bin

命令:etop  perf -node [email protected] -tracing off

队列镜像

  1. 镜像的意义:

因为集群只是将各个node的元数据复制到各个node,但是每个node的queue及其内容不会复制过去,所以当发生某个node down了,那么这个节点的队列内容就丢失了,而镜像则是将queue中的内容复制到设定的其他node中。

  1. Mirrio Queue Behavior

2.1    一个队列镜像会在各个node中建立master-slave队列,一旦master中的队列接   收到了消息,则该消息会同步到slave的队列中,并且保证顺序一致。

2.2    如果镜像队列的slave node挂了,那么client不会有什么影响或收到通知

2.3    如果镜像队列的master node挂了,那么其中一个slave会自动接替为master,并会发生如下变化:

2.3.1          最老的那个slave会被提升为master,因为它最有可能包含最多的master消息,如果之前没有同步,则master中的部分消息会丢失.

2.3.2          Slave node会认为之前所有的consumers突然断线,结果就是它会将所有已发出但是还没收到确认的消息重新发送出去,可能consumers已经接收过了,但是对于new master来说,它别无选择。

2.3.3          如果consumer client支持Consumer Cancellation Notifications扩展,那么将会接收一个通知,表明他们订阅的镜像队列已经突然取消了。这时应该re-consume new master的镜像队列,需要重新和存活下来的集群node建立连接。

2.3.4          对于re-comsume 来说,有可能会接收到之前接收过的消息

2.4    Publish client 仍然会接收到confirm消息即便是master(或任何slave)在消息发布后和confirm消息在发送过程中fail了。

2.5    镜像队列支持Confirm和Transactions,当镜像队列中所有的节点的队列都得到应用之后,confirm或transactions才会被认为成功。

  1. 未同步的Slaves

一个新的node加入到cluster后,该node中的队列是空的,不包含任何已有的队列中的内容,当前,没有对已有内容的同步协议。只能从加入之后开始同步接收到的消息。当之前已有的消息都被取走以后,那么该队列才会被认为是和master中的相关队列同步了。所以建议在配置镜像之前就先将各个node加入到cluster,这样就能确保所有Node中的镜像队列都是已同步的。

可以通过以下命令查看已同步的slaves:

Rabbitmqctl list_queues name slave_pids synchronised_slave_pids

  1. 开始和停止node

如果停止了包含镜像master队列的node, 那么其他的slave会被提升为master。如果继续停止,则最后一个node(支持持久化)停止后,它的镜像队列的内容会在该node重启以后恢复,但是如果这时重启了其他的node,则那么node会重新加入镜像队列,不过它们本地所包含的内容或被丢弃,就好像它们是新加入的一样。

  1. 配置镜像

队列通过policy开启镜像功能。在任何时候可以修改policy,也可以先创建非镜像队列,然后让它变成镜像队列,反之亦然。非镜像队列相比镜像队列会运行得更快,因为它不包含额外的镜像基础结构。


ha-mode


ha-params


Result


all



匹配policy的队列会在所有的node中建立镜像,当一个新的node加入,自动在该node中创建那个匹配的队列


exactly


数量


在指定数量的nodes中创建匹配policy队列镜像。如果cluster中node个数少于指定数量,则同all.如果多于指定数量,并且其中包含镜像的node挂了,那么不会在其他没有创建镜像的node中创建镜像


nodes


node names


在指定名字的node中创建匹配policy队列的镜像。如果cluster中不包含任何指定的node,不会引发错误。如果指定的node在队列声明时都不在线,那么队列将会在client连接的那个node上创建。

案例:

创建一个名字以ha.开头的队列的镜像到集群中所有的nodes中


rabbitmqctl


rabbitmqctl set_policy ha-all "^ha\." ‘{"ha-mode":"all"}‘


rabbitmqctl (Windows)


rabbitmqctl set_policy ha-all "^ha\." "{""ha-mode"":""all""}"


HTTP API


PUT /api/policies/%2f/ha-all {"pattern":"^ha\.", "definition":{"ha-mode":"all"}}


Web UI

  • Navigate to Admin > Policies > Add / update a policy.
  • Enter "ha-all" next to Name, "^ha\." next to Pattern, and "ha-mode" = "all" in the first line next to Policy.

Click Add policy.

创建一个名字以two.开头的队列的镜像到集群中任意2个nodes中:


rabbitmqctl


rabbitmqctl set_policy ha-two "^two\." \

‘{"ha-mode":"exactly","ha-params":2}‘


rabbitmqctl (Windows)


rabbitmqctl set_policy ha-two "^two\." ^

"{""ha-mode"":""exactly"",""ha-params"":2}"


HTTP API


PUT /api/policies/%2f/ha-two {"pattern":"^two\.", "definition":{"ha-mode":"exactly", "ha-params":2}}


Web UI

  • Navigate to Admin > Policies > Add / update a policy.
  • Enter "ha-two" next to Name and "^two\." next to Pattern.
  • Enter "ha-mode" = "exactly" in the first line next to Policy, then "ha-params" = 2 in the second line, and set the type on the second line to "Number".

Click Add policy.

时间: 2024-10-05 13:42:38

Windows 下搭建RabbitMQ集群的相关文章

Windows环境下搭建rabbitmq集群与负载

欢迎提出意见及建议,发现错误请留言 需要的文件下载: 百度云:链接:https://pan.baidu.com/s/1gpZa2NjNxviEnihjS2Viuw  提取码:39hi  复制这段内容后打开百度网盘手机App,操作更方便哦 蓝奏云:下载:https://www.lanzous.com/i54x5da 密码:cgb9 参考博文: https://blog.csdn.net/elie_yang/article/details/86657851 https://blog.csdn.net

Windows下搭建Redis集群

Redis集群:运行多个Redis实例,然后通过特定的工具,将这些实例以某种关系连接起来,形成一个Redis网络. 详细的内容可以阅读:Redis 集群教程 里面会详细介绍Redis集群的设计思想和内部结构,以及如何搭建Redis集群等. 本文主要讲述如何在Windows系统下快速搭建Redis集群: 1.下载Redis 其GitHub连接如下:https://github.com/MSOpenTech/redis/releases/ Redis提供msi和zip格式的下载文件,这里下载zip格

RabbitMQ:Docker环境下搭建rabbitmq集群

RabbitMQ作为专业级消息队列:如何在微服务框架下搭建 使用组件 文档: https://github.com/bijukunjummen/docker-rabbitmq-cluster 下载镜像: git clone https://github.com/bijukunjummen/docker-rabbitmq-cluster.git cd docker-rabbitmq-cluster/clusterdocker-compose up -d 等待下载完成: 会自动构建3个rabbitM

Redis → Windows下搭建redis集群

一,redis集群介绍 Redis cluster(redis集群)是在版本3.0后才支持的架构,和其他集群一样,都是为了解决单台服务器不够用的情况,也防止了主服务器宕机无备用服务器,多个节点网络互联数据共享,所有节点都是一主一从(也可以一主多从),其中不提供服务,只做为备份,emmm我就不多说废话了,直接进入主题. 没有多的服务器就只能单机搭建集群了 原文地址:https://www.cnblogs.com/BalmyLee/p/12019398.html

在Windows中单机环境下创建RabbitMQ集群

本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开源软件,使用范围较广. 因为自己使用的是Windows系统,因此简而言之入手点自然就是RabbitMQ提供的bat文件了.RabbitMQ提供了5个bat文件,分别是:rabbitmq-service.bat,rabbitmq-server.bat,rabbitmq-plugins.bat,rabb

windows下hadoop的集群分布式部署

下面我们进行说明一下hadoop集群的搭建配置. 本文假设读者具有hadoop单机配置的基础,相同的部分不在重述. 以三台测试机为例搭建一个小集群,三台机器的ip分别为 192.168.200.1;192.168.200.2;192.168.200.3 cygwin,jdk的安装同windows下hadoop的单机伪分布式部署(1),这里略过. 1.配置 hosts 在三台机子的hosts文件中加入如下记录: 192.168.200.1 hadoop1  #master namenode 192

Windows 环境搭建Redis集群

环境以及引用资料 1.windows server 2008 r2 enterprise  (木有办法,公司的服务器全是如此,就这种环境搭建吧) 2.redis官方资料下载: https://redis.io/download 3.redis官方没有提供相关的程序包,但是Microsoft Open Tech group提供并维护了相关的redis安装包 https://github.com/MSOpenTech/redis(只是提供64位程序) 这里说一句,很多公司的redis都是部署在lin

在windows上搭建redis集群

一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址   https://github.com/MSOpenTech/redis/releases ;  下载Redis. 集群规划有三个节点的集群,每个节点有一主一备.需要6台虚拟机. 把 redis 解压后,再复制出 5 份,配置 三主三从集群. 由于 redis 默认端口号为 6379,那么其它5份的

windows下安装redis集群

前几天在自己在本机win10 电脑下部署了redis集群. 主要通过的是网上两个博客: 如何在windows下部署redis集群:https://blog.csdn.net/zsg88/article/details/73715947 redis的一些操作:https://blog.csdn.net/mlc1218559742/article/details/52640180 原文地址:https://www.cnblogs.com/tuanz/p/9359037.html