全面分析:Web基础架构负载均衡LVS机制的原理( 四 )

Full-NAT 由此而生 , 解决的是 LVS 和 RS 跨 VLAN 的问题 , 而跨 VLAN 问题解决后 , LVS 和 RS 不再存在 VLAN 上的从属关系 , 可以做到多个 LVS 对应多个 RS , 解决水平扩容的问 题 。
 
Full-NAT 相比 NAT 的主要改迕是 , 在 SNAT/DNAT 的基础上 , 加上另一种转换 , 转换过
程如下:
全面分析:Web基础架构负载均衡LVS机制的原理

文章插图
 
 
  • 在包从 LVS 转到 RS 的过程中 , 源地址从客户端 IP 被替换成了 LVS 的内网 IP 。
  • 内网IP之间可以通过多个交换机跨VLAN通信
  • 当RS处理完接受到的包 , 返回时 , 会将返个包返回给LVS的内网IP , 返一步也不受限于VLAN 。
  • LVS 收到包后 , 在 NAT 模式修改源地址的基础上 , 再把RS发来的包中的目标地址从LVS内网 IP 改为客户端的 IP 。
Full-NAT主要的思想是把网关和其下机器的通信 , 改为了普通的网络通信 , 从而解决了跨 VLAN 的问题 。采用返种方式 , LVS 和 RS 的部署在 VLAN 上将不再有任何限制 , 大大提高了运维部署的便利性 。
上面其实是把内网ip和内网ip之间通过交换机进行转换捆绑 , 从而可以跨vlan进行服务请求代理 。
Session
客户端与服务端的通信 , 一次请求可能包含多个TCP 包 , LVS 必须保证同一连接的TCP包 , 必须被转发到同一台RS , 否则就乱套了 。为了确保返一点 , LVS 内部维护着一个 Session的 Hash 表 , 通过客户端的某些信息可以找到应该转发到哪一台 RS 上 。
LVS 集群化
采用 Full-NAT 模式后 , 可以搭建 LVS 的集群 , 拓扑结构如下图:
 
全面分析:Web基础架构负载均衡LVS机制的原理

文章插图
 
容灾
容灾分为 RS 的容灾和 LVS 的容灾 。
RS 的容灾可以通过 LVS 定期健康检测实现 , 如果某台 RS 失去心跳 , 则认为其已经下线 ,  不会在转发到该 RS 上 。
LVS 的容灾可以通过主备+心跳的方式实现 。主 LVS 失去心跳后 , 备 LVS 可以作为热备立 即替换 。
 
容灾主要是靠 KeepAlived 来做的 。(心跳以及下线剔除或者替换工作主要通过keepalived进行控制)




推荐阅读