VRRP
![img_c21db20c85af557e416e880ca428b645.png](https://i-blog.csdnimg.cn/blog_migrate/63c7bb3093dacde13b9ad1e204066a82.png)
![img_27f0ddc1ecc739ec77dec2d6c69fb9f2.png](https://i-blog.csdnimg.cn/blog_migrate/c9270a545756441b79671c473492bd93.png)
VRRP通过224.0.0.18来实现
在VRRP中,不管谁是主,对外都是相同的MAC和IP
作为主,必须不断发送VRRP包,告诉其他备,他是存活的
keepalived:core,vrrp,check,libipfwc,libipvs
keepalived对LVS进行封装
KeepAlived配置文件分为三部分:全局配置、VRRPD配置、LVS配置
![img_e4f473675f865e2e45c36df9069c93d5.png](https://i-blog.csdnimg.cn/blog_migrate/a8f4194203520152149e5d0de23b5a2d.png)
vrrp_sync_group 用来捆绑两个网卡,只要其中一个挂了,就一起判定为挂了
vrrp_sync_group VG_1{
group {
VI_1
VI_2
}
notify_master /path/master.sh
notify_backup /path/backup.sh
notify_fault /path/fault.sh
notify /path/notify.sh
smtp_alert
}
![img_0f1fac7de00d96f466aee1a2e1853755.png](https://i-blog.csdnimg.cn/blog_migrate/8bc93a22b15a508cbe2988e71efef3c3.png)
vrrp_instance VI_1 {
state MASTER
interface eth0
dont_track_primary
track_interface {
eth0
eth1
}
garp_master_delay 10
virtual_route_id 51
priority 100
advert_int 1
authentication {
auth_type pass
auth_pass 1234
}
virtual_ipaddress {
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
virtual_routes {
src xx to xx via xx dev xx
xx via xx dev xx
xx dev xxx
xx via xxx
}
nopreempt
preempt_delay 300
debug
}
dont_track_primary 忽略VRRP的interface错误
track_interface 设置额外的监控,里面的任何一个网卡出问题,都会进入FAULT状态
mcast_src_ip 发送多播包的地址,如果不设置,默认使用绑定的网卡的IP
garp_master_delay 切换成MASTER后,延迟进行g'ratuitous ARP请求
MASTER的priority要至少高BACKUP50
advert_int 检测间隔
virtual_routes virtual_ipaddress
nopreempt 设置为不抢占,只能放在BACKUP里
LVS的配置
virtual_server_group 虚拟主机组,让一台realserver的某个service属于多个virtual server,并且只做一次健康检查
virtual_server vip vport {
delay_loop 3
lb_algo rr|wrr|lc|wlc|lblc|sh|dh
lb_kind NAT|DR|TUN
persistence_timeout 120 #会话保持时间
persistence_granularity #LVS的会话保持粒度
protocol TCP
ha_suspend
virtualhost
sorry_server #备用机
real_server ip port
{
weight 1
inhibit_on_failure #服务器健康检查失败时,将weight设置为0
notify_up #在检测service up后,执行的脚本
notify_down #检测service down后,执行的脚本
健康检查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
HTTP_GET|SSL_GET
{
url {
path /
status_code 200
}
connect_port 80
bindto #以此地址发送请求
connect_timeout
nb_get_retry 3 #重连次数
delay_before_retry #重连间隔
}
TCP_CHECK {
connect_port 80
bindto xxx
connect_timeout 4
}
SMTP_CHECK #和HTTP类似
MISC_CHECK{
misc_path #脚本
misc_timeout #xx
![img_4687a0967e3016de0cd622e2932a0fcb.png](https://i-blog.csdnimg.cn/blog_migrate/2976b0fcbb74cffa1c513674a433fe07.png)
}
}
}