IP | |
lb01 | 10.0.0.5 |
lb02 | 10.0.0.6 |
VIP | 10.0.0.100 |
1、安装配置(抢占式)keepalived
#在lb01节点和lb02节点,分别安装keepalived
[root@lb01 ~]# yum -y install keepalived
[root@lb02 ~]# yum -y install keepalived
#配置lb01(master)节点
[root@lb01 keepalived]# cat keepalived.conf
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 50
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
}
#配置lb02(backup)节点
[root@lb02 keepalived]# cat keepalived.conf
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
}
#启动lb01上的keepalived
[root@lb01 ~]# systemctl start keepalived
[root@lb01 ~]# systemctl enable keepalived
#启动lb02上的keepalived
[root@lb02 ~]# systemctl start keepalived
[root@lb02 ~]# systemctl enable keepalived
2、配置 (非抢占式)keepalived
#配置lb01
[root@lb01 keepalived]# cat keepalived.conf
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 150
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
}
#配置lb02
[root@lb02 keepalived]# cat keepalived.conf
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
}
3、Nginx 负载均衡 借助keepalived 的VIP漂移技术 实现高可用
#配置lb01
[root@lb01 keepalived]# cat keepalived.conf
global_defs {
router_id lb01
}
vrrp_script check_web {
script "/scripts/check_web.sh"
interval 5
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 150
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
track_script {
check_web
}
}
#配置lb02
[root@lb01 keepalived]# cat keepalived.conf
global_defs {
router_id lb02
}
vrrp_script check_web {
script "/scripts/check_web.sh"
interval 5
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 50
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.100
}
track_script {
check_web
}
}
#nginx存活性检测脚本
[root@lb01 ~]# cat /scripts/check_web.sh
#!/usr/bin/env bash
nginx_pid=$(pidof nginx|wc -l)
#检测Nginx是否宕机,宕机的话就重启
if [ $nginx_pid -eq 0 ];then
systemctl start nginx
sleep 2
#等待两秒后再获取一下Nginx的状态
nginx_pid=$(pidof nginx|wc -l)
#再次判断Nginx的状态,Nginx不存活的话就杀掉keepalived
if [ $nginx_pid -eq 0 ];then
systemctl stop keepalived
fi
fi