一、服务配置
VIP | 192.168.10.10 |
keepalive (主) | 192.168.10.11 |
keepalive (从) | 192.168.10.12 |
nginx | 192.168.10.20 |
nginx | 192.168.10.21 |
二、LVS 配置
[root@test01 nginx]# cat /etc/keepalived/keepalived.conf
#ConfigurationFile for keepalived
global_defs {
router_id linux_lvs01 ## 标识本节点的字条串,通常为 hostname
}
vrrp_script check_lvs { ######定义监控nginx的脚本
script "/root/check_lvs.sh"
interval 1 ######监控时间间隔
weight 2 ######负载参数
}
vrrp_instance vrrptest { ######定义vrrptest实例
state MASTER ######服务器状态
nopreempt #非抢占模式
interface eth0 ######使用的接口
virtual_router_id 51 ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换
priority 150 ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
advert_int 1 ######服务器之间的存活检查时间
track_script { ######执行监控nginx进程的脚本
check_lvs
}
virtual_ipaddress { ######虚拟IP地址
192.168.10.10
}
}
virtual_server 192.168.10.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50 //如果为0,主要是为了方便测试,每次刷新页面结果会不一样
protocol TCP
real_server 192.168.10.20 80{
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.21 80{
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
三、nginx服务上配置真实服务:
#!/bin/sh
VIP=192.168.10.10 #虚拟ip,根据需求修改
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "lo:0 port starting"
# 为了相应lvs调度器转发过来的包,需在本地lo接口上绑定vip
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
# 限制arp请求
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
echo "lo:0 port closing"
ifconfig lo:0 down
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start ¦ stop}"
exit 1
esac