当前位置: 首页 > news >正文

LVS + Keepalived 高可用群集

目录

一、Keepalived 双机热备基础知识

1、Keepalived概述及安装

(1)Keepalived 的热备方式

(2)Keepalived 的安装与服务控制

1.安装Keepalived(101/102)

2、使用Keepalived 实现双机热备

(1)主服务器的配置(101)

(2)备用服务器的配置(102)

(3)测试双机热备功能(101/102)

二、使用Keepalived 实现双击热备

1、基础环境配置

2、配置主调度器(101)

(1)全局配置、热别配置

(2)Web服务器池配置(101/102)

3、配置从调度器(102)

4、配置Web节点服务器(103/104)

5、测试LVS+Keepalived 高可用群集


一、Keepalived 双机热备基础知识

Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检査(Health Checking)功能——判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到 backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

1、Keepalived概述及安装

Keepalived 的官方网站位于 http://www.keepalived.org/,本章将以 YUM方式讲解 Keepalived 的安装、配置和使用过程。在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用。

(1)Keepalived 的热备方式

Keepalived 采用 VRRP(Virtual Router Redundancy Protocol, 虚拟路由冗余协议)热备份协议,以软件的方式实现Linux 服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。

热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens160:0),而是由 Keepalived 根据配置文件自动管理。

主机

操作系统

IP

服务

101

OpenEuler24

192.168.10.101

Keepalived/httpd

102

OpenEuler24

192.168.10.102

Keepalived/httpd

(2)Keepalived 的安装与服务控制

1.安装Keepalived(101/102)

在OpenEuler24系统中,使用DNF方式安装,会自动安装 Keepalived 所需的软件包。除此之外,在 LVS群集环境中应用时,也需要用到 ipvsadm 管理工具。

dnf -y install keepalived ipvsadmsystemctl enable keepalived    #设置服务为开机启动

2、使用Keepalived 实现双机热备

基于 VRRP 的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有 多台服务器--当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是 Web、FTP、Mail,还是 SSH、DNS·…

本小节将通过一个简单的案例来说明 Keepalived 双机热备的配置方法。其中,主、备服务器的IP地址分别为 192.168.10.101和 192.168.10.102,基于漂移地址 192.168.10.172 提供 Web 服务。

(1)主服务器的配置(101)

Keepalived 服务的配置目录位于/etc/keepalived/。其中keepalived.conf 是主配置文件。另外包括一个子目录 samples/,提供了许多配置样例作为参考。

systemctl stop firewalld
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.confvim keepalived.conf
global_defs {router_id LVS_01    #本路由器(服务器)的名称#vrrp_strict    #取消严格模式
}vrrp_instance VI_1 {    #定义VRRP热备实例state MASTER    #热备状态,MASTER表示主服务器interface ens160    #承载VIP 地址的物理接口virtual_router_id 51    #虚拟路由器的ID号,每个热备组保持一致priority 100    #优先级,数值越大优先级越高advert_int 1    #通告间隔秒数(心跳频率)authentication {    #认证信息,每个热备组保持一致auth_type PASS    #认证类型auth_pass 1111    #密码字串}virtual_ipaddress {    #指定漂移地址(VIP),可以有多个192.168.10.172}
}

确认上述配置无误,然后启动Keepalived 服务。实际状态为 MASTER 的主服务器将为 ens160 接口自动添加 VIP 地址,通过 ip 命令可以查看。

注:ifconfig 命令看不到。

systemctl start keepalivedip addr
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:18:3b:14 brd ff:ff:ff:ff:ff:ffinet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet 192.168.10.172/32 scope global ens160    #自动设置的VIP地址valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe18:3b14/64 scope link noprefixroute valid_lft forever preferred_lft forever

(2)备用服务器的配置(102)

在同一个 Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。

  • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称。
  • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP。
  • 优先级(priority):数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突。

配置备用服务器(可以有多台)时,可以参考主服务器的keepalived.conf配置文件内容,只需修改路由器名称、热备状态、优先级。

systemctl stop firewalld
setenforce 0
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.confvim keepalived.conf
global_defs {router_id LVS_02    #本路由器(服务器)的名称#vrrp_strict
}vrrp_instance VI_1 {state BACKUP    #热备状态,BACKUP表示备用服务器priority 90    #优先级,数值应低于主服务器
......    #省略部分内容
}

确认配置无误,一样需要启动Keepalived 服务。此时主服务器仍然在线,VIP 地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为 ens160 接口添加 VIP 地址。

systemctl start keepalived
ip addr

(3)测试双机热备功能(101/102)

安装httpd

dnf -y intall httpd
echo "111" > /var/www/html/index.html    #101上执行
echo "222" > /var/www/html/index.html    #102上执行
systemctl start httpd

测试

curl 192.168.10.172#会发现,101和102的内容轮流出现,因为我们设置的轮询算法

可以依次关闭101或者102,然后在另一台服务器执行ip addr命令查看VIP。

二、使用Keepalived 实现双击热备

Keepalived 的设计目标是构建高可用的 LVS 负载均衡群集,可以调用ipvsadm 工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived 构建 LVS 群集更加简便易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

在基于 LVS+Keepalived 实现的 LVS 群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器。本节将以 DR模式的 LVS 群集为基础,增加一台从负载调度器,使用Keepalived 来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的 LVS 网站群集平台。

使用 Keepalived 构建 LVS 群集时,也需要用到 ipvsadm 管理工具。但大部分工作会由Keepalived 自动完成,不需要手动执行 ipvsadm(除了查看和监控群集以外)。下面主要讲解 Keepalived 的服务器池设置,关于 NFS 共享服务的配置、Keepalived 的热备配置等在此不再详细阐述。

主机

操作系统

IP

服务

101

OpenEuler24

192.168.10.101

Keepalived/ipvsadm

102

OpenEuler24

192.168.10.102

Keepalived/ipvsadm

103

OpenEuler24

192.168.10.103

httpd

104

OpenEuler24

192.168.10.104

httpd

105

OpenEuler24

192.168.10.105

1、基础环境配置

关闭防火墙和内核安全机制(所有主机)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

安装Keeplived 以及ipvsadm(101/102)

dnf -y install keepalived ipvsadm
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf

2、配置主调度器(101)

(1)全局配置、热别配置

首先为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址。

vim keepalived.conf
global_defs {router_id LVS_01    #主调度器的名称#vrrp_strict
}vrrp_instance VI_1 {state MASTER    #主调度器的热备状态interface ens160virtual_router_id 51priority 100    #主调度器的优先级advert_int 1authentication {    #主、从热备认证信息auth_type PASSauth_pass 1111}virtual_ipaddress {    #指定群集VIP地址192.168.10.172}
}

(2)Web服务器池配置(101/102)

在 Keepalieved 的热备配置基础上添加“virtual_server VIP 端口{...}”区段来 配置虚拟服务器,主要包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置。

vim keepalived.confvirtual_server 192.168.10.172 80 {    #虚拟服务器地址(VIP)、端口delay_loop 6    #健康检查的间隔时间(秒)lb_algo rr    #轮询(rr)调度算法lb_kind DR    #直接路由(DR)群集工作模式#persistence_timeout 50    #连接保持时间(秒),若启用去掉“#”,测试时不好用,生产环境好用protocol TCP    #应该服务采用的时TCP 协议real_server 192.168.10.103 80 {    #第一个Web节点的地址、端口weight 1    #节点的权重TCP_CHECK {    #健康检查方式connect_port 80    #检查的目标开端口connect_timeout 3    #连接超时(秒)retry 3    #重试次数delay_before_retry 3    #重试间隔(秒)}}real_server 192.168.10.104 80 {    #第二个Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3retry 3delay_before_retry 3}}
}
systemctl restart keepalived

3、配置从调度器(102)

从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器池配置,只需要调整 router_id、state、priority 参数即可,其余内容完全相同。配置完成以后重启 Keepalived 服务。

vim keepalived.conf
global_defs {router_id LVS_02#vrrp_strict
}vrrp_instance VI_1 {state BUCKUP    #从调度器的热备状态interface ens160    #从调度器的优先级virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.172}
}

virtual_server部分与101上的内容一致,直接复制即可。

systemctl restart keepalived

4、配置Web节点服务器(103/104)

 安装httpd并配置

systemctl stop firewalld
systemctl disable firewalld
setenforce 0dnf -y install httpdecho "103" > /var/www/html/index.html    #103
echo "104" > /var/www/html/index.html    #104
systemctl start httpd

根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有些差异。以 DR模式为例,除了需要调整/proc 系统的 ARP 响应参数以外,还需要为虚拟接口 lo:0 配置 VIP 地址,并添加一条到 VIP 的本地路由。

ip addr add 192.168.10.172/32 dev lo label lo:0
或者
vim /etc/rc.local
ip addr add 192.168.10.172/32 dev lo label lo:0    #添加chmod +x /etc/rc.local
vim /etc/sysctl.confnet.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
sysctl -p

5、测试LVS+Keepalived 高可用群集

在客户机的浏览器中,能够通过LVS+Keepalived群集的 VIP 地址(192.168.10.172)正常访问 Web 页面内容。当主、从调度器任何一个失效时,Web 站点仍然可以访问(可能需要 刷新或者重新打开浏览器);只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡。

通过主、从调度器的/var/log/messages 日志文件,可以跟踪故障切换过程;若要查看负载分配情况,可以执行“ipvsadm -ln”“ipvsadm -lnc”等操作命令。最终可以验证 LVS+Keepalived 高可用负载均衡群集的健壮性。

也可以通过“ip addr”命令查看VIP漂移到哪台服务器上。

相关文章:

  • Spring框架学习day2--Bean管理(IOC)
  • 智能穿戴新标杆:SD NAND (贴片式SD卡)与 SOC 如何定义 AI 眼镜未来技术路径
  • 华为OD机试真题——报文回路(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 回调函数的理解
  • 【LangChain】框架解析
  • ASP.NET TreeView控件使用指南
  • 深入了解linux系统—— 库的链接和加载
  • 【Linux】shell脚本的变量与运算
  • OpenAI o3安全危机:AI“抗命”背后的技术暗战与产业变局
  • 代码随想录算法训练营第五十三天
  • 什么是node.js、npm、vue
  • DeepSeek进阶教程:实时数据分析与自动化决策系统
  • IDEA项目推送到远程仓库
  • Intellij IDEA 查找接口实现类的快捷键
  • 全志F1c200开发笔记——移植Debian文件系统
  • 【Rust模式与匹配】Rust模式与匹配深入探索与应用实战
  • 力扣面试150题--二叉树的右视图
  • 高速连接器设计的真相
  • 由enctype-引出post与get的关系,最后深究至请求/响应报文
  • windows系统下通过visual studio使用clang tooling
  • 百度工具网站改版/seo是什么简称
  • 谁做的12306网站/游戏推广平台有哪些
  • 汉口做网站公司/网络销售怎么找客源
  • 做团购的家居网站有哪些/seo在线教学
  • 网站通栏如何做特效/推销广告
  • 做网站是找什么人/免费推广引流平台