LVS +Keepalived 高可用群集

发布于:2025-06-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

前言

在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。本章将学习如何使用 Keepalived 实现双机热备,包括针对 IP 地址的故障切换,以及在LVS 高可用群集中的热备应用

一. 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 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33 :0),而是由 Keepalived 根据配置文件自动管理

在这里插入图片描述

操作系统 配置 IP 服务
OpenEuler24 2C4G 192.168.10.101 Keepalived,apache
OpenEuler24 2C4G 192.168.10.102 Keepalived,apache
(2)Keepalived 的安装与服务控制

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

[root@localhost ~]# dnf install -y keepalived ipvsadm 

2. 使用Keepalived 实现双机热备

基于 VRRP的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有 多台服务器–当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是 Web、FTP、Mail,还是 SSH、DNS·)
本小节将通过一个简单的案例来说明 Keepalived 双机热备的配置方法。其中,主、备服务器的IP地址分别为192.168.10.101和 192.168.10.102,基于漂移地址 192.168.10.100 提供 Web 服务主、备服务器中都需要安装 Keepalived,使用 YUM 方式安装 httpd 提供Web 服务。下面仅讲解与 Keepalived 相关的配置及测试过程

在这里插入图片描述

(1)主服务器的配置

Keepalived 服务的配置目录位于/etc/keepalived/。其中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.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_R1
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
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 {
        192.168.10.100
    }
}

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

[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:39:a6:11 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.100/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe39:a611/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
(2)备用服务器的配置

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

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

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

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/[root@bogon keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_R2
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.100

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

[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:0b:df:52 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.102/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe0b:df52/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
(3)测试双机热备功能

Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和web 服务的测试为例

①:连通性测试

在客户机中执行“ping -t 192.168.10.100”命令,能够正常、持续 ping 通,根据以下操作继续观察测试结果
① 停止启用主服务器的 Keepalived 服务,发现 ping 测试只中断了 1或2个包即恢复正常,说明已有其他服务器接替 VIP地址,并及时响应客户机请求
② 重新启用主服务器的 Keepalived 服务,发现 ping 测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权

重启主服务器的keepalived,测试连通性

在这里插入图片描述

在这里插入图片描述

②:Web访问测试

在 keepalived 运行的主机上启动 nginx 服务并写入不通的测试页面内容

在客户机中访问 http://192.168.10.100/,将看到由主服务器 192.168.10.101提供的网页文档。① 停止启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到由备用服务器 192.168.10.102 提供的网页文档,说明 VIP 地址已切换至备用服务器
② 重新启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到重新由主服
务器 192.168.10.101 提供的网页文档,说明主服务器已重新夺取 VIP 地址

(1)安装两台测试网站

在这里插入图片描述

在这里插入图片描述

(2)为两台网站创建测试文件

在这里插入图片描述

在这里插入图片描述

(3)关闭主keepalived,测试环游地址测试文件为web2

在这里插入图片描述

在这里插入图片描述

③:查看日志记录

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

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

通过上述测试过程,可以发现双机热备已经正常。客户机只要通过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 的热备配置等在此不再详细阐述

资源列表

操作系统 配置 主机名 IP 服务
OpenEuler24 2C4G lb01 192.168.10.101 Keepalived,ipvsadm
OpenEuler24 2C4G lb02 192.168.10.102 Keepalived,ipvsadm
OpenEuler24 2C4G web01 192.168.10.103 apache
OpenEuler24 2C4G web02 192.168.10.104 apache
OpenEuler24 2C4G nfs-server 192.168.10.105 rpcbind,nfs-utils

1. 基础环境配置

四台服务器关闭防火墙,Selinux安全机制,并设为开机自关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

2. 配置主调度器

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf

①:全局配置、热备配置

在这里插入图片描述

②:Web 服务器池配置

在这里插入图片描述
在这里插入图片描述

③:重启服务,测试环游地址

在这里插入图片描述

3. 配置从调度器

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf

①:全局配置、热备配置

在这里插入图片描述

②:Web 服务器池配置

在这里插入图片描述

③:重启服务,测试环游地址

在这里插入图片描述

4. 配置 Web 节点服务器

①:安装web服务器

在这里插入图片描述

②:为网站制作测试网页

在这里插入图片描述

在这里插入图片描述

③:为网站设置VIP地址

在这里插入图片描述

④:添加ARP参数

在这里插入图片描述
在这里插入图片描述

⑤:检测环回地址

在这里插入图片描述

在这里插入图片描述

5. 测试 LVS+keepalived 高可用群集

打开客户端测试

在这里插入图片描述

挂起keepalived01和103网站,测试高可用

在这里插入图片描述

在这里插入图片描述

;,;


网站公告

今日签到

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