CentOS下LVS负载均衡配置,从零开始的详细步骤有哪些?

Linux虚拟服务器(LVS)是一个在Linux内核中实现的、高性能、高可用的负载均衡解决方案,它通过将客户端的请求根据预设的调度算法转发到后端的一组真实服务器上,从而构建一个强大的虚拟服务器集群,LVS以其卓越的性能和稳定性,在众多大型网站和应用中得到了广泛应用,本文将详细介绍在CentOS系统下配置LVS的步骤,特别是最常用且性能最高的DR(Direct Routing)模式。

CentOS下LVS负载均衡配置,从零开始的详细步骤有哪些?

LVS的核心概念与工作模式

在深入配置之前,理解LVS的几个核心组件和工作模式至关重要,LVS主要由两部分组成:负载调度器(Director)和真实服务器池(Real Server Pool),调度器是整个集群的前端,负责接收并分发所有进入的请求;真实服务器则负责实际处理请求。

LVS支持三种主要的工作模式:

  1. NAT(Network Address Translation)模式:调度器将请求报文的目标地址修改为某个真实服务器的地址,返回的报文再经过调度器修改源地址后发回客户端,优点是配置简单,真实服务器可以使用任何支持TCP/IP的操作系统,缺点是所有流量都必须经过调度器,容易成为性能瓶颈。
  2. TUN(IP Tunneling)模式:调度器将请求报文封装在另一个IP报文中,再转发给真实服务器,真实服务器解封后直接处理请求,并将响应直接返回给客户端,优点是扩展性好,真实服务器可以分布在不同的网络中,缺点是需要所有服务器支持IP隧道协议。
  3. DR(Direct Routing)模式:这是性能最高的模式,调度器仅修改请求报文的MAC地址,将其转发到同一局域网内的真实服务器,真实服务器处理请求后,直接将响应报文返回给客户端,不再经过调度器,优点是性能极高,调度器只处理一半的流量,缺点是要求调度器和所有真实服务器必须在同一个物理网段。

配置LVS/DR模式前的准备工作

我们将以一个典型的DR模式为例进行配置,假设我们有以下服务器环境:

角色 主机名 IP地址 网卡 说明
调度器 (Director) lvs-dir 168.1.10 (DIP) eth0 对外提供服务的VIP也配置在此
168.1.100 (VIP) eth0:0 虚拟IP,客户端访问的地址
真实服务器1 (RS1) rs-01 168.1.20 (RIP) eth0 真实处理请求的服务器
168.1.100 (VIP) lo:0 在环回接口上配置VIP
真实服务器2 (RS2) rs-02 168.1.21 (RIP) eth0 真实处理请求的服务器
168.1.100 (VIP) lo:0 在环回接口上配置VIP
客户端 client 168.1.200 用于访问和测试

关键点:所有服务器(调度器和真实服务器)必须在同一个VLAN或物理网络内。

CentOS下LVS/DR模式配置详解

调度器(Director Server)配置

  1. 安装ipvsadm管理工具
    ipvsadm是LVS的管理命令行工具。

    yum install -y ipvsadm
  2. 配置网络并开启IP转发
    确保DIP(192.168.1.10)已正确配置在eth0上,配置VIP。

    # 临时配置VIP,重启后失效
    ifconfig eth0:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
    # 开启内核的IP转发功能
    echo 1 > /proc/sys/net/ipv4/ip_forward

    为了永久生效,需要修改/etc/sysctl.conf文件:

    net.ipv4.ip_forward = 1

    然后执行 sysctl -p 使配置生效。

  3. 配置LVS转发规则
    使用ipvsadm命令来创建虚拟服务并添加后端真实服务器。

    CentOS下LVS负载均衡配置,从零开始的详细步骤有哪些?

    # 清空现有规则
    ipvsadm -C
    # 添加一个虚拟服务,-t表示TCP,-s rr表示使用轮询调度算法
    ipvsadm -A -t 192.168.1.100:80 -s rr
    # 添加真实服务器到虚拟服务中,-g表示使用DR模式
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g
    ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.21:80 -g
    # 查看配置的规则
    ipvsadm -Ln

    输出结果应类似如下:

    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.1.100:80 rr
      -> 192.168.1.20:80              Route   1      0          0
      -> 192.168.1.21:80              Route   1      0          0
  4. 保存配置
    为了让规则重启后依然存在,需要保存。

    ipvsadm-save > /etc/sysconfig/ipvsadm

真实服务器(Real Server)配置

真实服务器的配置有两个关键点:在环回接口上配置VIP,并抑制ARP响应。

  1. 配置VIP到环回接口
    在每台真实服务器(rs-01和rs-02)上执行:

    # 临时配置VIP到lo:0
    ifconfig lo:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
    # 添加路由,确保访问VIP的包不会从外部网卡发出
    route add -host 192.168.1.100 dev lo:0
  2. 抑制ARP响应
    这是为了防止真实服务器响应针对VIP的ARP请求,从而避免与调度器发生IP冲突,需要修改内核参数。

    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

    为了永久生效,同样将这些参数添加到/etc/sysctl.conf文件中。

  3. 安装并启动Web服务
    在每台真实服务器上安装httpdnginx,并创建不同的测试页面以便区分。

    # 在rs-01上
    yum install -y httpd
    echo "This is Real Server 1" > /var/www/html/index.html
    systemctl start httpd
    # 在rs-02上
    yum install -y httpd
    echo "This is Real Server 2" > /var/www/html/index.html
    systemctl start httpd

配置验证与测试

  1. 在客户端(192.168.1.200)的浏览器或使用curl命令访问VIP:

    curl http://192.168.1.100

    多次执行该命令,应该会看到输出内容在“This is Real Server 1”和“This is Real Server 2”之间交替出现,这证明负载均衡已经生效。

    CentOS下LVS负载均衡配置,从零开始的详细步骤有哪些?

  2. 在调度器上再次查看连接状态:

    ipvsadm -lcn

    可以看到详细的连接记录,包括源IP、目标IP以及被转发到的真实服务器。

  3. 停止其中一台真实服务器的Web服务(如systemctl stop httpd),再次访问VIP,会发现所有请求都被转发到另一台正常运行的服务器上,体现了基本的容错能力。

LVS调度算法简介

LVS提供了多种调度算法以适应不同的业务场景:

  • rr (Round Robin):轮询,将请求平均分配给各台服务器。
  • wrr (Weighted Round Robin):加权轮询,根据服务器权重分配请求,性能好的服务器分配更多请求。
  • lc (Least Connection):最少连接,将新请求分配给当前连接数最少的服务器。
  • wlc (Weighted Least Connection):加权最少连接,在最少连接基础上考虑服务器权重,是默认推荐的算法。

相关问答 (FAQs)

问题1:为什么在DR模式下,真实服务器上的VIP必须配置在环回接口(lo)上,并且需要抑制ARP响应?

解答:这是DR模式设计的核心,VIP配置在环回接口上,是为了让真实服务器能够接收和处理目标地址为VIP的数据包,但这个VIP不会在物理网络上宣告,避免了IP地址冲突,抑制ARP响应至关重要,当客户端访问VIP时,它会在局域网内发送ARP请求,询问“谁是192.168.1.100?”,我们只希望调度器(Director)响应这个请求,如果不抑制真实服务器的ARP响应,它们也会声称自己拥有VIP,导致客户端的ARP缓存表混乱,可能将请求直接发送到某台真实服务器,从而绕过了调度器,负载均衡失效,通过arp_ignorearp_announce参数,我们确保了只有调度器会“认领”VIP,保证了流量入口的唯一性。

问题2:LVS本身如何实现高可用?如果唯一的调度器(Director)宕机了,整个集群不就瘫痪了吗?

解答:您提出了一个非常关键的问题,单点故障是生产环境的大忌,LVS本身不直接提供高可用功能,但它通常与KeepalivedHeartbeat等高可用软件结合使用来解决此问题,以Keepalived为例,它可以实现以下功能:

  1. VRRP协议Keepalived使用VRRP协议在两台或多台调度器之间运行,生成一个虚拟的浮动IP(即我们的VIP),主调度器持有VIP,当主调度器发生故障时,备份调度器会自动接管VIP,对外服务几乎不受影响。
  2. 健康检查Keepalived可以定期检查后端真实服务器的健康状态(如检查某个端口是否正常),如果发现某台服务器不可用,它会自动从LVS转发规则中移除该服务器,待其恢复后再重新加入。
    通过LVS + Keepalived的经典组合,可以构建一个既具备高性能负载均衡能力,又具备调度器高可用和后端服务健康检查的完整解决方案。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-07 12:43
下一篇 2025-10-07 12:46

相关推荐

  • CentOS 7服务器如何从零开始配置Jenkins环境?

    在持续集成与持续部署(CI/CD)的实践中,Jenkins 作为一款开源的自动化服务器,扮演着至关重要的角色,它能够自动化构建、测试和部署软件,极大地提升了开发团队的效率和软件质量,本文将详细介绍如何在 CentOS 7 系统上一步步配置 Jenkins 环境,从环境准备到初始设置完成,助您顺利搭建起强大的自动……

    2025-10-05
    002
  • 凤翔网站制作_制作镜像

    凤翔网站制作,专业团队倾心打造。镜像站点快速部署,数据同步实时更新。提升访问速度,保障网站稳定运行。选择凤翔,让您的网站飞得更高!

    2024-07-09
    0012
  • 服务器的安全性_安全性

    服务器的安全性是指服务器能够抵御外部攻击、保护数据不被非法访问和篡改的能力。这包括物理安全、网络安全、系统安全和应用安全等多个方面。

    2024-07-09
    007
  • 如何构建一个高效且用户友好的法律咨询服务网站?

    法律网站建设涉及创建具有专业外观和功能性的网站,以展示法律服务、律师简介、案例研究、客户评价和联系方式。这需要专业的设计、内容管理和搜索引擎优化,以确保网站吸引潜在客户并易于使用。

    2024-07-29
    007

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信