LVS + Keepalived 高可用群集

发布于:2025-05-30 ⋅ 阅读:(47) ⋅ 点赞:(0)

目录

一、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 ipvsadm

systemctl 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.conf

vim 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 keepalived

ip addr
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:18:3b:14 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.10.172/32 scope global ens160    #自动设置的VIP地址
       valid_lft forever preferred_lft forever
    inet6 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.conf

vim 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 ens160
    virtual_router_id 51
    priority 100    #主调度器的优先级
    advert_int 1
    authentication {    #主、从热备认证信息
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    #指定群集VIP地址
        192.168.10.172
    }
}

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

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

vim keepalived.conf

virtual_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 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            retry 3
            delay_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 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_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 0

dnf -y install httpd

echo "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.conf

net.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漂移到哪台服务器上。


网站公告

今日签到

点亮在社区的每一天
去签到