RabbitMQ高级特性第5篇-单机多节点集群

一、单机多节点集群-普通模式

1、停止RabbitMQ 服务

systemctl stop rabbitmq-server

2、启动第一个节点

  • 没有指定web管理控制台使用的端口则默认使用15672
RABBITMQ_NODE_PORT=5673 RABBITMQ+NODENAME=rabbit1 rabbitmq-server start

3、启动第二个节点

  • 需要指定web管理控制台使用的端口,这里指定为:15674
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server start

4、将rabbit1作为主节点

# 先停止节点服务
rabbitmqctl -n rabbit1 stop_app
# 重置节点服务
rabbitmqctl -n rabbit1 rest
# 启动节点服务
rabbitmqctl -n rabbit1 start_app

5、将rabbit2作为从节点

# 停止节点服务
rabbitmqctl -n rabbit2 stop_app
# 重置节点服务
rabbitmqctl -n rabbit2 reset
# 将rabbit2节点作为从节点添加到主节点rabbit1,其中localhost是主机名换成自己的即可
rabbitmqctl -n rabbit2 join_cluster rabbit1@'localhost'  
# 启动节点服务
rabbitmqctl -n rabbit2 start_app

6、访问web管理控制台

  • 如下图所示已经成功启动了两个节点

二、RabbitMQ镜像集群配置-镜像模式

上面已经完成RabbitMQ多节点普通模式集群配置,普通模式集群并不保证队列的高可用性,虽然交换机绑定队列这些可以复制到集群的任何一个节点,但是队列内容不会复制。如果想要在队列节点宕机或故障也正常应用,就要复制(同步)队列内容到集群里的每一个节点,此时需要将队列做成镜像队列,将普通模式变成镜像模式:消息会主动在镜像节点间同步。

镜像模式要依赖policy模块,这个模块是做什么用的呢?Policy中文来说是政策或策略的意思:它就是要设置那些Exchanges或者queue的数据需要复制、同步,如何复制同步?对就是做这些的。设置Policy可以通过管理网页设置:如下图

  • Name: 策略名称
  • Pattern: 匹配规则,如果匹配所有的队列,是^
  • Definition: 使用ha-mode模式中的all,表示同步所有匹配的队列。

也可以通过如下命令设置:

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

配置完看队列如下,其中标识my_ha的说明使用my_ha策略,属于镜像模式,没有表示的就是普通模式

三、负载均衡-HAProxy

1、安装HAProxy

# 下载HAProxy地址:https://pan.baidu.com/s/1NzhZc85jxOJsx9plnXi6qQ
# 将安装包上传到Linux系统
# 下载依赖包
yum install gcc vim wget
# 解压安装包
tar -xvf haproxy-1.8.10.tar.gz -C /usr/local
# 进入解压目录
cd /usr/local/haproxy-1.8.10
# 执行编译命令
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
# 执行安装命令
make install PREFIX=/usr/local/haproxy
# 查看haproxy版本
/usr/local/haproxy/sbin/haproxy -v

2、配置HAProxy

# 创建配置文件所在的目录
mkdir /etc/haproxy
# 创建haproxy配置文件
vim /etc/haproxy/haproxy.cfg
  • 配置内容如下:
global
    log 127.0.0.1 local0 info
    maxconn 4096
    chroot /usr/local/haproxy
    uid 99
    gid 99
    daemon
    quiet
    nbproc 20
    pidfile /var/run/haproxy.pid
    
defaults
    log global
    mode    tcp
    option  tcplog
    option  dontlognull
    retries 3
    option  redispatch
    maxconn 2000
    timeout connect 5s
    timeout client 120s
    timeout server 120s
    
listen rabbitmq_cluster 
    # 定义监听地址和端口,本机的5672端口
    bind 0.0.0.0:5672
    # 配置 tcp 模式
    mode tcp
    # 简单的轮询
    balance roundrobin
    #rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查,2次正确证明服务器可用,
    #3次失败证明服务器不可用,并且配置主备机制
    server node1 127.0.0.1:5673 check inter 5000 rise 2 fall 3
    server node2 127.0.0.1:5674 check inter 5000 rise 2 fall 3
    
# 配置 haproxy web 监控,查看统计信息
listen stats
    bind 192.168.33.100:8100
    mode http
    option httplog
    stats enable
    # 设置 haproxy 监控地址为:http://192.168.33.100:8100/rabbitmq-stats
    stats uri   /rabbitmq-stats
    stats refresh 5s

3、启动HAProxy

# 启动HAProxy并指定配置文件
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
# 浏览器访问如下地址对mq节点进行监控
http://192.168.33.100:8100/rabbitmq-stats

4、注意事项

  • 代码中访问mq集群地址则变为访问haproxy地址:5672
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fkjaios_xkp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值