环境规划
配置说明
- Client的网关指向 192.168.1.4
- RS,keepalived 网关指向 192.168.43.17
- RS上安装 httpd服务,RS1,RS2的vip为 192.168.43.100,RS3,RS4的vip为 192.168.43.200
- keepalived服务器上安装 keepalived服务,配置两个vip,192.168.43.100,192.168.43.200
- 路由器上开启路由转发的功能
keepalived 配置
安装keepalived软件包
yum install keepalived -y
配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id keepalived-01 // keepalived-02
vrrp_mcast_group4 224.100.100.100
}
vrrp_instance VI_1 {
state MASTER // BACKUP
interface ens33
virtual_router_id 66
priority 100 // 小于 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.43.100/24 dev ens33 label ens33:1
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
state BACKUP // MASTER
interface ens33
virtual_router_id 88
priority 80 // 大于 80
advert_int 1
authentication {
auth_type PASS
auth_pass 654321
}
virtual_ipaddress {
192.168.43.200/24 dev ens33 label ens33:2
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
virtual_server 192.168.43.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.43.6 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.43.16 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 192.168.43.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.43.26 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.43.36 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
安装 ipvsadm 用于查看规则
安装 httpd 建立 SorryServer服务
RS的配置
vim lvs_dr_rs.sh
#!/bin/bash
vip=192.168.43.100 // RS1,RS2配置为 100,RS3、RS配置为200
mask='255.255.255.255'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &> /dev/null
service httpd start &> /dev/null && echo "The httpd Server is Ready"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
Client 测试
while : ;do curl 192.168.43.100;sleep 1;done
while : ;do curl 192.168.43.200;sleep 1;done
解决了什么问题
- rs 挂掉了,keepalived 会把对应的那条记录在 lvs 规则中清除
- 一台 keepalived 服务器挂掉了,vip 会漂移到 从节点上
- 后端的所有 rs 挂掉了,会提供 Sorry Server
- 每个 keepalived 服务器管理不同的业务, 一旦有一台keepalived服务器挂掉了,会承担所有业务。
来源:CSDN
作者:studywinwin
链接:https://blog.csdn.net/studywinwin/article/details/104187530