haproxy+keepalived配置

本文介绍了一个基于HAProxy与Keepalived实现的高可用性集群配置方案。该方案通过设置MASTER状态下的VRRP实例,利用脚本监控HAProxy的状态,并在故障发生时触发通知和自动切换机制,确保服务的连续性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

haproxy+keepalived配置
1. cat keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     1041126478@qq.com
   }
   notification_email_from jzyc5@jzyc.com
   smtp_server 192.168.44.27
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_state_down {
    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
    interval 2
    weight 3
}

vrrp_script chk_haproxy {
  script "/etc/keepalived/chk_haproxy.sh" #
  interval 2 # script
  weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface em2
    virtual_router_id 27
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.44.102
    }

    track_script {
      chk_haproxy  #
      chk_state_down
    }
    
    notify_master "/etc/keepalived/notify.sh master 192.168.44.102"
    notify_backup "/etc/keepalived/notify.sh backup 192.168.44.102"
    notify_fault  "/etc/keepalived/notify.sh fault 192.168.44.102"
}



2. cat chk_haproxy.sh
#!/bin/bash
#
# author: weizhifeng
# description:
# ?¨?2?haproxyˇ·委???1?????ˉhaproxy£?
# ?1??°?????keepalived
#
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
    /etc/init.d/haproxy start
 
    status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)
 
    if [ "${status2}" = "0"  ]; then
            /etc/init.d/keepalived stop
    fi



3. cat notify.sh
# desccription: An example of notify script
#
contact='jzyc5@jzyc.com'
notify() {
mailsubject="`hostname` to be $1: $2 floating"
mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}

case "$1" in
master)
notify master
/etc/rc.d/init.d/haproxy start
exit 0
;;
backup)
notify backup
/etc/rc.d/init.d/haproxy stop
exit 0
;;
fault)
notify fault
/etc/rc.d/init.d/haproxy stop
exit 0
;;
*)
echo 'Usage: `basename $0` {master|backup|fault}'
exit 1
;;
esac












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值