(四)RabbitMQ集群(Ⅱ)

港控/mmm° 2022-05-27 09:22 252阅读 0赞

RabbitMQ集群(Ⅱ)

RabbitMQ集群(Ⅰ):https://blog.csdn.net/YCJ_xiyang/article/details/79956516

RabbitMQ管理:https://blog.csdn.net/YCJ_xiyang/article/details/79991699

升级集群

  1. 升级ErlangRabbitMQ版本,必须停止集群,因为集群中不能容忍不同版本协同工作
  2. 在集群升级之前最好确认哪一个Node是第一个升级的,这个node必须是最后一个关闭,然后第一个启动。否者这个node和实际最后一个关闭的node之前的配置变更都会丢失。
  3. 在集群中,要使用DISC node来主导升级,而不能使用RAM node,会报错,从安全层面也可以理解这样做的用意。

单机集群

  1. 在同一个OS中运行多个RabbitMQ node 主要满足以下两个条件:
  2. ①:每一个node使用的名字不能重复
  3. ②:每一个node使用的port/IP不能重复
  4. 使用不同名字,不同端口,分别从后台启动两个服务进程
  5. RABBITMQ\_NODE\_PORT=5672 RABBITMQ\_NODENAME=rabbit rabbitmq-server -detached
  6. [root@h101 ~]# RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
  7. Warning: PID file not written; -detached was passed.
  8. [root@h101 ~]# ps faux | grep mq
  9. root 3054 0.0 0.0 103252 828 pts/0 S+ 14:21 0:00 \_ grep mq
  10. rabbitmq 2888 0.0 0.0 10828 468 ? S 14:14 0:00 /usr/lib64/erlang/erts-5.8.5/bin/epmd -daemon
  11. rabbitmq 2975 22.7 0.8 1088040 33292 ? Sl 14:21 0:02 /usr/lib64/erlang/erts-5.8.5/bin/beam.smp -W w -A 64 -P 1048576 -K erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../ebin -noshell -noinput -st -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -rabbit tcp_listeners [{"auto",5672}] -sasl errlog_type errr false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit-sasl.lons_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../plugins" -rabbit plb/rabbitmq/mnesia/rabbit-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia esia/rabbit" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
  12. rabbitmq 3050 0.0 0.0 10792 508 ? Ss 14:21 0:00 \_ inet_gethost 4
  13. rabbitmq 3051 0.0 0.0 12896 648 ? S 14:21 0:00 \_ inet_gethost 4
  14. RABBITMQ\_NODE\_PORT=5673 RABBITMQ\_NODENAME=hare rabbitmq-server -detached
  15. [root@h101 ~]# RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=hare rabbitmq-server -detached
  16. Warning: PID file not written; -detached was passed.
  17. [root@h101 ~]# ps faux | grep mq
  18. root 3196 0.0 0.0 103252 824 pts/0 S+ 14:22 0:00 \_ grep mq
  19. rabbitmq 2888 0.0 0.0 10828 468 ? S 14:14 0:00 /usr/lib64/erlang/erts-5.8.5/bin/epmd -daemon
  20. rabbitmq 2975 8.6 0.8 1088040 33292 ? Sl 14:21 0:02 /usr/lib64/erlang/erts-5.8.5/bin/beam.smp -W w -A 64 -P 1048576 -K erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../ebin -noshell -noinput -st -boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -rabbit tcp_listeners [{"auto",5672}] -sasl errlog_type errr false -rabbit error_logger {file,"/var/log/rabbitmq/rabbit.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit-sasl.lons_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../plugins" -rabbit plb/rabbitmq/mnesia/rabbit-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia esia/rabbit" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672 -noshell -noinput
  21. rabbitmq 3050 0.0 0.0 10792 508 ? Ss 14:21 0:00 \_ inet_gethost 4
  22. rabbitmq 3051 0.0 0.0 12896 648 ? S 14:21 0:00 \_ inet_gethost 4
  23. rabbitmq 3116 29.8 0.8 1087524 33684 ? Sl 14:21 0:01 /usr/lib64/erlang/erts-5.8.5/bin/beam.smp -W w -A 64 -P 1048576 -K erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../ebin -noshell -noinput -s-boot start_sasl -kernel inet_default_connect_options [{nodelay,true}] -rabbit tcp_listeners [{"auto",5673}] -sasl errlog_type errorfalse -rabbit error_logger {file,"/var/log/rabbitmq/hare.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/hare-sasl.log"} -re "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.6/sbin/../plugins" -rabbit plugins_itmq/mnesia/hare-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/vae" -kernel inet_dist_listen_min 25673 -kernel inet_dist_listen_max 25673 -noshell -noinput
  24. rabbitmq 3191 0.0 0.0 10792 508 ? Ss 14:21 0:00 \_ inet_gethost 4
  25. rabbitmq 3192 0.0 0.0 12896 648 ? S 14:21 0:00 \_ inet_gethost 4
  26. [root@h101 ~]#
  27. 查看node状态
  28. rabbitmqctl -n 节点名 status
  29. 查看集群的状态
  30. rabbitmqctl -n 节点名 cluster\_status
  31. 创建集群
  32. rabbitmqctl -n 节点名 jion\_cluster 另一个节点全称

防火墙问题

  1. 集群中的node之间可能会有防火墙阻隔,为了确保集群正常工作,node之间必须开放一些端口用于互相通信,打开436925672

集群中Erlang的版本

  1. 集群中所有nodeErlang版本必须一致

客户端的连接

  1. 集群中没有主备概念,每一个node都是对等的,所以客户端可以连入任意一个node进行操作,如果一个node出现故障,客户端会返回错误,直接连接另一个node就可以继续进行操作
  2. 可以使用第三方工具确保连接的高可用(如 Keepalived

内存节点集群

  1. 内存(RAMnode是将所有元数据保存在内存中的node,是以一定安全风险为代价交换性能的选择,由于不能保存数据到硬盘,所以断电或重启后数据将会丢失,也正因为不必与硬盘打交道,所以速度会非常快
  2. 一般使用它来动态地扩展集群性能(只使用RAM node的集群是脆弱的)

创建内存node

  1. rabbitmqctl -n 节点名 join\_cluster --ram hare@h101
  2. [root@h101 ~]# rabbitmqctl -n rabbit stop_app
  3. Stopping node rabbit@h101 ...
  4. [root@h101 ~]# rabbitmqctl -n rabbit join_cluster --ram hare@h101
  5. Clustering node rabbit@h101 with hare@h101 ...
  6. [root@h101 ~]# rabbitmqctl -n rabbit start_app
  7. Starting node rabbit@h101 ...
  8. [root@h101 ~]# rabbitmqctl -n rabbit cluster_status
  9. Cluster status of node rabbit@h101 ...
  10. [{nodes,[{disc,[hare@h101]},{ram,[rabbit@h101]}]},
  11. {running_nodes,[hare@h101,rabbit@h101]},
  12. {cluster_name,<<"hare@h101.temp">>},
  13. {partitions,[]}]
  14. [root@h101 ~]#

修改node类型

  1. 一个集群中运行着的node,可以动态地切换类型(需要关闭应用)
  2. rabbitmqctl -n 节点名 change\_cluster\_node\_type 类型

注意:一个node停止应用后,会对集群中剩余node的负载产生一定的影响,所以最好是在业务低峰进行以上操作

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读

    相关 RabbitMQ

    RabbitMQ集群 在RabbitMQ集群里,运行时状态包含交换器、队列、绑定器、用户、虚拟主机以及策略,它们对所有节点都可用。 这种共享运行时状态的特性,使得集群

    相关 RabbitMQ安装

    一、准备两台虚拟机 1、设置一台的别名为A,:`vi /etc/hostname` 2、设置另一台的别名为B:`vi /etc/hostname` 3、修改每一个虚

    相关 rabbitmq 部署

    rabbitmq 目前的主要功能是: 1.用作消息队列,发送消息,接受消息 2.用作websocket主动推送引擎,与web端建立长链接 为什么要用到rabbitmq 集

    相关 RabbitMQ

    一、RabbitMQ集群概述 rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式 1、单机模式: 本地测试用、生产环境不会用 2、普通集

    相关 rabbitmq简介

    rabbitmq自带内建集群,其旨在rabbitmq的高可用,允许消费者和生产者在rabbitmq节点崩溃的情况下继续运行,以及通过添加更多节点的方式来线性扩展消息的吞吐量。但