目录
1.5、VRRP:Virtual Router Redundancy Protocol
3.1、实现master/slave的 Keepalived 单主架构
3.5、实现 master/master 的 Keepalived 双主架构
引言
在当今的互联网时代,服务的高可用性是企业关注的焦点。Keepalived 作为一个强大的高可用解决方案,通过 VRRP(Virtual Router Redundancy Protocol)协议,确保了网络服务的连续性和稳定性。本文将详细介绍 Keepalived 的基本概念、部署方法以及企业应用示例。
一.高可用集群
1.1、高可用集群类型
- LB(Load Balance):负载均衡,使用 LVS/HAProxy/nginx 等工具。
- HA(High Availability):高可用集群,常用于数据库、Redis 等。
- SPoF(Single Point of Failure):解决单点故障问题。
- HPC(High Performance Computing):高性能计算集群。
1.2、系统可用性
- SLA(Service-Level Agreement):服务等级协议,定义服务的品质、水平、性能等。
- 可用性指标:99.9%, 99.99%, 99.999%, 99.9999%。
1.3、系统故障
- 硬件故障:可能由设计缺陷、损耗或不可抗力因素引起。
- 软件故障:通常由设计缺陷或 bug 引起。
1.4、实现高可用
- 降低 MTTR(Mean Time To Repair,平均故障恢复时间)。
- 建立冗余机制,如 active/passive 主备模式或 active/active 双主模式。
1.5、VRRP:Virtual Router Redundancy Protocol
VRRP,即虚拟路由器冗余协议(Virtual Router Redundancy Protocol),是一种在网络中提供高可用性解决方案的协议。它允许多个路由器共同拥有一个或多个虚拟IP地址,并且在这些路由器之间实现主备切换,以确保网络服务的连续性。以下是关于VRRP的一些关键点:
1.5.1、基本概念
- 虚拟路由器:一组路由器共同拥有一个虚拟的IP地址,对外表现为单一的逻辑路由器。
- VIP(Virtual IP):虚拟路由器对外的IP地址,客户端使用这个IP地址进行通信。
- VMAC(Virtual MAC):虚拟路由器的MAC地址,格式通常为
00-00-5e-00-01-{VRID}
。
1.5.2、工作机制
- 主设备(Master):在一组路由器中,被选举为主设备的路由器负责处理通过VIP的所有流量。
- 备份设备(Backup):其他路由器作为备份,监控主设备的健康状况。
- 选举机制:通过优先级(Priority)和认证信息等参数来选举主设备。
1.5.3、故障转移
- 当主设备出现故障时,备份设备中的一个将被选举为新的主设备,接管VIP,继续提供服务。
- 故障转移通常是快速且透明的,对终端用户没有影响。
1.5.4、配置要点
- VRID(Virtual Router ID):用于区分不同的虚拟路由器组,每个虚拟路由器组内的所有设备必须使用相同的VRID。
- 优先级(Priority):决定选举主设备时的权重,优先级高的设备更有可能成为主设备。
- 认证方法:包括无认证、简单字符认证和MD5认证,用于增强通信的安全性。
1.5.6、工作模式
- 抢占式(Preempt):高优先级的备份设备在恢复时会抢占低优先级的主设备。
- 非抢占式(Nopreempt):高优先级的备份设备在恢复后不会抢占主设备,除非主设备再次出现故障。
1.5.7、工具支持
- Keepalived:广泛使用的VRRP协议实现,支持Linux操作系统。
VRRP 是一种有效的网络高可用性解决方案,它通过简化路由器的冗余配置,减少了单点故障的风险,并提高了网络的稳定性和可靠性。
二、 Keepalived 部署
2.1、keepalived 简介
Keepalived 是一款强大的开源软件,用于实现 Linux 系统上的高可用性。它主要通过 VRRP(Virtual Router Redundancy Protocol)协议来确保网络中的虚拟路由器在主节点故障时能够无缝切换到备份节点,从而保证网络服务的连续性和稳定性。以下是 Keepalived 的几个关键概述点:
2.1.1、功能特点
- VRRP 支持:Keepalived 实现了 VRRP 协议,能够在多个路由器之间共享虚拟 IP 地址,实现故障切换。
- 健康检查:提供对后端服务(如 HTTP 服务器、数据库等)的健康检查功能,确保流量只会被路由到健康的服务上。
- 负载均衡:虽然 Keepalived 主要用于高可用性,但它也可以用于简单的负载均衡场景。
2.1.2、架构组成
- vrrp stack:处理 VRRP 协议的栈。
- checkers:用于监测真实服务器状态的组件。
- system call:在 VRRP 协议状态转换时调用脚本的功能。
- SMTP:邮件组件,用于在发生故障切换时发送通知邮件。
- IPVS wrapper:用于生成 IPVS(IP Virtual Server)规则的组件。
- Netlink Reflector:网络接口组件。
- WatchDog:监控进程,确保 Keepalived 本身的稳定性。
2.1。3、部署场景
- 主备切换:在主服务器故障时,自动将服务切换到备份服务器。
- 负载均衡:在多个服务器之间分配网络流量,提高资源利用率。
- 故障检测与恢复:定期检查服务状态,快速响应故障并进行恢复。
2.1.4、配置要点
- VRRP 实例:定义 VRRP 配置的实例,包括状态、接口、虚拟路由器 ID、优先级等。
- 虚拟 IP 地址:配置一个或多个虚拟 IP 地址,这些 IP 将在主节点和备份节点之间共享。
- 认证方法:设置认证方法以增强 VRRP 通信的安全性。
- 通知脚本:定义在状态变化时执行的脚本,如发送邮件通知。
2.1.5、企业应用
- 数据库高可用:确保数据库服务的高可用性,减少系统停机时间。
- Web 服务负载均衡:为 Web 应用提供负载均衡,提高访问速度和系统稳定性。
- 多数据中心容灾:在多个数据中心部署 Keepalived,实现跨地域的高可用性。
Keepalived 是构建高可用网络基础设施的重要工具,适用于需要高可靠性和故障恢复能力的企业和组织。通过合理配置和使用 Keepalived,可以显著提高服务的稳定性和用户满意度。
2.2、Keepalived 环境准备
- 各节点时间必须同步:ntp, chrony
- 关闭防火墙及SELinux
- 各节点之间可通过主机名互相通信:非必须
- 建议使用/etc/hosts文件实现:非必须
- 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须
2.3、Keepalived 安装与配置
安装 keepalived
[root@ka1 ~]# yum install keepalived -y
[root@ka1 ~]# systemctl start keepalived
[root@ka2 ~]# yum install keepalived -y
[root@ka2 ~]# systemctl start keepalived
全局配置
! 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 ka1.timinglee.org
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
vrrp_mcast_group4 224.0.0.18
#vrrp_iptables
}
配置虚拟路由器
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 100
priority 100 #将ka2中的优先级设置为80
advert_int 1
#nopreempt
#preempt_delay 5s
authentication {
auth_type PASS
auth_pass 1111
}
#设置VIP
virtual_ipaddress {
172.25.254.100/24 dev eth0 label eth0:1
}
# unicast_src_ip 172.25.254.10
# unicast_peer {
# 172.25.254.20
# }
}
测试;
2.4、启用keepalived日志功能
[root@ka1 ~]# vim /etc/sysconfig/keepalived
[root@ka1 ~]# systemctl restart keepalived.service