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

  • RS 服务器需配置网关 。
  • 双向流量对 LVS 会产生较大的负载压力 。
NAT 模式的使用场景:对 Windows 操作系统的用户比较友好 , 使用 LVS, 必须选择 NAT 模式 。
TUN 模式
IP 隧道:IP Tunnel , 简称:TUN 模式 , 采用开放式的网络结构 , 负载调度器作为客户机的访问入口 , 各节点通过各自的 Internet 连接直接回应给客户机 , 而不经过负载调度器 , 服务器节点分散在互联网中的不同位置 , 有独立的公网 IP 地址 , 通过专用 IP 隧道与负载调度器相互通信 。
|深入理解LVS,还学不会算我输
本文插图

TUN 实现原理过程如下:
①客户端发送数据包经过网络后到 LVS 网卡 , 数据包源 IP 为 CIP , 目的 IP 为 VIP 。
②进入 PREROUTING 链后 , 会根据目的 IP 去查找路由 , 确定是否为本机 IP , 数据包将转发至 INPUT 链中 , 到 LVS , 源 IP 和 目的 IP 不变 。
③到 LVS 后 , 通过目的 IP 和目的 PORT 查找是否为 IPVS 服务 , 如是 IPVS 服务 , 将会选择一个 RS 后端服务器 ,源 IP 为 DIP , 目标 IP 为 RIP , 数据包将会转发至 OUTPUT 链中 。
④数据包根据路由信息到达 LVS 网卡 , 发送至路由器网关 , 最终到达后端服务器 。
⑤后端服务器收到数据包后 , 会拆掉最外层的 IP 地址后 , 会发现还有一层 IP 首部 , 源 IP 为 CIP , 目的 IP 为 VIP , TUNL0 上配置 VIP , 查找路由后判断为本机 IP 地址 , 将会发给用户空间层的应用程序响应后 VIP 为源 IP , CIP 为目的 IP 数据包发送至网卡 , 最终返回至客户端用户 。
TUN 模式的优点:
  • 单臂模式 , LVS 负载压力小 。
  • 数据包修改小 , 信息完整性高 。
  • 可跨机房 。
TUN 模式的缺点:
  • 不支持端口映射 。
  • 需在 RS 后端服务器安装模块及配置 VIP 。
  • 隧道头部 IP 地址固定 , RS 后端服务器网卡可能会不均匀 。
  • 隧道头部的加入可能会导致分片 , 最终会影响服务器性能 。
TUN 模式的使用场景:如对转发性要求较高且具有跨机房需求的 , 可选择 TUN 模式 。
DR 模式
直接路由:Direct Routing , 简称 DR 模式 , 采用半开放式的网络结构 , 与 TUN 模式的结构类似 , 但各节点并不是分散在各个地方 , 而是与调度器位于同一个物理网络 , 负载调度器与各节点服务器通过本地网络连接 , 不需要建立专用的 IP 隧道 。 它是最常用的工作模式 , 因为它的功能性强大 。
|深入理解LVS,还学不会算我输
本文插图
DR 实现原理过程如下:
①当客户端用户发送请求给 www.baidu.com 网站时 , 首先经过 DNS 解析到 IP 后并向百度服务器发送请求 , 数据包经过网络到百度 LVS 负载均衡服务器 。
这时到达 LVS 网卡时的数据包包括:源 IP 地址(客户端地址)、目的 IP 地址(百度对外服务器 IP 地址 , 也就是 VIP)、源 MAC 地址(CMAC / LVS 连接路由器的 MAC 地址)、目标 MAC 地址(VMAC / VIP 对应的 MAC 地址) 。
②数据包到达网卡后 , 经过链路层到达 PREROUTING 链 , 进行查找路由 , 发现目的 IP 是 LVS 的 VIP , 这时就会发送至 INPUT 链中并且数据包的 IP 地址、MAC 地址、Port 都未经过修改 。
③数据包到达 INPUT 链中 , LVS 会根据目的 IP 和 Port(端口)确认是否为 LVS 定义的服务 。
如是定义过的 VIP 服务 , 会根据配置的服务信息 , 从 RealServer 中选择一个后端服务器 RS1 , 然后 RS1 作为目标出方向的路由 , 确定下一跳信息及数据包通过具体的哪个网卡发出 , 最好将数据包通过 INET_HOOK 到 OUTPUT 链中 。


推荐阅读