rabbitmq集群

一、erlang rpm包下载及安装

#rabbitmq及对应erlang版本说明
https://www.rabbitmq.com/which-erlang.html

#rabbitmq提供的erlang安装包
https://github.com/rabbitmq/erlang-rpm/releases
#文件名
erlang-23.3.2-1.el7.x86_64.rpm

rpm -Uvh erlang-23.3.2-1.el7.x86_64.rpm
erl -version

二、rabbitmq rpm安装包下载及安装

https://github.com/rabbitmq/rabbitmq-server/releases

rabbitmq-server-3.8.14-1.el7.noarch.rpm

rpm -ivh  rabbitmq-server-3.8.14-1.el7.noarch.rpm
whereis rabbitmqctl
which rabbitmq

systemctl start rabbitmq-server
systemctl status rabbitmq-server
systemctl enable rabbitmq-server

三、rabbitmq 15672 web控制台打开及管理员用户创建

#启用web控制台
rabbitmq-plugins enable rabbitmq_management

#创建admin用户,密码也是admin
rabbitmqctl add_user admin 123456

#给用户赋予administrator角色
rabbitmqctl set_user_tags admin administrator

#给用户在虚拟主机/上赋予所有权限
rabbitmqctl  set_permissions -p / admin '.*' '.*' '.*'

web浏览器打开 http://hostip:15672,即可登录web控制台

五、rabbitmq普通集群搭建

#3台机器查看单机版rabbitmq-server状态
systemctl status rabbitmq-server


#3台机器
vim /etc/hosts
192.168.14.242 hs-qdou-rmqx-001
192.168.14.243 hs-qdou-rmqx-002
192.168.14.244 hs-qdou-rmqx-003

#3台机器
systemctl stop rabbitmq-server

#hs-qdou-rmqx-001上操作
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.14.243:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.14.244:/var/lib/rabbitmq/.erlang.cookie

#hs-qdou-rmqx-002、hs-qdou-rmqx-003 .erlang.cookie权限
chmod 600 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie


#hs-qdou-rmqx-001上创建集群
rabbitmq-server -detached
可以查看/var/log/rabbitmq/rabbit\@hs-qdou-rmqx-001.log这个日志文件看是否启动成功。

#放行集群通讯端口等
bash复制代码firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --zone=public --add-port=4369/tcp --permanent
firewall-cmd --zone=public --add-port=25672/tcp --permanent

#hs-qdou-rmqx-002加入hs-qdou-rmqx-001
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hs-qdou-rmqx-001
rabbitmqctl start_app

#hs-qdou-rmqx-003加入hs-qdou-rmqx-002
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hs-qdou-rmqx-002
rabbitmqctl start_app

#查看集群是否构建完成 3台机器
rabbitmqctl cluster_status

六、rabbitmq节点移除及重新加入:hs-qdou-rmqx-003

1、003节点停止rabbitmq-server服务
rabbitmqctl stop

2、001节点或002节点忘记003节点
rabbitmqctl forget_cluster_node rabbit@hs-qdou-rmqx-002

3、003节点启动rabbitmq-server
systemctl start rabbitmq-server
报错信息:Node 'rabbit@hs-qdou-rmqx-003' thinks it's clustered with node 'rabbit@hs-qdou-rmqx-002'
删除/var/lib/rabbitmq/mnesia后再次启动

4、003节点查看集群状态
rabbitmqctl cluster_status
Cluster status of node rabbit@hs-qdou-rmqx-003 ...
Basics

Cluster name: rabbit@hs-qdou-rmqx-003

Disk Nodes

rabbit@hs-qdou-rmqx-003

Running Nodes

rabbit@hs-qdou-rmqx-003

Versions

rabbit@hs-qdou-rmqx-003: RabbitMQ 3.8.14 on Erlang 23.3.2

5、003节点重新加入
rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@hs-qdou-rmqx-002
rabbitmqctl start_app

6、003节点查看集群状态
rabbitmqctl cluster_status
Cluster status of node rabbit@hs-qdou-rmqx-003 ...
Basics

Cluster name: rabbit@hs-qdou-rmqx-001

Disk Nodes

rabbit@hs-qdou-rmqx-001
rabbit@hs-qdou-rmqx-002
rabbit@hs-qdou-rmqx-003

Running Nodes

rabbit@hs-qdou-rmqx-001
rabbit@hs-qdou-rmqx-002
rabbit@hs-qdou-rmqx-003

Versions

rabbit@hs-qdou-rmqx-001: RabbitMQ 3.8.14 on Erlang 23.3.2
rabbit@hs-qdou-rmqx-002: RabbitMQ 3.8.14 on Erlang 23.3.2
rabbit@hs-qdou-rmqx-003: RabbitMQ 3.8.14 on Erlang 23.3.2

# rabbitmqctl change_cluster_node_type {disc|ram}

七、配置镜像集群

1、普通集群
经过上方步骤构成的集群是一个普通的集群,只是队列中的元数据共享,而队列中的数据是具体保存到某个节点上的。
这样够不成高可用,如果这个节点挂掉的话,则这个队列的数据还是不可以消费的,也无法往这个队列中发送数据。那么如果解决这个问题呢,答案是使用镜像队列集群。

2、镜像队列集群
在默认的虚拟主机(/)所有的队列都配置成镜像队列。(ha-all只是取的名字)

rabbitmqctl set_policy --vhost / ha-all "^" '{"ha-mode":"all"}'

创建完镜像队列后发现,队列在所有的节点上都存在。

镜像队列的高级用法,参考官方文档 www.rabbitmq.com/ha.html

八、rabbitmq延时队列

#插件下载地址
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases


cp rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.14/plugins/

#启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

#创建交换器:  
rabbitmqadmin declare exchange name=delayed_exchange type=x-delayed-message arguments='{"x-delayed-type":"direct"}'

九、集群重启顺序
集群重启的顺序是固定的,并且是相反的。 如下:
启动顺序:磁盘节点 => 内存节点
关闭顺序:内存节点 => 磁盘节点
最后关闭必须是磁盘节点,不然可能回造成集群启动失败、数据丢失等异常情况。

十、集群节点内存上限及性能调优

rabbitmqctl eval 'application:get_env(rabbit, vm_memory_high_watermark).'

rabbitmqctl list_policies

rabbitmqctl status

参考:
https://www.cnblogs.com/jojop/p/14091534.html

https://emacsist.github.io/2016/12/01/rabbitmq%E4%B8%AD%E7%9A%84%E5%86%85%E5%AD%98%E4%B8%8E%E6%B5%81%E9%87%8F%E6%8E%A7%E5%88%B6/

十一、rabbitmq集群升级相关
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.35
https://github.com/rabbitmq/rabbitmq-server/tags?after=v3.11.0
https://www.rabbitmq.com/versions.html
https://www.rabbitmq.com/changelog.html

十二、惰性队列设置

rabbitmqctl set_policy Lazy ".*" '{"queue-mode":"lazy"}' --apply-to queues

https://juejin.cn/post/7038785930844454925
https://juejin.cn/post/7039202722985443342

https://juejin.cn/post/7292975731046531098?searchId=20231117135314227D2CC0341E0CCD2158

https://juejin.cn/post/7297624623906390031?searchId=20231117135314227D2CC0341E0CCD2158

https://linyishui.top/2020100201.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值