LVS+Keepalived高可用群集

目录

Keepalived双机热备基础知识

Keepalived概述及安装

Keepalived的热备方式

Keepalived的安装与服务控制

使用Keepalived实现双机热备

使用Keepalived实现双机热备

基础环境配置

配置主调度器

配置从调度器

配置Web节点服务器

测试LVS+keepalived高可用群集


Keepalived双机热备基础知识

Keepalived 起初是专门针对LVS设计的一款强大的辅助工具具,主要用来提

供故障切换 (Failover)和健康检查(Health Checking)功能一-判断LVS负

载调度器、节点服务器的可用性,当master主机出现故障力及时切换到backup

节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新

切换回master节点。

Keepalived概述及安装

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

Keepalived的热备方式

Keepalived 采用VRRP(Virtual Router Redundancy Protocol,虚拟路由
冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP
是针对路由器的一种备份解决方案一一由多台路由器组成一个热备组,通过共用
的虚拟IP地址对外提供服务:每个热备组内同一时刻只有一台主路由器提供服
务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自
动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务,如图3.1所
示。热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)
可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用
Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件(如ens33:0),
而是由Keepalived根据配置文件自动管理。

Keepalived的安装与服务控制

安装keepalived及所需安装包初次之外在LVS集群中也需要用到ipvasdm管理工具

复制代码
[root@localhost ~]# yum install -y keepalived ipvsadm nginx

控制keepalived服务

复制代码
[root@localhost ^]# systemctl enable keepalived
Created           symlink        from
/etc/systemd/system/multi-user.target.wants/keepalived. service
to /usr/lib/systemd/system/keepalived. service.

使用Keepalived实现双机热备

基于VRRP的热备方式,Keepalived可以用作服务器的故障切换,每个热

备组可以有多台服务器--当然,最常用的就是双机热各备了。在这种双机热备

方案中,故障切换主要针对虚拟IP地址的漂移来实现,团因此能够适用于各种应

用服务器(不管是Web、FTP、Mail,还是SSSH. DNS...

主服务的配置Keepalived 服务的配置目录位于/etc/keepaliIved/。其中

keepalived.conf是主配置文件。另外包括一个子目录samples/,提供了许多

配置样例作为参考。在Keepalived的配置文件中,使用"global_defs{···}"区段指定全局参

数,使用"vrrp_instance实例名称{···}"区段指定 VRRP热备参数,注释文字以"!"符号开头。

复制代码
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived ~]# cp keepalived. conf. samplekeepalived. conf
[root@localhost keepalived ~]# vi keepalived. conf
global_defs {
router_id HA_TEST_R1             本路由器(服务器)的名称
}
vrrp_instance VI_l               定义 VRRP热备实例
state MASTER                     热备状态,MASTER表示主服务器
interface ens33                    承载VIP地址的物理接口
virtual_router_id 1                  虚拟路由器的ID号,每个热备组保持一致
priority 100                          优先级,数值越大优先级越高
advert_int 1                       通告间隔秒数(心跳频率)
authentication                         人证信息,每个热备组保持一致
auth_type PASS                        认证类型
auth_pass 123456                        密码字串
}
virtual_ipaddress {                   指定漂移地址VIP可以有多个
192.168.10.100
}
}

确认上述配置无误,然后启动Keepalived服务。实际状态为1MASTER的主

服务器将为ens33接口自动添加VIP地址,通过ip命令可!以查看。注意ifconfig命令看不到。

复制代码
[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500qdisc pfifo_fast
state UP qlen 1000 link/ether 00:0c:29:93:80:fb brd ff:FF:FF:FF:FF:FF
inet 192.168.10.101/24 brd 172.16.16.255 scope globa1 ens33
valid_lft forever preferred_lft forever
inet 192.168.10.100/32 scope global ens33//自动设置的VIP地址
valid_lft forever preferred_lft forever
inet6 fe80::56be:f27:2b9b:823e/64 scope link
valid lft forever preferred lft forever

备用服务器的设置

在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本

相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等。不同之处

主要在于路由器名称、热备状态、优先级。路由器名称(router_id):建议为每个参与热备的服务器指定不不同的名称。热备状态(state):至少应有一台主服务器,将状态设为MASTER:可以有

多台备用的服务器,将状态设为BACKUP。优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高:其他备用服务器的优先级可依次递减,但不要相同,

以免在争夺VIP控制权时发生冲突。配置备用服务器(可以有多台)时,可以参考主服务器的koeepalived. conf配置文件内容,只需修改路由器名称、热备状态、优先级。

复制代码
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived ~]# cp keepalived. conf. samplekeepalived.conf
[root@localhost keepalived ~]# vi keepalived.conf
global_defs {
router_id HA_TEST_R2            本路由器(服务器)的名称
}
vrrp_instance VI_l               定义 VRRP热备实例
state MASTER                     热备状态,MASTER表示主服务器
interface ens33                    承载VIP地址的物理接口
virtual_router_id 1                  虚拟路由器的ID号,每个热备组保持一致
priority 80                          优先级,数值越大优先级越高
advert_int 1                       通告间隔秒数(心跳频率)
authentication                         人证信息,每个热备组保持一致
auth_type PASS                        认证类型
auth_pass 123456                        密码字串
}
virtual_ipaddress {                   指定漂移地址VIP可以有多个
192.168.10.100
}
}

确认配置无误,一样需要启动Keepalived服务。此时主服务器仍然在线,

VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用

服务器中将不会为ens33接口添加VIP地址。

复制代码
[root@localhost keepalived]# systemctl start keepalivepo
[root@localhost keepalived]# ip addr show dev ens33
2: ens33: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 cdisc pfifo_fast
state UP qlen 1000 link/ether 00:0c:29:dl:f0:b5 biPDFF:FF:FF:FF:FC:FF
inet 192.168.10.102/24 brd 172.16.16.255 scope gleobal ens33
valid lft forever preferred lft forever
inet6 fe80::1f08:ab66:736f:72eb/64 scope link
valid lft forever preferred lft forever

3.测试双机热备功能

Keepalived的日志消息保存在/var/log/messages文件中,在测试主、备故障

自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以对连通性和

Web服务的测试为例,主要操作如下。

(1)连通性测试

在客户机中执行"ping-t192.168.10.100"命令,能够正常常、持续ping通,

根据以下操作继续观察测试结果。

1停止启用主服务器的Keepalived服务,发现ping测试只中断了1或2

个包即恢复正常,说明已有其他服务器接替VIP地址、并及时响应客户机请求

重新启用主服务器的Keepalived服务,发现ping测试再次中断1或2

个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权。

网站测试

复制代码
[root@localhost ^]# yum -y install httpd
[root@localhost ^]# systemctl stop firewalld
[root@localhost ^]# setenforce 0
[root@localhost ^]# systemctl start httpd
[root@localhost ^]# vim /var/www/html/index.html         编写网站内容  

在客户机中访问http://192.168.10.100/,将看到由主服务器192.168. 10. 101

提供的网页文档。停止启用主服务器的Keepalived服务,再次访问上述Web服务,将看到由

备用服务器192.168.10.102提供的网页文档,说明VIP地址已切换至备用服务器。

重新启用主服务器的Keepalived服务,再次访问上述Web服务,将看到重

新由主服务器192.168.10.101提供的网页文档,说明主服务器已重新夺取VIP地址。(3)查看日志记录

在执行主、备服务器故障切换的过程中,分别观察各自的/var/log/messages志文件,可以看到MASTER、SLAVE状态的迁移记录。1主服务器中,Keepalived服务状态先变为"stop",移除VIP地址,恢复后重新变为MASTER。

复制代码
[root@localhost ~]# less /var/log/messages

备用服务器中,状态先切换为MASTER,待从服务器恢复后再交回控制权

复制代码
[root@localhost ~]# less /var/log/messages

通过上述测试过程,可以发现双机热备已经正常。客户机只要要通过VIP地

址就可以访问服务器所提供的Web等应用。其中,任何可一台服务器失效,另一

台服务器将会立即接替服务,从而实现高可用性。实际应用时,注意主、备服务

器所提供的Web服务内容要保持一致。

使用Keepalived实现双机热备

Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用
ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用
Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度
器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失
效节点,恢复后再重新加入。在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器。本节将以DR模式的LVS群集为基础,增
加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建
兼有负载均衡、高可用两种能力的LVS网站群集平台,使用Keepalived构建LVS群集时,也需要用到 ipvsadm管理工具。但大部分工作会由Keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)。下面主要讲解Keepalived的服务器池设置,关于NFS共享服务的配置、Keepalived的热备配置等在此不再详细阐述。

基础环境配置

关闭防火墙

复制代码
systemctl stop firewalld
systemctl disable firewalld

关闭内核

复制代码
setenforce 0
ised -i "SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

修改主机名

复制代码
hostnamectl set-hostname 1b01
hostnamectl set-hostname 1b02
hostnamectl set-hostname web01
hostnamectl set-hostname web02

安装keepalived以及ipvsadm

加载ip_vs模块查看ip_vs版本信息安装服务并备份模板配置文件

复制代码
modprobe ip_vs
cat proc/net/ip_vs
yum install ipvsadm keepalived -y
cp/etc/keepalived/keepalived.conf{,.bak}

配置主调度器

**全局配置,热备配置先为主从服务器实现热备份功能,**漂移地址使用 LVS群集的VIP地址。

复制代码
[root@localhost ^]# vi /etc/keepalived/keepalived. coonf
global_defs 
router_id_LVS_HA_R1
vrrp_instance VI_1 
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication 
auth_type_PASS
auth_pass 123456
virtual_ipaddress
192.168.10.10.100

web服务器池配置

在Keepalieved的热备配置基础上添加"virtual_serverVerVII端口

{...}"区段来配置虚拟服务器,主要包括对负载调度算法、群集工作模式、

健康检查间隔、真实服务器地址等参数的设置。

复制代码
[root@localhost ^]# vi /etc/keepalived/keepalived.conf
#省略部分信息
virtual server 192.168.10.100 80
#虚拟服务器地址(VIP)、端口
delay_loop 15
#健康检查的间隔时间(秒)
lb_algo rr
#轮询(rr)调度算法
lb_kind DR
#直接路由(DR)群集工作模式
! persistence 60
#连接保持时间(秒),若启用请去掉!号
protocol TCP
#应用服务采用的是TCP协议
real server 192.168.10.103 80 {
#第一个Web节点的地址、端口
#节点的权重
weight l
TCP_CHECK {
#健康检查方式
#检查的目标端口
connect_port 80
#连接超时(秒)
connect_timeout 3
#重试次数
nb_get_retry 3
//重试间隔(秒)
delay_before_retry 4
real server 192.168.10.104 80
#第二个Web节点的地址、端口
! Configuration File for keepalived
global defs
router_id LVS_DEVEL
vrrp_instance VI_1 {
state MASTER
#两个DS,一个为MASTER一个为BACKUP
interface ens33
#当前 IP 对应的网络接口,通过 ifconfig 查询
virtual_router_id 62
#虚拟路由ID(0-255),在一个VRRP实例中主
备服务器ID必须一样
priority 100
#优先级值设定:MASTER要比BACKUP的值大
#通告时间间隔:单位秒,主备要一致
advert_int 1
认证机制,主从节点保持一致即可
authentication {
#
auth_type PASS
auth_pass 1111
virtual_ipaddress
192.168.10.100
#VIP,可配置多个
# web配置
virtual server 192.168.10.100 80
#设置健康状态检查时间
delay_loop 3
#调度算法,这里用了rr轮询算法
lb_algo rr
lb_kind DR
#这里测试用了DirectRoute模式
persistence_timeout 50
#持久连接超时时间,注意添加此项配
置客户端连续请求时,请求到同一节点
protocol TCP
real server 192.168.10.103 80 {
weight 1
TCP CHECK
connect_timeout 10
retry 3
#旧版本为nb_get_retry
#重试间隔3秒
delay_before_retry 3
connect_port 80
real server 192.168.10.104 80 {
weight l
TCP CHECK {
connect_timeout 10
retry 3
delay_before_retry 3
connect_port 80

[root@localhost ~]#systemctl restart keepalived

配置从调度器

从调度器的配置与主调度器基本相同,也包括全局配置、热备配置、服务器

池配置,只需要调整router_id、state、priority参数即可,其余内容完全相

同。配置完成以后重启Keepalived服务。

复制代码
[root@localhost ^]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R2
郑州课
//从调度器的名称
vrrp_instance VI_1
state BACKUP
//从调度器的热备状态
priority 90
//从调度器的优先级
//省略部分信息
.....
virtual server 192.168.10.100 80 {
//省略部分信息
[root@localhost ^]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_HA_R2
郑州课
//从调度器的名称
vrrp_instance VI_1
state BACKUP
//从调度器的热备状态
priority 90
//从调度器的优先级
//省略部分信息
.....
virtual server 192.168.10.100 80 {
//省略部分信息
[root@localhost ~]# systemctl restart keepalived

配置Web节点服务器

根据所选择的群集工作模式不同(DR或NAT),节点服务器的配置也有些

差异。以DR模式为例,除了需要调整/proc系统的ARP响)应参数以外,还需

要为虚拟接口 1o:0配置VIP地址,并添加一条到VIP的Z本地路由,具体方

法请参考前面内容

DR模式需要节点服务器也配置vip

复制代码
#!/bin/bash
#修改为自己的VIP
vip='192.168.207.200'
case
start
设置ARP参数
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/default/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/default/arp_announce
echo"1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
#临时添加VIP(重启失效)
sudo ip addr add ${vip}/32 dev 1o label 10:0
临时添加路由(重启失效)
sudo ip route add local ${vip}/32 dev 1o
#永久生效(通过rc.local或NetworkManager脚本)
echo "ip addr add ${vip}/32 dev lo label 10:0"
sudo tee -a
/etc/rc. local
echo "ip route add local ${vip}/32 dev lo" | sudo tee -a /etc/rc. local
sudo chmod +x/etc/rc.local
stop)
恢复ARP参数
echo "0" > /proc/sys/net/ipv4/conf/all/arp ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/default/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/default/arp_announce
echo "0" >
/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
移除临时添加的VIP
sudo ip addr del ${vip}/32 dev lo label 10:0
#移除临时添加的路由
sudo ip route del local ${vip}/32 dev lo
#从rc.local中移除永久设置
sudo sed -i "/ip addr add ${vip}\/32 dev lo labeel lo:0/d
/etc/rc. local
sudo sed -i "/ip route add local ${vip}\/32 dev lo/d" /etc/rc. local
echo "Usage: $0 {start|stop}"
exit l
esac
exit 0

测试LVS+keepalived高可用群集

在客户机的浏览器中,能够通过LVS+Keepalived群集的VIP地址
(192.168.10.100)正常访问Web页面内容。当主、从调度器得任何一个失效时,
Web站点仍然可以访问(可能需要刷新或者重新打开浏览器器);只要服务器池
有两台及以上的真实服务器可用,就可以实现访问量的负载均衡。通过主、从调
度器的/var/log/messages 日志文件,可以跟踪故障切换过程:若要查看负载分
配情况,可以执行"ipvsadm-ln" "ipvsadm-lnc"等操作命令。最终可以验
证LVS+Keepalived高可用负载均衡群集的健壮性。

LVS+Keepalived 是构建高可用、高性能负载均衡系统的经典方案,其核心价值在于通过内核级转发保障性能,通过 VRRP 协议实现节点冗余。在实际部署中,需根据业务特点选择合适的 LVS 模式(如 DR 模式的高转发效率),并结合细致的网络规划、健康检查和监控体系,确保整个架构的稳定性和可维护性。对于超大规模场景,可进一步引入分布式负载均衡(如 DNS 轮询、Anycast 技术)与 LVS 结合,实现流量的全局调度在当今互联网业务高并发、高可用的需求背景下,单点故障和性能瓶颈成为

系统稳定性的重大挑战,而Keepalived凭借其轻量级、开源且灵活的特性,成

为解决这些问题的利器。

相关推荐
小手冰凉yy9 分钟前
VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程
linux·centos·vmware安装
Eloudy38 分钟前
业界宽松内存模型的不统一而导致的软件问题, gcc, linux kernel, JVM
java·linux·jvm·arch·gem5
别骂我h1 小时前
LVS +Keepalived高可用群集
linux·运维·lvs
UFIT1 小时前
LVS-DR群集
运维·服务器
笨小蛙1 小时前
服务器Docker容器创建与VScode远程连接SSH使用
服务器·vscode·docker·容器·ssh
蓝色的猴子2 小时前
Linux.docker.k8s基础概念
linux·docker·kubernetes
Zfox_2 小时前
Redis:功能特性和应用场景
服务器·数据库·redis·缓存·微服务
liuyunluoxiao2 小时前
线程(上)【Linux操作系统】
linux
2401_836836593 小时前
LVS-DR群集
服务器·网络·lvs
528303 小时前
LVS+Keepalived高可用群集
linux·服务器·lvs