RabbitMq单机部署集群

发布时间 2023-05-31 15:45:33作者: 风里密码1900

一、RabbitMq下载安装

环境及版本

  • linux版本:CentOS Linux release 8.2.2004 (Core)   
  • rabbitmq版本:3.11.16
  • erlang版本:25.3.2-1

查看rabbitmq对应的erlang版本,官方地址:

资源地址

下载完成之后的文件如下,这里el8对应系统版本

使用 rpm -ivh 命令分别安装erlang环境和rabbitmq

rpm -ivh erlang-25.3.2-1.el8.x86_64.rpm
rpm -ivh rabbitmq-server-3.11.16-1.el8.noarch.rpm

备注:通常RPM 包采用系统默认的安装路径。安装文件会按照类别分别安装到不同的目录,如下所示:

RPM 包默认安装路径 含 义
/etc/ 配置文件安装目录,如/etc/my.cfg
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件(man page文件)保存位置

 添加web管理界面插件

rabbitmq-plugins enable rabbitmq_management

启动、查看、关闭rabbitmq服务

/sbin/service rabbitmq-server status  --查看rabbitmq状态
/sbin/service rabbitmq-server start --启动rabbitmq
/sbin/service rabbitmq-server stop --停止rabbitmq

添加登录用户,内置的用户guest/guest只能在本机登录,要访问Linux下的服务,需要额外添加用户

rabbitmqctl add_user admin lin789.  --添加用户
rabbitmqctl set_user_tags admin administrator --添加用户角色
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"  --添加角色权限
rabbitmqctl list_users --查看用户列表

登录管理界面添加虚拟主

二、集群

一些说明:集群分为普通集群和镜像集群,RabbitMQ官方推荐使用镜像集群。

  • 普通集群:只会对元数据进行共享,比如交换机类型,队列类型等等,而不会对消息进行共享,当服务对消息进行消费时访问的节点没用所需消息时,RabbitMQ会从其他节点拉取所需需消息,如果存储消息的节点刚好宕机,则消息丢失,必须重启该节点才能进行消费,这样无法保证高可用
  • 镜像集群:是普通集群的增强版本,它会在空闲时将消息以及元数据进行同步,单个节点失效并无太大影响,但是这种模式需要消耗带宽同步数据,系统性能会下降

 创建rabbit2节点并且后端启动

RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached

指定rabbit2节点查看节点状态

rabbitmqctl status -n rabbit2 

给rabbit2节点添加用户及权限

rabbitmqctl add_user admin lin789.  -n rabbit2
rabbitmqctl set_user_tags admin administrator -n rabbit2
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" -n rabbit2

添加集群

rabbitmqctl -n rabbit2 stop_app --停止节点所在的应用程序
rabbitmqctl -n rabbit2 reset --重新设置节点的元数据和状态为清空状态
rabbitmqctl -n rabbit2  join_cluster rabbit --加入第一节点
rabbitmqctl -n rabbit2 start_app  --重新启动节点应用程序

----以上普通集群搭建完毕

设置镜像队列策略

rabbitmqctl set_policy [-p ] [–priority <priorityz] [–apply-to <apply-to2]

  • -p Vhost: 可选参数,针对指定vhost下的queue进行设置
  • Name:策略名称
  • Pattern:匹配那些queue需要镜像复Definition制(使用正则表达式)、
  • Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode

                             ha-mode:指明镜像队列的模式,有效值为all/exactly/nodes

                                      all:表示在集群中所有的节点上进行镜像

                                      exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定

                                      nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定

                             ha-params: ha-mode模式需要用到的参数

                             ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual

  • priority:可选参数, policy的优先级
rabbitmqctl -p ylhost set_policy ha-all '^' '{"ha-mode":"all","ha-sync-mode":"automatic"}'

查看rabbit2节点集群状态

rabbitmqctl -n rabbit2 cluster_status