RabbitMQ集群搭建

lijunyi2022-08-05中间件RabbitMQ

下载安装包

1、查看Erlang与RabbitMQ版本对应关系open in new window

2、下载erlangopen in new windowerlang各版本下载open in new window

3、下载rabbitmq-server安装包open in new window,也可以不用下载,使用yum命令进行安装

安装1

# 安装文件(分别按照以下顺序安装) 
rpm -ivh erlang-21.3-1.el7.x86_64.rpm 
yum install socat -y 
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm 

#常用命令(按照以下顺序执行) 

# 添加开机启动 RabbitMQ 服务 
chkconfig rabbitmq-server on 

# 启动服务 
/sbin/service rabbitmq-server start 

# 查看服务状态 
/sbin/service rabbitmq-server status

# 停止服务(选择执行) 
/sbin/service rabbitmq-server stop 

# 开启 web 管理插件 
rabbitmq-plugins enable rabbitmq_management 

# 用默认账号密码(guest)访问地址 http://47.115.185.244:15672/出现权限问题
# 4.添加一个新的用户 
# 创建账号 
rabbitmqctl add_user admin 123 
# 设置用户角色 
rabbitmqctl set_user_tags admin administrator 
# 设置用户权限 
set_permissions [-p <vhostpath>] <user> <conf> <write> <read> 
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 
#  用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限 
#  当前用户和角色 
rabbitmqctl list_users 
# 5.再次利用 admin 用户登录

# 6.重置命令 
# 关闭应用的命令为 
rabbitmqctl stop_app 
# 清除的命令为
rabbitmqctl reset 
# 重新启动命令为 
rabbitmqctl start_app

安装2

1、将RabbitMQ以及Erlang安装包上传到linux系统中 2、安装Erlang依赖包

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

3、安装RabbitMQ(需要联网)

yum install -y rabbitmq-server-3.7.18-1.el7.noarch.rpm

注意:默认安装完成后配置文件模板在:/usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example目录中,需要将配置文件复制到/etc/rabbitmq/目录中,并修改名称为rabbitmq.config

4、复制配置文件

cp /usr/share/doc/rabbitmq-server-3.7.18/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

5、查看配置文件位置

ls /etc/rabbitmq/rabbitmq.config

6、修改配置文件

vim /etc/rabbitmq/rabbitmq.config

将配置文件中 %% {loopback_users, [] }, 修改为{loopback_users, []}

7、启动Rabbitmq中的插件管理

rabbitmq-plugins enable rabbitmq_management

8、启动rabbitmq的服务

systemctl start rabbitmq-server
systemctl restart rabbitmq-server
systemctl stop rabbitmq-server

9、查看服务状态

systemctl status rabbitmq-server

RabbitMQ的配置

RabbitMQ管理命令行

#1.服务启动相关
systemctl start | restart | stop | status rabbitmq-server

#2.管理命令行用来在不使用web管理界面情况下命令操作RabbitNQ
rabbitmqctl help 可以查看更多命令

#3.插件管理命令行
rabbitmq-plugins enable| list| disable

WEB管理界面介绍

rabbitmq

RabbitMQ集群架构

架构图

rabbitmq

集群搭建

1、克隆三台机器,分别将主机名和IP映射

vim /etc/hosts分别加入对应的配置:

  • 10.15.0.3 mq1
  • 10.15.0.4 mq1
  • 10.15.0.5 mq1

2、三台机器安装rabbitmq,并同步cookie文件,在master上执行以下命令

scp /var/lib/rabbitmq/.erlang.cookie root@mq2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@mq3:/var/lib/rabbitmq/

3、分别查看cookie是否一致

cat /var/lib/rabbitmq/.erlang.cookie

4、后台启动所有节点执行以下命令,启动成功后访问管理界面

rabbitmq-server -detached

5、在两台备机器上执行加入集群命令

#关闭
rabbitmqctl stop_app 
#加入集群
rabbitmqctl join_cluster rabbit@mq1
#启动服务
rabbitmqctl start_app

6、查看集群状态,在任意节点执行

rabbitmqctl cluster_status

7、如果出现如下显示,则集群搭建成功

Cluster status of node rabbit@mq3...

[{nodes,[{disc,[rabbit@mq1,rabbit@mq2,rabbit@mq3]}]},

高可用集群(镜像集群)

  • 镜像队列机制 就是将队列在三个节点之间设置主从关系,消息会在三个节点之间进行自动同步,且如果其中一个节点不可用,并不会导致消息丢失或服务不可用的情况,提升NO集群的整体高可用性。

  • 镜像集群在普通集群基础上修改

架构图

rabbitmq

搭建

1、查看当前策略

rabbitmqctl list_policies

2、添加策略

  • 在任意节点上执行一次策略设置就行
rabbitmqctl set_policy ha-all '^hello' '{"ha-mode":"all","ha-sync-mode":"automatic"}'
  • 策略正则表达式为 '^': 表示所有匹配所有队列的名称
  • ^hello: 匹配hello开头队列

3、删除策略

rabbitmqctl clear_policy ha-all(策略名)

4、策略语法说明

#设置
rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern>  <definition>

# -p vhost      :可选参数,针对指定vhost的queue进行设置
# name          :policy的名称
# pattern       :queue的匹配模式(正则表达式)
# 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 clear_policy [-p <vhost>] <name>

#查看
rabbitmqctl list_policies [-p <vhost>]

Last Updated 6/14/2024, 3:05:31 AM