实现 HAProxy 高可用

# 在两个ka1和ka2先实现haproxy的配置
[root@ka1 ~]# cat /etc/haproxy/haproxy.cfg
listen http
    bind 192.168.1.55:80
    server web1 192.168.1.51:80 check
    server web2 192.168.1.52:80 check
listen stats
    mode http
    bind 192.168.1.61:9999
    stats enable
    log global
    stats uri     /haproxy-status
    stats auth   haadmin:123456

[root@ka1 ~]# cat /etc/haproxy/haproxy.cfg
listen http
    bind 192.168.1.55:80
    server web1 192.168.1.51:80 check
    server web2 192.168.1.52:80 check
listen stats
    mode http
    bind 192.168.1.62:9999
    stats enable
    log global
    stats uri     /haproxy-status
    stats auth   haadmin:123456

# 在两个ka1和ka2两个节点启用内核参数
[root@ka1 ~]# cat /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
[root@ka1 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1

[root@ka2 ~]# cat /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
[root@ka2 ~]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1

# 启动haproxy
[root@ka1 ~]# systemctl enable --now haproxy.service
[root@ka2 ~]# systemctl enable --now haproxy.service


# 创建脚本
[root@ka2 ~]# vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy || systemctl restart haproxy

[root@ka1 ~]# chmod a+x /etc/keepalived/check_haproxy.sh


[root@ka2 ~]# vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
/usr/bin/killall -0 haproxy || systemctl restart haproxy


[root@ka2 ~]# chmod a+x /etc/keepalived/check_haproxy.sh 
# 配置keepalived
[root@ka1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    notification_email {
    root@localhost
    }
    notification_email_from kaadmin@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id ka1
    vrrp_mcast_group4 224.0.100.100
}

vrrp_script check_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 1
    weight -30
    fall 3
    rise 5
    timeout 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 66
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.55/24 dev eth0 label eth0:1
    }
    track_interface {
        eth0
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    track_script {
        check_haproxy
    }
}

[root@ka2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    notification_email {
    root@localhost
    }
    notification_email_from kaadmin@localhost
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id ka2
    vrrp_mcast_group4 224.0.100.100
}

vrrp_script check_proxy {
    script "/etc/keepalived/check_proxy.sh"
    interval 1
    weight -30
    fall 3
    rise 5
    timeout 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 66
    priority 80
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.55/24 dev eth0 label eth0:1
    }
    track_interface {
        eth0
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    track_script {
        check_haproxy
    }
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享