rabbitmq集群搭建

1、参考文章

https://www.cnblogs.com/edeny/p/13804973.html

https://blog.csdn.net/yangshihuz/article/details/114120589

入门文档 

链接:https://pan.baidu.com/s/1wvl7xCTvdEoXCmX-r0b-pg?pwd=oj12   提取码:oj12

2、erlang 镜像版本下载并安装

         镜像网站:https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm

        下载镜像:
wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-21.3.8.14-1.el7.x86_64.rpm/download.rpm

安装镜像:  rpm -ivh erlang-21.3.8.14-1.el7.x86_64.rpm

安装 socat:  yum install -y socat  

3、下载rabbitmq 并安装

wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm/download.rpm
rpm -ivh rabbitmq-server-3.8.2-1.el7.noarch.rpm

安装镜像:rpm -ivh rabbitmq-server-3.8.2-1.el7.noarch.rpm

4、防火墙关闭

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

5、配置hosts并查看hosts,ping是否互通 ping controller(重点)

192.168.12.10 controller

192.168.12.11 standby1

192.168.12.12 standby2

设置Hostname:  hostnamectl set-hostname controller

重启:reboot 

6、.erlang.cookie三台配置一致

scp /var/lib/rabbitmq/.erlang.cookie root@standby1:/var/lib/rabbitmq/ scp /var/lib/rabbitmq/.erlang.cookie root@standby2:/var/lib/rabbitmq/

7、负载均衡参考:https://blog.csdn.net/IT_ZRS/article/details/120632932

                              https://blog.csdn.net/m0_37809146/article/details/104000699

      安装失败参考:Haproxy启动故障:Starting proxy:cannot bind socke - 代码先锋网

7.1 haproxy配置

###################### 打开haproxy的监测界面###############################
listen status
    bind 0.0.0.0:9188
    mode http
    stats enable
    stats refresh 30s
    stats uri /stats                     #设置haproxy监控地址为http://localhost:9188/stats
    stats auth admin:123456              #添加用户名密码认证
    stats realm (Haproxy\ statistic)
    stats admin if TRUE
######################监听rabbitmq的web操作页面############################
listen rabbitmq_admin
    bind 0.0.0.0:15670
    server rabbit1 192.168.140.3:15672
    server rabbit2 192.168.140.4:15672
    server rabbit3 192.168.140.5:15673
#######################监听rabbimq_cluster #################################
listen rabbitmq_cluster
    bind 0.0.0.0:5670
    mode tcp
    balance roundrobin           #负载均衡算法(#banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数)
    server rabbit1 192.168.140.3:5672 check inter 5000 rise 2 fall 2  #check inter 2000 是检测心跳频率
    server rabbit2 192.168.140.4:5672 check inter 5000 rise 2 fall 2  #rise 2是2次正确认为服务器可用
    server rabbit3 192.168.140.5:5672 check inter 5000 rise 2 fall 2  #fall 2是2次失败认为服务器不可
#######################haproxy  end #################################

8、keepalived 配置

  

! Configuration File for keepalived

global_defs {
   #router_id LVS_DEVEL
   #vrrp_skip_check_adv_addr
   #vrrp_strict
   #vrrp_garp_interval 0
   #vrrp_gna_interval 0
   router_id mq1          # back改为directory2(该名字可自定义)
   
}
# 自定义监控脚本
vrrp_script chk_haproxy {
    # 脚本位置
    script "/etc/keepalived/haproxy_check.sh" 
    # 脚本执行的时间间隔
    interval 5 
    weight 10
}
vrrp_instance VI_1 {
    state MASTER          # 定义主还是备
    interface ens33       # VIP绑定接口
    virtual_router_id 80  # 整个集群的调度器一致
    priority 100          # back改为50
    advert_int 1          # 检查间隔,默认为1s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_haproxy
    }
    virtual_ipaddress {
        192.168.140.9/24
    }
}

haproxy_check配置:

#!/bin/bash
# 判断haproxy是否已经启动
if [ ${ps -C haproxy --no-header |wc -l} -eq 0 ] ; then
    #如果没有启动,则启动
    haproxy -f /etc/haproxy/haproxy.cfg
fi

#睡眠3秒以便haproxy完全启动
sleep 3

#如果haproxy还是没有启动,此时需要将本机的keepalived服务停掉,以便让VIP自动漂移到另外一台haproxy
if [ ${ps -C haproxy --no-header |wc -l} -eq 0 ] ; then
    systemctl stop keepalived
fi

执行:chmod +xxx /etc/keepalived/haproxy_check.sh

rabbitmq知识点:

1、队列持久化:声明队列的时候:durable=true;消息持久化:                                      props:MessageProperties.PRESISTENT_TEXT_PLAIN

2、开不公平分发:channel.basiscQos(1);

3、发布确认:启确认发布channel.confirmSelect(); 同步确认发布  channel.waitForConfirms();

异步确认发布:channel.addConfirmListener(ConfirmCallback ackCallback,null)//添加一个异步确认监听器

1、成为死信队列:消息存活时间TTL、队列最大长度、消息被拒绝\不确认并且队列不自动确认消息

2、交换机类型:diret直连、topic主题、fanout广播模式,其中topic在一个*下是直连模式,在#是广播模式,*表示一个路由值,#表示一个或者多个路由值

3、延迟队列:

 rabbitmq_delayed_message_exchange插件

 4、发布确认高级:spring.rabbitmq.publisher-confirm-type:correlated

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值