• Windows下的RabbitMQ安装:集群与镜像


    RabbitMq本身支持集群,但其本身并不支持负载均衡。

    说一下我自己的理解:

    RabbitMQ的集群分为两种模式:默认模式、镜像模式

    默认模式:

    将多个service连接在一起,变成一个集群,可以从任意一台service上生产消息和消费消息,客户端可以连接任意一个service,如果要生产或者消费的消息不在当前连接的service上,集群会从所在的service上获取或生产消息。

    当一个service意外停止后,再向这个server生产或消费消息则会报错。

    镜像模式:

    镜像模式是在默认模式上增加,创建镜像后会根据镜像的规则将一个消息复制到所有的集群上,消息被确认后所有集群上的消息会被清除掉,不会重复消费。(queues在哪个service上哪个service就是主节点)

    当主service意外停止后,RabbitMQ会从集群中提出一个创立时间最早的子节点作为主节点,当service重新加入集群后会变为从节点。

    主节点停止后,从节点变为主节点,这个转换的时间内如果生产新的消息会丢失。

    镜像模式相对于默认模式的一点弊端是浪费带宽,镜像模式的消息在集群中复制会浪费带宽,默认模式则是在消费或生产消息时在集群内部传输。

    windows上配置RabbitMQ集群+镜像

    Erlang的集群中各节点是经由过程一个magic cookie来实现的,两台服务器上的cookie要一致,把主服务器的cookie放到其他从服务器上。cookie存放位置为:

    C:Users用户名.erlang.cookie

    C:WindowsSystem32configsystemprofile.erlang.cookie

    一、修改Host文件

    测试使用两台windows server 2008 R2虚拟机,ip分别为192.168.174.128,192.168.174.129

    首先找到两台的节点名称,登陆后右上角有展示。

    两台机器的host都增加

    二、修改rabbitmq.config文件,增加集群节点。(不是安装目录)

    安装目录下的Readme.txt有指明config存放位置,默认没有config文件,将rabbitmq.config.example复制一份重命名成rabbitmq.config

    C:Users用户名AppDataRoamingRabbitMQ abbitmq.config

    config文件内容类似于Json的格式,找到cluster_nodes节点,去掉前边两个百分号,(百分号是注释)修改内容为(去掉后边的逗号):

    {cluster_nodes,['rabbit@WIN-3CT43O6NT2I','rabbit@WIN-JHVN0BHLM7L']}

    注:捎带写一下修改Rabbit默认端口号。(公司机房固定某几个端口可访问,所以要改默认端口号)

    找到tcp_listeners去掉前边百分号改为{tcp_listeners, [8080]};(参照Json格式的写法,如果只修改端口号则去掉后边的逗号“,”;如果修改端口号后边还有其他节点修改则要加上结尾的逗号,最后一个节点不加逗号)

    下图是删除config注释后的文件内容:

    注:网上有的文章说要添加rabbitmq-env.conf文件,我用的这个版本不用添加这个文件(测试过了),其余版本不清楚。

    三、增加集群节点

    cd 到安装目录的sbin文件下执行命令,添加集群节点(开始菜单Rabbit有cmd命令行工具)

    rabbitmqctl stop_app  //停止 

    rabbitmqctl reset// 此命令不执行也行,此命令是清除所有节点,类似于恢复出厂设置,清除报错可以强制清除 rabbitmqctl force_reset;强制清除会将Rabbit恢复成初始状态,Cluster名称也会变,需要重新配置集群;

    rabbitmq-service.bat install //重新安装服务,这时才会重新加载config文件 

    rabbitmqctl join_clusterrabbit@USER-20160306SN  //添加集群节点;其中一台服务器执行就可以,大概意思是将两个Rabbit创建成集群

    rabbitmqctl start_app  //启动

    至此RabbitMQ的集群就设置好了,登陆任意一个web管理端可以看到这个集群

    注:如果要一个子节点退出集群要在子节点上执行

    rabbitmqctl stop_app  //停止 

    rabbitmqctl reset

    rabbitmq-service.bat install //重新安装服务,这时才会重新加载config文件

    rabbitmqctl start_app  //启动

    在主节点上执行

    rabbitmqctl forget_cluster_node rabbit@USER-20160306SN

    注:RABBITMQ集群重启

    集群重启时,最后一个挂掉的节点应该第一个重启,如果因特殊原因(比如同时断电),而不知道哪个节点最后一个挂掉。可用以下方法重启:

    先在一个节点上执行

    rabbitmqctl force_boot

    service rabbitmq-server start

    在其他节点上执行

    service rabbitmq-server start

    查看cluster状态是否正常(要在所有节点上查询)。

    rabbitmqctl cluster_status

    四、创建镜像

    登陆web管理平台,点击admin,点击Policies,创建镜像,选择VirtualHost,填写名称 Pattarn填写^表示镜像全部,可以填写其他内容,正则表达式的方式例:^ra则匹配ra开头的Queues;

    Definiton需要填写两个:Ha model=all(镜像全部queues)Ha sync mode=automatic(集群掉线重启后自动同步,不设置需要手动同步)

    priority优先级,数字越大表示优先级越高。默认值为0

     

    添加完之后镜像就创建好了。

    参考信息:

    仅供参考,内容中会引用部分博友的文章。(侵删)
  • 相关阅读:
    HDU 3501 Calculation 2 ——Dirichlet积
    BZOJ 1101 [POI2007]Zap ——Dirichlet积
    BZOJ 1257 [CQOI2007]余数之和sum ——Dirichlet积
    SGU 194 Reactor Cooling ——网络流
    BZOJ 1497 [NOI2006]最大获利 ——网络流
    BZOJ 2705 [SDOI2012]Longge的问题 ——Dirichlet积
    BZOJ 1653 [Usaco2006 Feb]Backward Digit Sums ——搜索
    BZOJ 1861 [Zjoi2006]Book 书架 ——Splay
    BZOJ 3130 [Sdoi2013]费用流 ——网络流
    BZOJ 3990 [SDOI2015]排序 ——搜索
  • 原文地址:https://www.cnblogs.com/zeran/p/10773709.html
Copyright © 2020-2023  润新知