阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LVS负载均衡之LVS-NAT与LVS-DR模式原理详解

209次阅读
没有评论

共计 2803 个字符,预计需要花费 8 分钟才能阅读完成。

一、负载均衡 LVS 基本介绍

  1. LVS 是 Linux Virtual Server 的简称,也就是 Linux 虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org。

  2. LVS 是 Linux 内核标准的一部分。LVS 是一个实现负载均衡集群的开源软件项目,通过 LVS 的负载均衡技术和 Linux 操作系统可以实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。
  3. LVS 架构从逻辑上可分为调度层、Server 集群层和共享存储。LVS 实际上相当于基于 IP 地址的虚拟化应用。

二、LVS 的组成

LVS 由 2 部分程序组成,包括 ipvs 和 ipvsadm。

  1. ipvs(ip virtual server):工作在内核空间,是真正生效实现调度的代码。
  2. ipvsadm:工作在用户空间,负责为 ipvs 内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

三、LVS 相关术语

  1. DS:Director Server, 指的是前端负载均衡器节点。
  2. RS:Real Server, 后端真实的工作服务器。
  3. VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址。
  4. DIP:Director Server IP, 前端负载均衡器 IP 地址,主要用于和内部主机通信。
  5. RIP:Real Server IP, 后端服务器的 IP 地址。
  6. CIP:Client IP, 访问客户端的 IP 地址

四、LVS 的工作模式介绍

LVS 负载均衡常见的有三种工作模式,分别是地址转换(简称 NAT 模式)、IP 隧道(简称 TUN 模式)和直接路由(简称 DR 模式),其实企业中最常用的是 DR 实现方式,而 NAT 配置上比较简单和方便,下面总结 DR 和 NAT 原理和特点:

1. LVS-NAT 模式

(1) LVS-NAT 原理

类似于防火墙的私有网络结构,Director Server 作为所有服务器节点的网关,,即作为客户端的访问入口,也是各节点回应客户端的访问出口,其外网地址作为整个群集的 VIP 地址,其内网地址与后端服务器 Real Server 在同一个物理网络,Real Server 必须使用私有 IP 地址。
LVS 负载均衡之 LVS-NAT 与 LVS-DR 模式原理详解

数据包流向分析

  • 用户发送请求到 Director Server, 请求的数据报文(源 IP 是 CIP, 目标 IP 是 VIP)到达内核空间。

  • 内核空间判断数据包的目标 IP 是本机,此时 IPVS 比对数据包请求的服务是否为集群服务,若是,修改数据包的目标 IP 地址为后端服务器 IP,重新封装数据包(源 IP 为 CIP,目标 IP 为 RIP),然后选路将数据包发送给 Real Server。

  • Real Server 比对发现目标 IP 是本机的 IP,重新封装报文(源 IP 为 RIP,目标 IP 为 CIP)发回给 Director Server。

  • Director Server 重新封装数据包,将源 IP 地址修改为自己的 VIP 地址,然后响应给客户端。此时报文的源 IP 为 VIP,目标 IP 为 CIP。

(2) LVS-NAT 模型的特点

  • RS 必须使用私有 IP 地址,网关指向 DIP。

  • DIP 与 RIP 必须在同一网段内。

  • DS 作为所有服务器节点的网关,也就是说请求和响应报文都需要经过 Director Server。

  • 支持端口映射

  • 高负载场景中,Director Server 压力比较大,易成为性能瓶颈。

2. LVS-DR 模式

(1) LVS-DR 原理

Director Server 作为群集的访问入口,但不作为网关使用,后端服务器池中的 Real Server 与 Director Server 在同一个物理网络中,发送给客户机的数据包不需要经过 Director Server。为了响应对整个群集的访问,DS 与 RS 都需要配置有 VIP 地址。
LVS 负载均衡之 LVS-NAT 与 LVS-DR 模式原理详解
数据包流向分析

  • 用户发送请求到 Director Server, 请求的数据报文(源 IP 是 CIP, 目标 IP 是 VIP)到达内核空间。

  • 由于 DS 和 RS 在同一个网络中,所以是通过二层数据链路层来传输。
  • 内核空间判断数据包的目标 IP 是本机 IP,此时 IPVS 比对数据包请求的服务是否为集群服务,若是,重新封装数据包,修改源 MAC 地址为 DIP 的 MAC 地址,目标 MAC 地址为 RIP 的 MAC 地址,源 IP 地址与目标 IP 地址没有改变,然后将数据包发送给 Real Server.
  • RS 发现请求报文的 MAC 地址是自己的 MAC 地址,就接收此报文,重新封装报文(源 IP 地址为 VIP,目标 IP 为 CIP), 将响应报文通过 lo 接口传送给 eth0 网卡然后向外发出。
  • RS 直接将响应报文传送到客户端。

(2) LVS-DR 模型的特点

  • RS 和 DS 必须在同一个物理网络中。
  • RS 可以使用私有地址,也可以使用公网地址,如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
  • 所有的请求报文经由 Director。Server,但响应报文必须不能经过 Director Server。
  • RS 的网关绝不允许指向 DIP(不允许数据包经过 director)。
  • RS 上的 lo 接口配置 VIP 的 IP 地址。

LVS-DR 模式需要注意的是:
保证前端路由将目标地址为 VIP 报文统统发给 Director Server,而不是 RS。

解决方案是:修改 RS 上内核参数(arp_ignore 和 arp_announce)将 RS 上的 VIP 配置在 lo 接口的别名上,并限制其不能响应对 VIP 地址解析请求。

  • arp_ignore= 1 表示系统只响应目的 IP 为本地 IP 的 ARP 请求。

  • arp_announce= 2 表示系统不使用 IP 包的源地址来设置 ARP 请求的源地址,而选择发送接口的 IP 地址。

五、LVS 的负载调度算法

最常用的有四种;轮询(rr)、加权轮询 (wrr)、最少连接(lc) 和加权最少连接(wlc)。

  • 轮询(rr):将收到的访问请求按照顺序轮流调度到不同的服务器上,不管后端真实服务器的实际连接数和系统负载。
  • 加权轮询(wrr):给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0–100。根据每台服务器的性能,给每台服务器添加权值,如果 RS1 的权值为 1,RS2 的权值为 2,那么调度到 RS2 的请求会是 RS1 的 2 倍。权值越高的服务器,处理的请求越多。这种算法是对 rr 算法的一种优化和补充。
  • 最少连接(lc):根据后端 RS 的连接数来决定把请求分发给谁,比 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1。
  • 加权最少连接(wlc): 根据后端 RS 的权重和连接数来决定把请求分发给谁,权重较高,连接数少的 RS 会优先处理请求。

六、LVS 的共享存储服务器

为后端真实服务器提供稳定、一致的文件存取服务,在 Linux/Unix 环境中,共享存储可以使用 NAS 设备或者提供 NFS(网络文件系统)共享服务的专用服务器。一般放在私有网络中。

LVS 的 NAT 模式案例部署详细请看 LVS 负载均衡之 LVS-NAT 搭建 Web 群集

LVS 的 DR 模式案例部署详细请看 LVS 负载均衡之 LVS-DR 搭建 Web 群集与 LVS 结合 Keepalived 搭建高可用 Web 群集

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2803字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中