OpenEuler系统常用服务(十)

LVS + Keepalived + Nginx 高可用集群实现方案

摘要: 本文档详细阐述了在OpenEuler操作系统上,利用yum包管理器,构建一个高可用、高性能的Web服务集群的方案。该方案的核心组件包括LVS(Linux Virtual Server)作为四层负载均衡器、Keepalived提供LVS的高可用性(防止单点故障)、以及Nginx作为七层反向代理和应用服务器。方案涵盖了理论基础、系统架构设计、详细的安装配置步骤(包含关键配置文件示例)、流程图说明以及必要的测试验证方法。目标是实现一个能够处理高并发流量、具备故障自动转移能力、易于维护的Web服务平台。

关键词: LVS、Keepalived、Nginx、高可用、负载均衡、OpenEuler、DR模式、yum


第一部分:理论基础

  1. 高可用性 (High Availability, HA)

    • 定义: 指系统或服务能够在规定的时间范围内持续提供服务的能力。目标是最大限度地减少因硬件故障、软件错误、网络问题或维护操作导致的停机时间。通常通过冗余设计和故障自动转移来实现。
    • 指标: 通常用可用性百分比表示,如99.9%(年停机时间约8.76小时)、99.99%(年停机时间约52.6分钟)。
    • 实现原理: 消除单点故障 (SPOF)。关键组件(如负载均衡器、应用服务器、数据库)都需要冗余备份,并配备监控和自动切换机制。
  2. 负载均衡 (Load Balancing)

    • 目的: 将网络流量或计算任务分配到多个服务器上,以提高系统的整体处理能力(扩展性)、响应速度(性能)和可靠性(避免单台服务器过载)。
    • 层级:
      • 四层负载均衡 (L4): 工作在OSI模型的传输层(TCP/UDP)。主要基于IP地址和端口进行流量分发。速度快,效率高,对应用透明。代表:LVS。
      • 七层负载均衡 (L7): 工作在OSI模型的应用层(HTTP/HTTPS)。可以解析应用层协议(如HTTP头部),根据内容(URL、Cookie、Header等)进行更智能的路由。功能强大,可实现会话保持、内容优化等。代表:Nginx, HAProxy。
    • 算法: 轮询 (Round Robin)、加权轮询 (Weighted Round Robin)、最少连接 (Least Connections)、源IP哈希 (Source IP Hash) 等。
  3. 核心组件介绍

    • LVS (Linux Virtual Server):
      • 概念: 由章文嵩博士开发的内置于Linux内核的IP层(四层)负载均衡技术。它将一组物理服务器(Real Servers, RS)虚拟化为一个高性能、高可用的虚拟服务器(Virtual Server, VS)。客户端只访问虚拟IP (Virtual IP, VIP)。
      • 工作模式:
        • NAT (Network Address Translation): LVS修改请求和响应的IP地址。RS网关必须指向LVS。进出流量都经过LVS,容易成为瓶颈。
        • TUN (IP Tunneling): LVS将请求封装在IP隧道包中发送给RS,RS直接响应客户端。需要RS支持隧道协议和配置特殊路由。跨机房适用。
        • DR (Direct Routing): 本方案采用模式。 LVS只修改请求帧的MAC地址,将请求转发给RS。RS配置VIP在loopback接口上,并配置ARP抑制。RS直接响应客户端。性能最高,但要求LVS和RS在同一个二层网络(同一VLAN)。
      • 调度算法: LVS支持多种调度算法(如rr, wrr, lc, wlc, lblc, lblcr, dh, sh, sed, nq)。
    • Keepalived:
      • 作用: 提供LVS服务的高可用性。基于VRRP (Virtual Router Redundancy Protocol) 协议实现。多个Keepalived节点(通常两个)组成一个虚拟路由器组,共享一个VIP。通过优先级选举出一个主节点 (Master),负责处理流量。主节点故障时,备节点 (Backup) 自动接管VIP和服务(如LVS配置的同步)。
      • 功能: VIP漂移、服务健康检查(对RS、LVS自身进程等)、状态切换脚本执行。
    • Nginx:
      • 角色: 在本方案中,部署在Real Server上。
        • 七层负载均衡 (可选): 如果后端还有多个应用实例(如Tomcat集群),Nginx可进一步进行七层负载均衡。
        • 反向代理: 接收LVS转发来的请求,代理到后端应用服务器(或自身处理静态请求)。
        • Web服务器: 处理静态文件请求(HTML, CSS, JS, 图片等)。
      • 优点: 高性能、高并发、低内存占用、丰富的功能模块(如Rewrite, Gzip, SSL, Cache)。
  4. 方案架构与工作原理

    • 目标: 构建一个无单点故障、可水平扩展的Web服务入口。

    • 架构图 (请在此处插入流程图,文字描述如下):

      复制代码
      +-----------------------------------------------------+
      |                  Internet Clients                   |
      | (访问 http://www.example.com, DNS解析到VIP)         |
      +--------------------------|--------------------------+
                                 | (请求目标: VIP)
                                 v
      +-----------------------------------------------------+
      |                 Keepalived + LVS 集群               |
      | +-----------------+    +-----------------+          |
      | |  Node1 (Master) |<-->|  Node2 (Backup) |          |  VRRP协议选举Master
      | | - Keepalived    |    | - Keepalived    |          |  主节点持有VIP
      | | - LVS (ipvsadm) |    | - LVS (ipvsadm) |          |  主节点配置LVS规则
      | +--------|--------+    +--------|--------+          |
      |          |                      | (心跳线)          |
      +----------|----------------------|-------------------+
                 | (LVS DR模式转发请求) | (备节点监听,准备接管)
                 v                      v (仅当主节点故障时接管)
      +-----------------------------------------------------+
      |                   Real Server 集群                  |
      | +--------------+  +--------------+  +--------------+|
      | | RS1          |  | RS2          |  | RS3          ||
      | | - Nginx      |  | - Nginx      |  | - Nginx      ||
      | | - 配置VIP (lo)| | - 配置VIP (lo)| | - 配置VIP (lo)||
      | | - ARP抑制     |  | - ARP抑制     |  | - ARP抑制     ||
      | +------|-------+  +------|-------+  +------|-------+|
      |        |                 |                 |        |
      |        +-----------------+-----------------+        | (响应直接返回客户端,不经过LVS)
      +--------------------------|--------------------------+
                                 | (响应源IP: RS的VIP)
                                 v
      +-----------------------------------------------------+
      |                  Internet Clients                   |
      +-----------------------------------------------------+
    • 工作流程:

客户端请求: 用户通过浏览器访问域名(如 http://www.example.com),DNS将该域名解析到LVS集群的虚拟IP (VIP)。

  1. VIP访问: 客户端向VIP发送HTTP(S)请求。
  2. Keepalived选举: Keepalived节点间通过VRRP协议通信,选举出一个主节点(Master)。主节点拥有VIP(配置在其物理网卡上),并激活其LVS配置。备节点(Backup)监听主节点状态。
  3. LVS负载均衡 (DR模式):
    • 主LVS节点接收到目标为VIP的请求包。
    • 根据配置的调度算法(如wlc),LVS选择一个Real Server (RS)。
    • LVS不修改请求包的IP地址 (源IP仍是客户端IP,目标IP仍是VIP),而是只修改二层帧头,将目标MAC地址改为选中的RS的MAC地址,然后将数据帧发送到局域网。
  4. Real Server处理:
    • 选中的RS(配置了VIP在loopback接口上)的网卡接收到该数据帧。由于目标MAC地址是自己的物理MAC地址,网卡接收该帧。
    • 数据帧被传递到TCP/IP协议栈。协议栈发现目标IP地址(VIP)配置在本机的lo接口上,因此认为这个包是发给自己的,由本机的网络服务(这里是Nginx)处理。
    • Nginx处理请求(可能作为反向代理转发给后端应用,或直接处理静态文件)。
  5. Real Server响应:
    • Nginx生成响应包。响应包的源IP地址是VIP(因为RS的lo接口配置了VIP),目标IP是客户端IP。
    • 由于RS配置了ARP抑制(通常通过内核参数 arp_ignorearp_announce),它不会响应对VIP的ARP请求,也不会向外宣告自己拥有VIP。
    • RS直接将响应包发送给客户端(通常通过其默认网关),响应包不经过LVS节点。客户端收到的响应看起来是直接来自VIP。
  6. 故障转移 (Failover):
    • Keepalived持续监控主节点的状态(自身进程、LVS服务状态、网络连通性等)。
    • 如果主节点故障(如宕机、网络中断、LVS进程退出),Keepalived备节点检测到(VRRP心跳丢失或优先级降低)。
    • 备节点提升自己为新的主节点,接管VIP(将其配置到自己的物理网卡上),并激活自己配置的LVS规则(通常通过配置同步或脚本加载)。
    • 客户端流量开始流向新的主LVS节点,集群服务恢复。整个过程对客户端透明(可能感知到短暂延迟或连接重置)。
  7. Real Server健康检查 (可选):
    • Keepalived除了监控LVS节点本身,还可以配置对Real Server(如Nginx端口)的健康检查。

    • 如果某个RS失效,Keepalived主节点会将其从LVS的可用服务器池中移除,不再向其转发流量。当RS恢复后,再将其添加回池中。

    • 方案优势:

      • 高可用: LVS层通过Keepalived实现主备切换,消除负载均衡器单点故障。RS层通过多节点冗余,单个RS故障不影响整体服务。
      • 高性能: LVS DR模式性能接近硬件负载均衡器,RS响应直接返回客户端,减轻LVS压力。Nginx高效处理HTTP请求。
      • 可扩展: 可以方便地水平扩展Real Server的数量以适应增长的流量。
      • 成本低: 基于开源软件和通用服务器硬件。
      • 灵活性: Nginx提供强大的七层处理能力。
    • 方案限制:

      • 二层网络依赖: DR模式要求LVS Director和所有Real Server必须在同一个二层广播域(同一个VLAN/子网),否则MAC地址改写无法被RS接收。
      • ARP配置: RS需要正确配置VIP和ARP抑制参数,否则可能导致ARP冲突。
      • VIP配置: RS配置VIP在lo接口,仅用于接收目标为VIP的包和发送源为VIP的包,不用于实际通信。
      • 故障转移时间: Keepalived切换通常需要几秒钟,期间可能有短暂服务中断或连接丢失。

第二部分:系统环境与准备

  1. 操作系统: OpenEuler 20.03 LTS SP3 (或更高兼容版本)。所有节点均使用此系统。
  2. 节点规划 (示例):
    • LVS + Keepalived 节点 (2台):
      • 主机名:lvs-keepalived-01, lvs-keepalived-02
      • 物理IP (DIP): 192.168.10.10/24 (lvs1), 192.168.10.11/24 (lvs2) - 用于节点间通信和管理。
      • 虚拟IP (VIP): 192.168.10.100/24 - 客户端实际访问的IP。
      • 角色:运行Keepalived和LVS (ipvsadm)。一台为Master,一台为Backup。
    • Real Server 节点 (至少2台, 示例3台):
      • 主机名:nginx-rs-01, nginx-rs-02, nginx-rs-03
      • 物理IP (RIP): 192.168.10.20/24 (rs1), 192.168.10.21/24 (rs2), 192.168.10.22/24 (rs3)
      • 虚拟IP (VIP): 192.168.10.100/32 - 配置在loopback接口 (lo:0 或 lo:1)。
      • 角色:运行Nginx,处理实际的Web请求。
  3. 网络要求:
    • 所有节点(LVS和RS)必须位于同一个子网 (192.168.10.0/24)和同一个VLAN(二层互通)。
    • 所有节点需要能访问互联网(用于yum安装)或配置本地yum源。
    • 确保防火墙(firewalld或iptables)规则允许节点间必要的通信(VRRP组播、健康检查端口、LVS转发流量、Nginx端口)。
    • 建议关闭所有节点的SELinux (setenforce 0; 编辑 /etc/selinux/config 设置 SELINUX=permissivedisabled),以简化排错,生产环境需谨慎评估。
    • 确保所有节点时间同步(使用ntp或chronyd)。
  4. 软件包: 将通过yum安装:
    • LVS: 内核自带 ip_vs 模块,管理工具 ipvsadm
    • Keepalived: keepalived
    • Nginx: nginx (OpenEuler官方源或Nginx官方源)。
  5. 用户权限: 使用root用户或在sudo权限下执行安装和配置命令。

第三部分:详细部署步骤

1. 基础配置 (所有节点)

  • 设置主机名:

    bash 复制代码
    # 在 lvs-keepalived-01 上
    hostnamectl set-hostname lvs-keepalived-01
    # 在 lvs-keepalived-02 上
    hostnamectl set-hostname lvs-keepalived-02
    # 在 nginx-rs-01/02/03 上
    hostnamectl set-hostname nginx-rs-01 # 依此类推

    编辑 /etc/hosts 文件,添加所有节点的IP和主机名映射:

    bash 复制代码
    192.168.10.10 lvs-keepalived-01
    192.168.10.11 lvs-keepalived-02
    192.168.10.20 nginx-rs-01
    192.168.10.21 nginx-rs-02
    192.168.10.22 nginx-rs-03
  • 配置网络:

    • 确认物理网卡(如 ens33)已正确配置DIP/RIP。

    • 仅Real Server节点: 配置VIP到loopback接口。创建一个新的loopback接口配置文件 (如 /etc/sysconfig/network-scripts/ifcfg-lo:0):

      bash 复制代码
      DEVICE=lo:0
      IPADDR=192.168.10.100
      NETMASK=255.255.255.255
      ONBOOT=yes

      或者使用临时命令(重启失效):

      bash 复制代码
      ip addr add 192.168.10.100/32 dev lo label lo:0
  • 配置ARP抑制 (仅Real Server节点): 这是DR模式的关键,防止RS响应VIP的ARP请求。

    • 编辑 /etc/sysctl.conf,添加或修改以下行:

      bash 复制代码
      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
    • 使配置生效:

      bash 复制代码
      sysctl -p
  • 关闭防火墙或配置规则 (所有节点):

    • 临时关闭firewalld (测试用):

      bash 复制代码
      systemctl stop firewalld
      systemctl disable firewalld # 生产环境不推荐禁用,需配置规则
    • 生产环境建议配置规则:

      • LVS节点: 允许VRRP协议(通常组播地址224.0.0.18,协议112/vrrp)、允许健康检查端口(如TCP 80)。

      • RS节点: 允许VIP上的服务端口(如TCP 80)、允许LVS节点的健康检查(如果Keepalived配置了对RS的检查)。

      • 示例命令 (调整接口和端口):

        bash 复制代码
        firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept'
        firewall-cmd --permanent --add-port=80/tcp
        firewall-cmd --reload
  • 禁用SELinux (可选, 所有节点):

    bash 复制代码
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 或 disabled
  • 配置时间同步 (所有节点):

    bash 复制代码
    yum install chrony -y
    systemctl enable --now chronyd
    chronyc sources # 检查同步状态

2. 安装软件

  • 在 LVS + Keepalived 节点 (lvs-keepalived-01, 02) 上:

    bash 复制代码
    yum install keepalived ipvsadm -y
    • keepalived: 提供VRRP和健康检查功能。
    • ipvsadm: 用于管理和监控LVS规则。
  • 在 Real Server 节点 (nginx-rs-01, 02, 03) 上:

    bash 复制代码
    yum install nginx -y
    • nginx: Web服务器和反向代理。

3. 配置 Keepalived (LVS节点)

  • 主节点 (lvs-keepalived-01) 配置文件 /etc/keepalived/keepalived.conf:
bash 复制代码
! Configuration File for keepalived
global_defs {
   router_id LVS_KA_MASTER # 标识本节点,主备应不同
}

vrrp_instance VI_1 {
    state MASTER           # 初始状态,主节点为MASTER
    interface ens33        # 绑定VRRP协议的物理网卡
    virtual_router_id 51   # 虚拟路由器ID,同一组集群必须相同 (1-255)
    priority 100           # 优先级,主节点高于备节点 (如100 > 90)
    advert_int 1           # VRRP组播通告间隔(秒)

    authentication {
        auth_type PASS     # 认证类型
        auth_pass your_password_here # 认证密码,主备必须相同
    }

    virtual_ipaddress {
        192.168.10.100/24 dev ens33 # 虚拟IP地址,配置到物理网卡上
    }

    # 配置LVS虚拟服务器和Real Server池
    virtual_server 192.168.10.100 80 {
        delay_loop 6       # 健康检查间隔(秒)
        lb_algo wlc        # 负载均衡调度算法 (加权最小连接)
        lb_kind DR         # LVS工作模式 (Direct Routing)
        persistence_timeout 0 # 会话保持时间(秒),0表示不保持
        protocol TCP       # 服务协议

        # 真实服务器配置 (Real Server 1)
        real_server 192.168.10.20 80 {
            weight 1       # 权重
            # TCP方式健康检查
            TCP_CHECK {
                connect_timeout 3 # 连接超时(秒)
                nb_get_retry 3    # 重试次数
                delay_before_retry 3 # 重试间隔(秒)
                connect_port 80   # 检查端口
            }
        }
        # 真实服务器配置 (Real Server 2)
        real_server 192.168.10.21 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
        # 真实服务器配置 (Real Server 3)
        real_server 192.168.10.22 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }
}
  • 备节点 (lvs-keepalived-02) 配置文件 /etc/keepalived/keepalived.conf:
bash 复制代码
! Configuration File for keepalived
global_defs {
   router_id LVS_KA_BACKUP
}

vrrp_instance VI_1 {
    state BACKUP           # 初始状态为备
    interface ens33
    virtual_router_id 51
    priority 90            # 优先级低于主节点
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass your_password_here
    }

    virtual_ipaddress {
        192.168.10.100/24 dev ens33
    }

    virtual_server 192.168.10.100 80 {
        delay_loop 6
        lb_algo wlc
        lb_kind DR
        persistence_timeout 0
        protocol TCP

        real_server 192.168.10.20 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
        real_server 192.168.10.21 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
        real_server 192.168.10.22 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }
}
  • 启动 Keepalived 服务 (两个LVS节点):
bash 复制代码
systemctl enable --now keepalived
systemctl status keepalived # 检查状态
  • 在主节点 (lvs-keepalived-01) 上,执行 ip addr show ens33,应该能看到VIP (192.168.10.100) 被添加到 ens33 接口。
  • 在备节点 (lvs-keepalived-02) 上,执行 ip addr show ens33,应该看到VIP (除非主节点故障)。
  • 检查LVS规则是否生效 (主节点上):
bash 复制代码
ipvsadm -Ln
bash 复制代码
输出应类似:
bash 复制代码
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:80 wlc
  -> 192.168.10.20:80             Route   1      0          0
  -> 192.168.10.21:80             Route   1      0          0
  -> 192.168.10.22:80             Route   1      0          0

4. 配置 Nginx (Real Server节点)

  • 配置 Nginx (所有RS节点):
    • 编辑 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf (示例配置):
bash 复制代码
server {
    listen       80; # 监听端口
    server_name  localhost; # 或实际域名

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    # 为了区分测试,可以在每个RS的index.html中标记自己
    # location / {
    #     return 200 "This is RS: $hostname\n";
    # }
}
bash 复制代码
*   创建或修改测试页面 `/usr/share/nginx/html/index.html`,**最好在每个RS上放置略有不同的内容**(如包含主机名),以便测试负载均衡是否生效。
*   启动Nginx:
bash 复制代码
systemctl enable --now nginx
systemctl status nginx
bash 复制代码
*   验证Nginx本地访问:在每台RS上 `curl http://localhost` 或 `curl http://192.168.10.20` (用其自身RIP) 应能看到测试页面。
  • 重要: 确保RS上的Nginx监听的是 0.0.0.0:80*:80,而不是特定的IP地址。因为它需要接收目标地址为VIP (192.168.10.100) 的请求包。

5. 验证ARP抑制 (RS节点)

  • 在RS节点上,尝试 arping -I lo -c 1 192.168.10.100。由于 arp_ignore=1,lo接口不应该响应这个ARP请求。
  • 在RS节点上,尝试 arping -I ens33 -c 1 192.168.10.100。由于 arp_announce=2,ens33接口在向外宣告时,会使用其物理IP(RIP)作为源IP,而不会宣告VIP。

第四部分:测试与验证

  1. 基本功能测试:

    • VIP可达性: 从集群外部或内部非集群节点,ping 192.168.10.100 应该通(由当前Master LVS节点响应)。
    • Web服务访问: 使用浏览器或 curl http://192.168.10.100。应该能访问到Nginx的测试页面。多次刷新 ,观察返回的内容(如果每个RS的页面不同),应该能看到内容在变化(或通过 ipvsadm -Ln 观察连接数变化),证明负载均衡生效。
  2. LVS规则验证 (Master节点):

    bash 复制代码
    ipvsadm -Ln # 查看LVS规则和连接状态
    ipvsadm -Lnc # 查看连接详细信息

    当有访问流量时,ActiveConnInActConn 计数会增加。

  3. Keepalived主备切换测试:

    • 查看状态: 在两台LVS节点上运行 systemctl status keepalivedjournalctl -u keepalived -f,观察哪个是Master。
    • 模拟主节点故障:
      • 方法1:在主节点 (lvs-keepalived-01) 上停止Keepalived服务:

        bash 复制代码
        systemctl stop keepalived
      • 方法2:断开主节点的网络(如 ifdown ens33)。

    • 观察备节点: 在备节点 (lvs-keepalived-02) 上:
      • 再次运行 ip addr show ens33,应该能看到VIP (192.168.10.100) 现在配置在它的 ens33 上。
      • 运行 ipvsadm -Ln,应该能看到LVS规则已经激活。
      • 查看Keepalived日志 (journalctl -u keepalived),应该能看到状态切换为MASTER的记录。
    • 测试服务: 再次访问 http://192.168.10.100,服务应仍然可用(可能短暂中断)。
    • 恢复主节点: 恢复主节点的网络或启动Keepalived。观察VIP是否漂移回主节点(主节点日志变MASTER,备节点变BACKUP,VIP在主节点上)。
  4. Real Server故障测试:

    • 在某一台RS节点 (如 nginx-rs-01) 上停止Nginx:

      bash 复制代码
      systemctl stop nginx
    • 当前Master LVS节点 上,等待健康检查周期(delay_loop 定义,如6秒)后,运行 ipvsadm -Ln。观察故障的RS (如 192.168.10.20) 的状态应该被标记为不可用(可能显示为 -> 192.168.10.20:80 Route 1 0 0 但无新连接分配给它,或根据Keepalived配置可能直接被移除)。

    • 访问VIP,流量应该只被分发到其他正常的RS上。

    • 恢复故障RS的Nginx服务。观察它是否被自动加回LVS池。

  5. 压力测试 (可选): 使用工具如 ab (Apache Benchmark) 或 wrk 对VIP进行压力测试,观察集群处理能力。


第五部分:监控与维护

  1. 监控:

    • LVS节点状态: Keepalived进程状态、VIP持有状态、LVS规则状态。
    • Real Server状态: Nginx进程状态、端口监听状态、系统资源(CPU、内存、网络)。
    • 服务健康: Web服务可用性、响应时间。
    • 工具: Zabbix, Prometheus + Grafana, Nagios 等。关注 ipvsadm 的输出、Keepalived日志、Nginx日志和状态页 (stub_status)。
  2. 日志:

    • Keepalived: /var/log/messagesjournalctl -u keepalived。关注状态切换、健康检查失败信息。
    • Nginx: /var/log/nginx/access.log, /var/log/nginx/error.log
  3. 维护:

    • 添加/移除RS: 修改Keepalived配置文件 (real_server 块),重启Keepalived服务 (或使用 reload 如果支持)。确保RS正确配置VIP和ARP抑制。
    • 升级软件: 逐个节点进行,避免同时中断服务。注意配置备份。
    • 备份配置: 定期备份 /etc/keepalived/keepalived.conf, /etc/nginx/nginx.conf 等重要配置文件。

第六部分:总结

本方案成功地在OpenEuler系统上,利用yum安装的LVS (DR模式)、Keepalived和Nginx,构建了一个高性能、高可用的Web服务集群。通过LVS实现高效的四层负载均衡,Keepalived保障了LVS服务本身的高可用性,Nginx则作为灵活可靠的反向代理和Web服务器处理应用请求。方案详细阐述了理论基础、架构设计、网络要求、软件安装、配置文件示例(Keepalived主备配置、Nginx基础配置、ARP抑制设置)、部署步骤以及全面的测试验证方法。该架构能够有效应对单点故障,提升服务的可用性和可扩展性,适用于需要高并发访问和业务连续性的Web应用场景。

注意事项:

  • 生产环境务必仔细配置防火墙规则和安全策略,避免禁用SELinux。
  • 根据实际业务需求调整Keepalived的健康检查参数、LVS调度算法和权重。
  • 考虑Nginx后端的应用服务器(如Tomcat)的高可用性,本方案主要关注入口层的高可用。
  • 定期进行故障切换演练和压力测试。
相关推荐
艾莉丝努力练剑2 小时前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装
java·linux·运维·服务器·c语言·c++·学习
同聘云2 小时前
阿里云国际站 服务器的“客户端” (Client) 和 “服务器” (Server)到底是什么?有什么区别?
服务器·网络·阿里云·云计算·云小强
邓霖涛2 小时前
nginx使用openSSL自签生成https相关证书
服务器·nginx·https
程序员老邢2 小时前
【技术底稿 10】16G Ubuntu 服务器手动部署 Ollama 0.20.4 全流程(避坑 HTTP2 错误)
服务器·ubuntu·ai·语言模型·devops
饼瑶2 小时前
Isaac Sim 5.0.0 Docker 部署手册(实验室服务器)
服务器·docker·容器
dddddppppp1232 小时前
linux head.s 从第一条指令到start_kernel
linux·运维·服务器
ZGi.ai2 小时前
一个LLM网关需要处理哪些工程问题?多模型路由与成本归因实战
大数据·网络·人工智能
BioRunYiXue2 小时前
AlphaGenome:DeepMind 新作,基因组学迎来 Alpha 时刻
java·linux·运维·网络·数据库·人工智能·eclipse
十五年专注C++开发2 小时前
windows和linux使用system启动进程是一样的吗?
linux·c++·windows·system