Haproxy+Keepalived双主负载均衡

Haproxy+Keepalived双主负载架构

VIP:172.21.3.230
Keepalived01:172.21.3.221
Keepalived02:172.21.3.226
haproxy01:172.21.3.221
haproxy02:172.21.3.226
web01:172.21.3.223
web02:172.21.3.224
	

Haproxy安装

#haproxy01与haproxy02两台机器都需要部署Haproxy
haproxy01:172.21.3.221
haproxy02:172.21.3.226

Haproxy安装教程
	

Keepalived安装配置

#Keepalived01与Keepalived02两台机器都需要部署Keepalived
Keepalived01:172.21.3.221
Keepalived02:172.21.3.226

#安装Keepalived
yum install -y keepalived
#配置Keepalived01主机上Keepalived文件
#vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                #script "/opt/nginx_pid.sh"
                script "/opt/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state MASTER        ############ 辅机为 BACKUP
    interface ens192
    virtual_router_id 51
    mcast_src_ip 172.21.3.226
    priority 100                  ########### 权值要比 back 高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script { 
        chk_http_port ### 执行监控的服务 
        }
    virtual_ipaddress {
       172.21.3.230
    }
}
#配置Keepalived02主机上Keepalived文件
#vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                #script "/opt/nginx_pid.sh"
                script "/opt/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state BACKUP        ############ 辅机为 BACKUP
    interface ens192
    virtual_router_id 51
    mcast_src_ip 172.21.3.224
    priority 99                  ########### 权值要比 back 高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script { 
        chk_http_port ### 执行监控的服务 
        }
    virtual_ipaddress {
       172.21.3.230
    }
}
	

Keepalived检测脚本

#检测脚本,为了防止haproxy服务关闭导致keepalived不自动切换
#vim /opt/check_haproxy.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
     haproxy -f /usr/local/haproxy/haproxy.cfg
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       systemctl stop keepalived
fi
	

关闭selinux

#如果不关闭selinux keepalived检测脚本不会被执行
sed -i '7s#enforcing#disabled#g' /etc/selinux/config

#临时关闭
setenforce 0
	

启动keepalived、Haproxy服务

#启动Haproxy
haproxy -f /usr/local/haproxy/haproxy.cfg

#停掉Haproxyhaproxy
pkill -9

#启动Keepalived
systemctl start keepalived

#停掉Keepalived
systemctl stop keepalived
	

检查VIP

#Keepalived01:172.21.3.221
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cc:30:be brd ff:ff:ff:ff:ff:ff
    inet 172.21.3.221/24 brd 172.21.3.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 172.21.3.230/32 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::231c:906e:ea15:e710/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#Keepalived02:172.21.3.226
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:06:78:bb brd ff:ff:ff:ff:ff:ff
    inet 172.21.3.226/24 brd 172.21.3.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet 172.21.3.230/32 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::ed69:9369:5b70:220c/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::3583:e790:cf43:80f4/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::f2b6:75d0:27d7:f5b0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


	
posted @ 2020-09-08 10:26  浒多年以后  阅读(211)  评论(0)    收藏  举报