博客
关于我
使用LVS实现负载均衡原理及安装配置详解
阅读量:435 次
发布时间:2019-03-06

本文共 2605 字,大约阅读时间需要 8 分钟。

负载均衡集群(Load Balance Cluster),简称LB集群,是一种通过分布式服务器集群实现高性能、高可用性的网络负载均衡技术。常见的负载均衡软件包括开源的Nginx、LVS(Linux Virtual Server)和商业的F5、Netscale等。在本文中,我们将深入探讨LVS的工作原理、组成、相关术语以及其在不同工作模式下的实现原理和特点。

一、LVS的基本介绍

LVS(Linux Virtual Server)由章文嵩博士发起,是一个开源项目,现已成为Linux内核的标准组成部分。LVS的主要目标是通过负载均衡技术和Linux操作系统实现高性能、高可用的服务器集群,具有良好的可靠性、可扩展性和操作性,使其在实现负载均衡方面成为开源领域的佼佼者。

LVS的架构从逻辑上可以分为三个层次:调度层、服务器集群层和共享存储层。调度层负责接收用户请求并根据预定义的调度算法将请求分发至后端真实服务器(Real Server);服务器集群层则负责接收和处理实际的网络请求;共享存储层确保所有用户请求访问的数据一致性。

二、LVS的工作原理

LVS的工作原理主要依赖于Linux内核的IPVS(IP Virtual Server)框架。具体来说,当用户请求到达负载均衡调度器(Director Server)时,调度器将请求发往内核空间的PREROUTING链。PREROUTING链首先检查数据包的目标IP地址是否为本机IP,如果是,则将数据包转发至INPUT链。

在INPUT链中,IPVS会根据定义的集群服务进行比对。如果用户请求的目标IP地址正好是集群服务地址,IPVS会修改数据包的目标IP地址为对应的后端服务器IP地址,并将修改后的数据包发至POSTROUTING链。POSTROUTING链会根据目标IP地址找到对应的后端服务器,并将请求最终发送至真实服务器(Real Server)。

三、LVS的组成

LVS由两部分组成:ipvs和ipvsadm。

  • ipvs:这是一段工作在内核空间的代码,负责实际实现负载均衡调度。
  • ipvsadm:这是一段工作在用户空间的代码,用于为ipvs框架编写规则,定义集群服务和后端真实服务器。
  • 四、LVS相关术语

  • DS(Director Server):负载均衡调度器节点,负责接收用户请求并将请求分发至后端服务器。
  • RS(Real Server):后端真实的工作服务器。
  • VIP(Virtual IP):向外部直接面向用户的IP地址,作为用户请求的目标地址。
  • DIP(Director Server IP):调度器节点的内部IP地址,主要用于与内部机器通信。
  • RIP(Real Server IP):后端服务器的IP地址。
  • CIP(Client IP):访问客户端的IP地址。
  • 五、LVS的工作模式

    LVS支持三种主要工作模式:NAT模式、DR模式和TUN模式。

    1. LVS-NAT模式

    NAT模式(Network Address Translation)是最常用的工作模式,其特点包括:

    • 后端服务器应使用私有地址,网关指向调度器的内网IP。
    • DIP和RIP必须在同一个网段内。
    • 所有请求和响应都需要经过调度器节点,高负载场景下调度器可能成为性能瓶颈。
    • 支持端口映射。
    • 后端服务器可以使用任意操作系统。
    • 缺陷:调度器对请求和响应的处理压力较大。

    2. LVS-DR模式

    DR模式(Direct Route)特点包括:

    • 所有请求报文都需要经过调度器节点,但响应报文不能经过调度器节点。
    • 后端服务器的网关不指向调度器的内网IP。
    • 后端服务器可以使用公网地址,但必须与调度器节点在同一个物理网络中。
    • 不支持端口映射和地址转换。
    • 后端服务器的lo接口配置VIP地址。
    • 缺陷:后端服务器和调度器节点必须在同一机房中。

    3. LVS-TUN模式

    TUN模式(Tunnel)通过在原有的IP报文外再次封装一层IP首部实现负载均衡。其特点包括:

    • 后端服务器的IP、VIP和DIP均为公网地址。
    • 后端服务器的网关不指向调度器的内网IP。
    • 所有请求报文都需要经过调度器节点,但响应报文不能经过调度器节点。
    • 不支持端口映射。
    • 后端服务器必须支持隧道功能。
    • 缺陷:调度器节点对请求和响应的处理压力较大。

    六、LVS的调度算法

    LVS支持八种调度算法,分别是:

  • 轮叫调度(rr)
  • 加权轮叫调度(wrr)
  • 最少链接调度(lc)
  • 加权最少链接调度(wlc)
  • 基于局部性的最少连接调度(lblc)
  • 复杂的基于局部性最少连接调度(lblcr)
  • 目标地址散列调度(dh)
  • 源地址散列调度(sh)
  • 这些调度算法各有特点,例如轮叫调度简单易实现,适合所有服务器处理能力相同的情况;加权轮叫调度可以根据服务器的权重分配请求;最少链接调度根据后端服务器的连接数进行调度等。

    七、LVS的实践配置

    1. NAT模式配置

    实验环境包括三台服务器:一台作为调度器节点,两台作为后端服务器。调度器节点的外网IP为172.16.254.200,内网IP为192.168.0.8;后端服务器的内网IP分别为192.168.0.18和192.168.0.28,并将后端服务器的网关设置为调度器的内网IP。安装Nginx服务后,使用ipvsadm命令为LVS-NAT模式添加规则。

    2. DR模式配置

    实验环境与NAT模式类似,但后端服务器的网关不指向调度器的内网IP。后端服务器的lo接口配置VIP地址,并通过arptables规则防止响应请求通过ARP解析到后端服务器。

    八、结合Keepalive的高可用性

    LVS本身不支持健康检查,无法实现高可用性。当后端服务器出现故障时,LVS仍会将请求转发至该服务器,导致服务中断。Keepalive软件可以通过健康检查解决这一问题,实现LVS的高可用性。

    实验环境包括四台节点:两台Keepalived节点和两台LVS节点。Keepalived节点负责负载均衡和故障转移,LVS节点负责接收和分发请求。通过配置Keepalived的虚拟路由重定向和健康检查,实现LVS的高可用性。

    通过手动关闭后端服务器的Nginx服务,测试访问页面内容,验证LVS的负载均衡功能。同时,测试Keepalived的故障转移和恢复功能,确保服务在后端服务器故障时仍能正常运行。

    转载地址:http://jntyz.baihongyu.com/

    你可能感兴趣的文章
    NIS服务器的配置过程
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>