zoukankan      html  css  js  c++  java
  • C#队列学习笔记:RabbitMQ搭建集群

        一、环境准备

        假设有两台服务器:

        注意事项:

        1)所有服务器的Erlang及RabbitMQ版本必须一样。

        2)服务器名大小写敏感。

        二、开始搭建

        2.1、设置hosts文件

        路径如下:C:WindowsSystem32driversetc

        在hosts文件中添加主机及备机的IP地址及计算机名。需要注意的是:主机及备机都要设。

        2.2、开启集群端口

        假如您的主机及备机都没有开启防火墙,2.2可以略过;若开启了防火墙,需要在开启了防火墙的服务器上的入站规则中添加以下3个端口:

        1)15672是管理界面使用的端口;

        2)25672是集群之间使用的端口;

        3)4369是Erlang进程epmd用来做node连接的端口。

        下面以建15672端口为例,其它的原理是一样的:

        2.2.1、控制面板所有控制面板项Windows 防火墙->高级设置->入站规则。

        2.2.2、右键新建规则->选择端口->下一步。

        2.2.3、在特定本地端口中输入端口号15672->下一步。

        2.2.4、下一步。

        2.2.5、下一步。

        2.2.6、输入名称,如15672->完成。

        3、设置Cookie

        由于RabbitMQ的集群是依附于Erlang的集群来工作的,所以必须先构建起Erlang的集群镜像。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在C:Users管理员用户.erlang.cookie中(如本机使用的是Administartor用户,存放的路径在于C:UsersAdministartor.erlang.cookie中),另外在Windows系统中,在C:Windows目录下也有一个.erlang.cookie(不同版本存放的路径略有不同,3.8.3版本存放的路径在于C:WindowsSystem32configsystemprofile下),两个是一样的,各个节点的这两个文件必须要保持一致。

        3.1、复制主机cx168下的.erlang.cookie文件,将备机cx165中的两个.erlang.cookie文件替换掉。

        3.2、主机及备机的RabbitMQ服务都分别重启一下。

        4、加入集群

        在备机的RabbitMQ Command Prompt (sbin dir)中,执行以下命令:

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster rabbit@cx168 --ram
    rabbitmqctl start_app

        注:上面是将备机cx165添加到主机cx168集群中,备机是以ram节点的方式加入。假如想改成disc节点,可以使用以下命令修改:

    rabbitmqctl stop_app
    rabbitmqctl change_cluster_node_type --disc
    rabbitmqctl start_app

        5、查看集群信息

        现在登录一下备机cx165的管理界面(如下图),可以看到:

        1)右上角的集群已经由cx165变成了cx168;

        2)节点Nodes出现了主机cx168及备机cx165;

        3)主机cx168上的信息已全部同步到备机cx165,如用户信息等。

        也可以使用命令查看集群信息:

    rabbitmqctl cluster_status

        6、集群注意事项

        1)集群中至少要有一个disc类型的节点,这样关于集群的配置才是有效的;

        2)仅当集群中disc类型的节点处于运行状态时,对集群相关配置的修改才是有效的(disc代表磁盘节点,ram代表内存节点);

        3)集群在运行时,如果disc节点突然宕掉,此时其它的ram节点仍然能够继续提供服务,但若此时所有的ram节点也都宕掉,则在disc节点未启动的情况下,ram节点无法启动,因为所有的配置都保存在disc节点下面,启动时,需要从该类型节点读取对应的配置。

        4)RabbitMQ集群中,节点之间的exchange是在各个节点都有一份的,但是消息队列queue只存在对应的接收节点上面,其它节点不存储。如果该接收节点宕掉,那么接收到的消息队列可能会丢失。

        7、 集群其它命令

        7.1、退出集群

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
  • 相关阅读:
    cenos安装memcache
    微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单
    mysql设计-优化
    mysql设计-基本操作
    CI框架部署后访问出现404
    ueditor的bug
    git操作
    github基本操作
    基于SSH协议clone GitHub远端仓库到本地-git
    Thinkphp5.0 路由
  • 原文地址:https://www.cnblogs.com/atomy/p/12659584.html
Copyright © 2011-2022 走看看