欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#队列学习笔记:RabbitMQ搭建集群

程序员文章站 2022-03-26 23:13:23
一、环境准备 假设有两台服务器: 注意事项: 1)所有服务器的Erlang及RabbitMQ版本必须一样。 2)服务器名大小写敏感。 二、开始搭建 2.1、设置hosts文件 路径如下:C:\Windows\System32\drivers\etc 在hosts文件中添加主机及备机的IP地址及计算机 ......

    一、环境准备

    假设有两台服务器:

C#队列学习笔记:RabbitMQ搭建集群

    注意事项:

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

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

C#队列学习笔记:RabbitMQ搭建集群

C#队列学习笔记:RabbitMQ搭建集群

    二、开始搭建

    2.1、设置hosts文件

    路径如下:c:\windows\system32\drivers\etc

C#队列学习笔记:RabbitMQ搭建集群

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

C#队列学习笔记:RabbitMQ搭建集群

    2.2、开启集群端口

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

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

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

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

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

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

C#队列学习笔记:RabbitMQ搭建集群

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

C#队列学习笔记:RabbitMQ搭建集群

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

C#队列学习笔记:RabbitMQ搭建集群

    2.2.4、下一步。

C#队列学习笔记:RabbitMQ搭建集群

    2.2.5、下一步。

C#队列学习笔记:RabbitMQ搭建集群

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

C#队列学习笔记:RabbitMQ搭建集群

    3、设置cookie

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

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

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

C#队列学习笔记: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,如用户信息等。

C#队列学习笔记:RabbitMQ搭建集群

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

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