搭建环境
主机 | IP | 主机名 |
---|---|---|
MQ01 | 192.168.0.107 | rabbitmq01 |
MQ02 | 192.168.0.86 | rabbitmq02 |
安装MQ
下载MQ
wget wget https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.16-1.el7.noarch.rpm
wget https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.2.7-1.el7.x86_64.rpm
安装MQ
yum localinstall -y erlang-23.2.7-1.el7.x86_64.rpm
yum localinstall -y rabbitmq-server-3.8.16-1.el7.noarch.rpm
编写主配文件
touch /etc/rabbitmq/rabbitmq.conf
chow .rabbitmq /etc/rabbitmq/ -R
Vim /etc/rabbitmq/rabbitmq.conf
#禁止来宾访问
loopback_users.guest = false
#监听端口
listeners.tcp.default = 5672
#默认用户名和密码
default_pass = admin
default_user = admin
#WEB管理端端口
management.tcp.port = 15672
management.tcp.ip = 0.0.0.0
#WEB默认访问路径(建议不配置)
management.path_prefix=mq
修改数据,日志存储位置
mkdir /data/rabbitmq/{logs/data}
chown rabitmq:rabbitmq /data/rabbitmq -R
vim /etc/rabbitmq/rabbitmq-env.conf
#添加如下两行内容
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs
启动MQ
systemctl stop firewalld
systemctl start rabbitmq-server
设置主机名连通
MQ01:
hostnamectl set-hostname rabbitmq01
bash
echo "192.168.0.86 rabbitmq02" >>/etc/hosts
echo "192.168.0.107 rabbitmq01" >>/etc/hosts
ping rabbitmq02
MQ02:
hostnamectl set-hostname rabbitmq02
bash
echo "192.168.0.86 rabbitmq02" >>/etc/hosts
echo "192.168.0.107 rabbitmq01" >>/etc/hosts
ping rabbitmq01
设置.erlang.cookie
MQ01:
echo "2023@" >/var/lib/rabbitmq/.erlang.cookie
systemctl restart rabbitmq-server
MQ02:
echo "2023@" >/var/lib/rabbitmq/.erlang.cookie
systemctl restart rabbitmq-server
搭建集群
节点加入集群
MQ02:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq01
rabbitmqctl start_app
默认情况下,RabbitMQ 启动后是磁盘节点,如果想以内存节点方式加入,可以加 --ram 参数。
如果想要修改节点类型,可以使用命令:
rabbitmqctl change_cluster_node_type disc(ram)
注意,由于 RAM 节点仅将内部数据库表存储在内存中,因此在内存节点启动时必须从其他节点同步这些数据,所以一个集群必须至少包含一个磁盘节点。
设置集群名称
rabbitmqctl set_cluster_name rabbitmq_test_cluster
此时普通集群已搭建完成,如需设置镜像集群需继续执行如下操作
设置镜像集群
- 命令行设置
rabbitmqctl set_policy "queue_policy_test" "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
查看规则
rabbitmqctl list_policies
- 管理界面设置
1.创建规则
各参数含义如下:
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: exactly 模式需要用到的参数,
ha-sync-mode: 进行队列中消息的同步方式,有效值为 automatic 和 manual。
priority 为可选参数,表示 policy 的优先级。
2.查看规则
3.验证规则(在随机一个节点上创建一个queue,查看是否同步至两个节点)
-
创建镜像策略前
-
创建镜像策略后
集群常用命令
查看集群状态
rabbitmqctl cluster_status