RabbitMQ集群搭建

8/5/2022 RabbitMQ

# 下载安装包

1、查看Erlang与RabbitMQ版本对应关系 (opens new window)

2、下载erlang (opens new window) erlang各版本下载 (opens new window)

3、下载rabbitmq-server安装包 (opens 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 安装2

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

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

3、安装RabbitMQ(需要联网)

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

注意:默认安装完成后配置文件模板在:/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
1

5、查看配置文件位置

ls /etc/rabbitmq/rabbitmq.config
1

6、修改配置文件

vim /etc/rabbitmq/rabbitmq.config
1

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

7、启动Rabbitmq中的插件管理

rabbitmq-plugins enable rabbitmq_management
1

8、启动rabbitmq的服务

systemctl start rabbitmq-server
systemctl restart rabbitmq-server
systemctl stop rabbitmq-server
1
2
3

9、查看服务状态

systemctl status rabbitmq-server
1

# RabbitMQ的配置

# RabbitMQ管理命令行

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

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

#3.插件管理命令行
rabbitmq-plugins enable| list| disable
1
2
3
4
5
6
7
8

# 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/
1
2

3、分别查看cookie是否一致

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

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

rabbitmq-server -detached
1

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

#关闭
rabbitmqctl stop_app 
#加入集群
rabbitmqctl join_cluster rabbit@mq1
#启动服务
rabbitmqctl start_app
1
2
3
4
5
6

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

rabbitmqctl cluster_status
1

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

Cluster status of node rabbit@mq3...

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

# 高可用集群(镜像集群)

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

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

# 架构图

rabbitmq

# 搭建

1、查看当前策略

rabbitmqctl list_policies
1

2、添加策略

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

3、删除策略

rabbitmqctl clear_policy ha-all(策略名)
1

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>]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23