#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
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控制台
#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
原文地址:https://blog.csdn.net/u012160319/article/details/134712071
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22548.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!