Keepalived 是一个用于实现高可用性的开源软件,它基于 VRRP(Virtual Router Redundancy Protocol)协议,允许多台服务器协同工作,以确保在某个服务器出现故障时服务的连续性。Keepalived 的核心思想是将多台服务器配置成主服务器(MASTER)和备份服务器(BACKUP),它们共享一个虚拟 IP 地址(VIP),并使用 VRRP 协议来协调主备之间的状态。
以下是 Keepalived 的主要模块及其作用的介绍:
-
Core 模块:
- Core 模块是 Keepalived 的核心部分,负责主进程的启动、维护以及全局配置文件的加载和解析。
- 它负责处理配置文件中定义的主备服务器角色、虚拟 IP 地址、VRRP 参数等重要信息。
- Core 模块还管理着 VRRP 模块和 Check 模块的运行,并协调它们之间的工作。
-
VRRP 模块:
- VRRP 模块是 Keepalived 中非常重要的组成部分,用于实现 VRRP 协议。
- VRRP 协议允许主备服务器之间协调工作,以确保主服务器的高可用性。
- 主要功能包括:
- 虚拟 IP 的创建和管理:VRRP 模块负责创建和维护虚拟 IP 地址,该虚拟 IP 地址会漂移到备份服务器当主服务器不可用时。
- VRRP 通告的发送和接收:主服务器定期发送 VRRP 通告消息,备份服务器监听这些消息以检测主服务器的状态。
- 自动故障切换:当备份服务器检测到主服务器不可用时,它会接管虚拟 IP,确保服务的连续性。
- 配置和状态同步:VRRP 模块确保主备服务器之间的配置和状态保持同步,以便顺利进行主备切换。
-
Check 模块:
- Check 模块负责执行健康检查,以确定主服务器和备份服务器的状态。
- 健康检查可以采用多种方式,包括端口检查、URL 检查等。
- 健康检查的目的是确保主服务器正常运行,如果主服务器出现问题,备份服务器可以接管服务。
- Check 模块会定期检查服务器的可用性,并将检查结果传递给 VRRP 模块,以影响主备切换的决策。
Keepalived 的工作流程如下:
- 主服务器和备份服务器都运行 Keepalived,并通过配置文件指定自己的角色和虚拟 IP 地址。
- 主服务器定期发送 VRRP 通告消息,备份服务器监听这些消息以检测主服务器的状态。
- 同时,Check 模块会执行健康检查,确保主服务器的可用性。
- 如果主服务器出现故障或不可用,备份服务器会接管虚拟 IP 地址,继续提供服务。
- 当主服务器恢复正常时,它可以再次接管虚拟 IP 地址,恢复为主服务器的角色。
Keepalived 提供了一个强大的工具,可用于确保基于 LVS 的服务在面临硬件或软件故障时保持高可用性。它在数据中心和网络环境中广泛使用,用于构建可靠的负载均衡和高可用解决方案。通过合理配置和使用 Keepalived,可以降低单点故障的风险,提高系统的可用性和稳定性。
keepalived+LVS负载均衡
这次实验使用LVS的DR模式
主DR 服务器:192.168.2.14
备DR 服务器:192.168.2.15
Web 服务器1:192.168.2.12
Web 服务器2:192.168.2.13
vip:192.168.2.188
1配置主DR服务器
安装 ipvsadm软件和keepalived软件
yum -y install ipvsadm keepalived
启动ip_vs模块
modprobe ip_vs
(1)配置keeplived(主、备DR 服务器上都要设置)
vim 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 {
192.168.2.188
}
}
virtual_server 192.168.2.188 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.12 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
配置完成
查验是否配置成功
ip add
配置成功
scp /etc/keepalived/keepalived.conf 192.168.2.15:/etc/keepalived/keepalived.conf
从服务器上
vim /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 BUCKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.188
}
}
virtual_server 192.168.2.188 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.12 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.13 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
检查是否配置成功 关闭主服务器keepalived
配置成功
节点服务器参考上一篇博客的配置