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
