LVS+Keepalived群集
一、理解Keelalived实现原理
keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能——判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
■专门为LVS和HA设计的一款健康检查工具
- 支持故障自动切换(Failover)
- 支持节点健康检查状态(Health Checking)
- 官网网站:http://www.keepalived.org/(有兴趣的可以去看一下)
1.1、Keepalived案例分析
在企业应用中,单台服务器承担应用存在单点故障的危险,在企业应用集群中,存在了至少两处单点故障危险,
单点故障一旦发生,企业服务将发生中断,造成极大的危害
1.2、LVS+Keepalived高可用群集概述
Keepalived的设计目标是构建可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。使用keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
在基于LVS-Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。
使用Keepalived构建LVS群集时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived自动完成,不需要手动执行ipvsadm。
1.3、Keepalived实现原理剖析
■Keepalived采用VRRP热备份协议,实现Linux服务器的多机热备功能。
■VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
- 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
- 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
1.4、Keepalived案例讲解
■双机热备的故障切换是由虚拟IP地址的漂移实现,适用于各种应用服务器
■实现基于WEB服务的双机热备
【交 换 机】
●
● 漂移地址:192.168.100.100
●
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
● ● ● ● ●
● ● ● ● ●
● ● ● ● ●
【调度器1】 【调度器2】 【WEB1】 【WEB2】 【存储】
192.168.100.21 192.168.100.22 192.168.100.23 192.168.100.24 192.168.100.25
1.4.1、配置keepalived master服务器
■ keepalived配置目录位于/etc/keepalived/
■ keepalived.conf是主配置文件
- global_defs {…} 区段指定全局参数
- vrrp_instance 实例名称 {…} 区段指定VRRP热备参数
- 注释文字以”!“符号开头
- 目录samples/,提供了许多配置样例作为参考
■常用配置选项讲解
- router_id HA_TEST_R1: 本路由器(服务器)的名称
- vrrp_instance VI_1: 定义VRRP热备实例
- state MASTER:热备状态,MASTER表示主服务器
- interface ens33:承载VIP地址的物理接口
- virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
- 热备组的ID号,代表是否在一个热备组中
- priority 100: 优先级,数值越大优先级越高
- advert_int 1: 通告间隔秒数(心跳频率)
- auth_type PASS: 认证类型
- auth_pass 123456: 密码字串
- virtual_ipaddress {vip}: 指定漂移地址(VIP),可以有多个
1.4.2、配置keepalived slave服务器
■keppalived 备份服务器的配置与master的配置有三个选项不同
- router_id: 设为自由名称
- state: 设为BACKUP
- priority: 优先值值低于主服务器
■其他选项与master相同
三、实验LVS+Keelalived高可用群集部署
3.1、案例部署配置
名称 | 操作系统 | IP地址 |
---|---|---|
LVS-Master | Centos7.6-x86_64 | 192.168.100.21 |
LVS-Backup | Centos7.6-x86_64 | 192.168.100.22 |
WebserverA | Centos7.6-x86_64 | 192.168.100.23 |
WebserverB | Centos7.6-x86_64 | 192.168.100.24 |
NFS共享 | Centos7.6-x86_64 | 192.168.100.25 |
这边我们的漂移地址(VIP):192.168.100.10
首先我们在做实验时必须先关闭5台虚拟机的防火墙、核心防护,并配置好本地Yum源。
3.2、配置主调度器 192.168.100.21
- 调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###使其生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
- 清除负载分配策略
[root@localhost /]# ipvsadm -C
- 调整keepalived参数
global_defs {
router_id HA_TEST_R1 ####本路由器的服务器名称 HA_TEST_R1
}
vrrp_instance VI_1 {
####定义VRRP热备实列
state MASTER ####热备状态,master表示主服务器
interface ens33 ####表示承载VIP地址的物理接口
virtual_router_id 1