目录
- 一、KeepAlived简介
- 二、KeepAlived作用
- 三、KeepAlived实现原理剖析
- 四、案例部署
- 4.1 案例环境
- 4.2 案例配置
- 4.3 效果验证
一、KeepAlived简介
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
二、KeepAlived作用
主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)
三、KeepAlived实现原理剖析
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
- 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
- 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
四、案例部署
4.1 案例环境
服务器 | IP地址 |
虚拟IP | 172.16.1.5/32 |
LVS主调度服务器 | 172.16.1.10/16 |
LVS备调度服务器 | 172.16.1.11/16 |
Web服务器1 | 172.16.1.20/16 |
Web服务器2 | 172.16.1.30/16 |
NFS服务器 | 172.16.1.40/16 |
4.2 案例配置
本案例在上个案例的基础上添加KeepAlived服务完成,因此整个操作配置不再完整贴出,只显示添加的操作。具体可见
- LVS-1
[root@lvs-1 ~]# yum -y install keepalived
[root@lvs-1 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_01
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.5
}
}
virtual_server 172.16.1.5 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.1.20 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.1.30 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@lvs-1 ~]# systemctl start keepalived
[root@lvs-1 ~]# tail -f /var/log/messages
- LVS-2
[root@lvs-2 ~]# yum -y install keepalived
[root@lvs-2 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_02
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.1.5
}
}
virtual_server 172.16.1.5 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.1.20 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.1.30 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@lvs-2 ~]# systemctl start keepalived
[root@lvs-2 ~]# tail -f /var/log/messages
4.3 效果验证
- 验证轮询
- 模拟主调度器故障
LVS-1
LVS-2
[root@lvs-1 ~]# systemctl stop keepalived
LVS-1
LVS-2