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