|深入理解LVS,还学不会算我输( 五 )


LVS 的基本原理
|深入理解LVS,还学不会算我输
本文插图

LVS 基于 Netfilter 框架 , 工作在 INPUT 链上 , 在 INPUT 链上注册 ip_vs_in HOOK 函数 , 进行 IPVS 相关主流程 。
详细原理概述如下:
①当客户端用户访问 www.baidu.com 网站时 , 用户访问请求通过层层网络 , 最终通过交换机进入 LVS 服务器网卡进入内核空间层 。
②进入 PREROUTING 后通过查找路由 , 确定访问目的 VIP 是本机 IP 地址的话 , 数据包将进入 INPUT 链中 。
③因为 IPVS 工作在 INPUT 链上 , 会根据访问的 VIP 和端口判断请求是否为 IPVS 服务 , 是的情况下 , 则调用注册的 IPVS HOOK 函数 , 进行 IPVS 相关流程 , 并强制修改数据包的相关数据 , 并将数据包发往 POSTROUTING 链中 。
④POSTROUTING 链收到数据包后 , 将根据目标 IP 地址服务器 , 通过路由选路 , 将数据包最终发送至后端真实服务器中 。
上面就是我们所介绍的 LVS 的工作原理 , 那么 LVS 负载均衡还包括三种工作模式 , 且每种模式工作原理都有所不同 , 适用于不同应用场景 , 其最终目的都是能实现均衡的流量调度和良好的扩展性 。
LVS 负载均衡的三种工作模式
群集的负载调度技术 , 可基于 IP、端口、内容等进行分发 , 其中基于 IP 的负载均衡是效率最高的 。
基于 IP 的负载均衡模式 , 常见的有地址转换(NAT)、IP 隧道(TUN)和直接路由(DR)三种工作模式 。
NAT 模式
地址转换:Network Address Translation , 简称:NAT 模式 , 类似于防火墙的私有网络结构 , 负载调度器作为所有服务器节点的网关 , 作为客户机的访问入口 , 也是各节点回应客户机的访问出口 , 服务器节点使用私有 IP 地址 , 与负载调度器位于同一个物理网络 , 安全性要优于其他两种方式 。
|深入理解LVS,还学不会算我输
本文插图
NAT 实现原理过程如下:
①客户端发出的请求数据包经过网络到达 LVS 网卡 , 数据包源 IP 为 CIP , 目的 IP 为 VIP 。
②然后进入 PREROUTING 链中 , 根据目的 IP 查找路由 , 确定是否为本机 IP 地址 , 随后将数据包转发至 INPUT 链中 , 源 IP 和 目的 IP 不变 。
③到达 LVS 后 , 通过目的 IP 和目的 PORT 查找是否为 IPVS 服务 , 如是 IPVS 服务 , 将会选择一个 RS 来作为后端服务器 , 数据包的目的 IP 地址将会修改为 RIP , 这时并以 RIP 为目的 IP 去查找路由 , 确定下一跳及 PORT 信息后 , 数据包将会转发至 OUTPUT 链中 。
④被修改过的数据包经过 POSTROUTING 链后 , 到达 RS 服务器 , 数据包源 IP 为 CIP , 目的 IP 为 RIP 。
⑤RS 服务器经过处理后 , 将会把数据包发送至用户空间的应用程序 , 待处理完成后 , 发送响应数据包 , RS 服务器的默认网关为 LVS 的 IP , 应用程序将会把数据包转发至下一跳 LVS 服务器 , 数据包源 IP 为 RIP , 目的 IP 为 CIP 。
⑥LVS 服务器收到 RS 服务器响应的数据包后 , 查找路由 , 目的 IP 不是本机 IP并且 LVS 服务器开启了 FORWARD 模式 , 会将数据包转发给它 , 数据包不变 。
⑦LVS 服务器收到响应数据包后 , 根据目的 IP 和 目的 PORT 查找相应的服务 , 这时 , 源 IP 为 VIP , 通过查找路由 , 确定下一跳信息并将数据包发送至网关 , 最终回应给客户端用户 。
NAT 模式的优点:

  • 支持 Windows 操作系统 。
  • 支持端口映射 , 如 RS 服务器 PORT 与 VPORT 不一致的话 , LVS 会修改目的 IP 地址和 DPORT 以支持端口映射 。
NAT 模式的缺点:


推荐阅读