默认端口
RabbitMQ Server:5672
RabbitMQ Manager:15672
RabbitMQ集群:25672
创建集群
一个节点(如host名称为rmq1)执行:
cd /usr/local/soft/rabbitmq_server-3.8.9/sbin
./rabbitmq-server -detached >nohup.out&
./rabbitmqctl start_app
其他节点执行:
cd /usr/local/soft/rabbitmq_server-3.8.9/sbin
./rabbitmq-server -detached >nohup.out&
./rabbitmqctl join_cluster --ram rabbit@rmq1
./rabbitmqctl start_app
rmq1会是磁盘型数据节点,有交换机、队列、消息的持久化数据。其他节点是内存型节点。
普通集群
节点间只同步元数据(交换机、队列、绑定关系、虚拟主机的定义),不同步消息
镜像队列
节点间同步元数据和消息。
设置方式,集群各节点执行:
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
高可用
使用HAProxy或LVS对RabbitMQ集群进行负载均衡(从RabbitMQ Server集群中选择一个)。
使用Keepalived检测RabbitMQ Server状态,失效则在Sever列表中剔除,恢复则在Sever列表中重新加入。Keepalived可分主备,主备都可以竞争虚拟IP(VIP),竞争成功者负责提供Server列表。
这一套(Keepalived服务监测 + HAProxy负载均衡)用在Mysql、Redis(Redis有哨兵机制,不用这一套也行)、Mycat也可以。
扩展:负载分为四层负载(工作在传输层,根据主机和端口转发信息,如LVS)、七层负载(工作在应用层,根据信息转发信息,如Nginx)。HAProxy可以是四层负载,也可以是七层负载。
运维监控
Zabbix + Grafana:磁盘空间、内存、连接占用的时长等。
消息追踪
Firehose的GUI版本:RabbitMQ的Tracing插件。
消息拼接
大量消息发送时,可以拼接消息,减少连接数。如10M消息发送,建议消息小于4M。