LVS与Keepalived详解(二)LVS负载均衡实现实操

文章目录

  • 前言
  • [一、LVS-DR 模式详解](#一、LVS-DR 模式详解)
    • [1.1 数据包流向分析](#1.1 数据包流向分析)
    • [1.2 DR 模式的特点](#1.2 DR 模式的特点)
  • [二、LVS-DR 集群部署实战](#二、LVS-DR 集群部署实战)
    • [2.1 环境准备](#2.1 环境准备)
    • [2.2 配置负载调度器(Director Server)](#2.2 配置负载调度器(Director Server))
    • [2.3 配置节点服务器(Real Server)](#2.3 配置节点服务器(Real Server))
    • [2.4 测试验证](#2.4 测试验证)
  • 三、前期回顾
    • [3.1 LVS 三种工作模式及其区别?](#3.1 LVS 三种工作模式及其区别?)
    • [3.2 LVS 调度算法](#3.2 LVS 调度算法)
  • 总结

好的,我已经为您将提供的文档整理成了一篇结构清晰、层次分明的博客文章,并按照要求添加了前言和总结。


前言

负载均衡是构建高可用服务的核心技术之一,Linux Virtual Server (LVS) 的 DR(Direct Routing)模式以其高性能和低延迟成为热门选择。本文将深入解析 LVS-DR 的工作原理,并通过实战演示如何快速搭建一个高效的负载均衡集群,助您轻松掌握这一关键技能。

一、LVS-DR 模式详解

1.1 数据包流向分析

LVS-DR 模式的工作流程可以清晰地分为以下几个步骤,理解此流程是掌握 DR 模式的关键:

  1. 客户端发送请求:客户端(CIP)向负载均衡器(Director Server)的虚拟 IP(VIP)发送请求报文。报文源地址为 CIP,目标地址为 VIP。
  2. 负载均衡器接收并转发 :请求报文到达 Director Server 的内核空间。IPVS(IP 虚拟服务器)模块判断该请求的服务是否为已定义的集群服务。如果是,IPVS 会重新封装数据包的 MAC 头 ,将源 MAC 地址改为 Director Server 的 MAC 地址,将目标 MAC 地址改为选定的真实服务器(Real Server, RIP)的 MAC 地址。IP 头保持不变(源 IP 为 CIP,目标 IP 为 VIP)。
  3. 真实服务器处理请求 :由于 MAC 地址匹配,Real Server 会接收该数据包。解包后,应用程序(如 Web 服务器)发现目标 IP(VIP)配置在本机的 lo 接口上,于是处理这个请求。
  4. 真实服务器直接响应客户端 :处理完成后,Real Server 会构建响应报文。该报文不经过 Director Server,而是直接通过其默认网关发送给客户端。响应报文的源 IP 地址为 VIP,目标 IP 地址为 CIP。

1.2 DR 模式的特点

基于其工作流程,DR 模式具有以下显著特点:

  1. 同一网络:Director Server 和所有 Real Server 必须位于同一个物理网络(同一广播域)中,以便能通过 MAC 地址进行二层通信。
  2. IP 地址灵活:Real Server 可以使用私有地址,也可以使用公网地址。
  3. 非网关角色:Director Server 仅作为流量的入口,不作为 Real Server 的网关,极大地减轻了其负担。
  4. 响应直接返回:响应数据包由 Real Server 直接返回给客户端,性能极高。这是 DR 模式高吞吐量的主要原因。
  5. 网关指向 :Real Server 的网关必须指向能够连接互联网的路由器,绝不能指向 Director Server。
  6. 本地回环接口配置 VIP :每台 Real Server 都需要在 lo 接口上配置 VIP 地址,以便处理目标为 VIP 的请求。

二、LVS-DR 集群部署实战

以下是一个完整的 LVS-DR 模式部署流程。

2.1 环境准备

角色 IP 地址 主机名
客户端 192.168.10.200 client
Director Server 192.168.10.23 (DIP) lvs-dr
192.168.10.180 (VIP)
Real Server 1 192.168.10.16 (RIP) web01
Real Server 2 192.168.10.17 (RIP) web02
NFS 共享存储服务器 192.168.10.19 nfs

2.2 配置负载调度器(Director Server)

  1. 关闭防火墙与 SELinux

    bash 复制代码
    systemctl stop firewalld.service
    setenforce 0
  2. 加载 IP_VS 模块并安装管理工具

    bash 复制代码
    modprobe ip_vs
    cat /proc/net/ip_vs # 确认模块是否加载
    yum -y install ipvsadm
  3. 配置虚拟 IP 地址(VIP)

    编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33:0

    ini 复制代码
    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=192.168.10.180
    NETMASK=255.255.255.255

    启用并查看 VIP:

    bash 复制代码
    ifup ens33:0
    ifconfig ens33:0
  4. 调整内核参数(/etc/sysctl.conf

    conf 复制代码
    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0

    使配置生效:sysctl -p

  5. 配置负载分配策略

    bash 复制代码
    ipvsadm-save > /etc/sysconfig/ipvsadm # 初始化保存文件
    systemctl start ipvsadm
    
    ipvsadm -C # 清空现有规则
    ipvsadm -A -t 192.168.10.180:80 -s rr # 添加虚拟服务,调度算法为轮询(rr)
    ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g # 添加 Real Server,-g 代表 DR 模式
    ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -g
    
    ipvsadm -ln # 查看配置,确认模式为 Route (DR)

2.3 配置节点服务器(Real Server)

以下操作需要在 web01 和 web02 上分别执行。

  1. 配置虚拟 IP 地址(VIP)到 lo:0

    编辑文件 /etc/sysconfig/network-scripts/ifcfg-lo:0

    ini 复制代码
    DEVICE=lo:0
    ONBOOT=yes
    IPADDR=192.168.10.180
    NETMASK=255.255.255.255

    启用并添加路由:

    bash 复制代码
    ifup lo:0
    ifconfig lo:0
    route add -host 192.168.10.180 dev lo:0

    为了重启后依然生效,将路由命令加入 /etc/rc.local

    bash 复制代码
    echo '/sbin/route add -host 192.168.10.180 dev lo:0' >> /etc/rc.local
    chmod +x /etc/rc.d/rc.local
  2. 调整内核 ARP 参数

    编辑 /etc/sysctl.conf,添加以下行:

    conf 复制代码
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2

    使配置生效:sysctl -p

  3. 安装服务并挂载共享存储

    bash 复制代码
    yum -y install nfs-utils rpcbind httpd
    systemctl start httpd
    systemctl start rpcbind
    • web01 上:

      bash 复制代码
      mount.nfs 192.168.10.19:/opt/kgc /var/www/html
      echo 'this is kgc web!' > /var/www/html/index.html
    • web02 上:

      bash 复制代码
      mount.nfs 192.168.10.19:/opt/benet /var/www/html
      echo 'this is benet web!' > /var/www/html/index.html

2.4 测试验证

在客户端(192.168.10.200)打开浏览器,多次访问 http://192.168.10.180/。页面内容应在 this is kgc web!this is benet web! 之间交替显示,这表明 LVS 负载均衡集群已经成功运行。

三、前期回顾

3.1 LVS 三种工作模式及其区别?

  • NAT:通过网络地址转换实现。请求和响应都经过 Director,Director 易成为瓶颈。Real Server 可以是任何操作系统。
  • DR:使用直接路由技术。只有请求经过 Director,响应直接由 Real Server 返回,性能极高。要求 Director 和 Real Server 在同一个局域网。
  • TUN:通过 IP 隧道技术实现。能跨机房部署,Real Server 可以不在同一个局域网。Real Server 需要支持隧道协议。

3.2 LVS 调度算法

  • 固定调度算法:轮询(rr)、加权轮询(wrr)、目标地址哈希(dh)、源地址哈希(sh)。
  • 动态调度算法:最少连接(lc)、加权最少连接(wlc)、基于地址的最少连接(lblc)。

总结

LVS-DR 模式通过智能路由实现请求的高效分发,大幅提升服务响应能力。尽管部署时需要精细调整网络参数,但其卓越的性能表现值得投入。本文从理论到实践完整呈现了 LVS-DR 的部署流程,掌握这一技术后,您将能够为企业构建更强大、更可靠的网络服务体系。


相关推荐
東雪蓮☆2 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
qq_264220892 小时前
LVS负载均衡群集和LVS+Keepalived群集
运维·负载均衡·lvs
乌萨奇也要立志学C++2 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
雨落Liy2 小时前
Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
运维·nginx·负载均衡
Yyyy4823 小时前
Nginx负载均衡集群实验步骤
运维·nginx·负载均衡
獭.獭.4 小时前
Linux -- 信号【上】
linux·运维·服务器
hashiqimiya4 小时前
centos配置环境变量jdk
linux·运维·centos
hashiqimiya4 小时前
权限更改centos中系统文件无法创建文件夹,使用命令让普通用户具备操作文件夹
linux
逆小舟8 小时前
【Linux】人事档案——用户及组管理
linux·c++