- 前言
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第 1 篇 高性能网站构建
- 第 1 章 深入理解 DNS 原理与部署 BIND
- 第 2 章 全面解析 CDN 技术与实战
- 第 3 章 负载均衡和高可用技术
- 第 4 章 配置及调优 LVS
- 第 5 章 使用 HAProxy 实现 4 层和 7 层代理
- 第 6 章 实践 Nginx 的反向代理和负载均衡
- 第 7 章 部署商业负载均衡设备 NetScaler
- 第 8 章 配置高性能网站
- 第 9 章 优化 MySQL 数据库
- 第 2 篇 服务器安全和监控
- 第 10 章 构建企业级虚拟专用网络
- 第 11 章 实施 Linux 系统安全策略与入侵检测
- 第 12 章 实践 Zabbix 自定义模板技术
- 第 13 章 服务器硬件监控
- 第 3 篇 网络分析技术
- 第 14 章 使用 tcpdump 与 Wireshark 解决疑难问题
- 第 15 章 分析与解决运营商劫持问题
- 第 16 章 深度实践 iptables
- 第 4 篇 运维自动化和游戏运维
- 第 17 章 使用 Kickstart 完成批量系统安装
- 第 18 章 利用 Perl 编程实施高效运维
- 第 19 章 精通 Ansible 实现运维自动化
- 第 20 章 掌握端游运维的技术要点
- 第 21 章 精通手游运维的架构体系
最佳实践 21:模式选择
LVS 集群中,支持以下 3 种转发模式:LVS-NAT、LVS-DR、LVS-Tun。下面将对这 3 个转发模式逐一介绍。
LVS-NAT
NAT 是该项目实现的第一种转发模式,和思科 LocalDirector 这一款产品具有相同的实现方法( https://en.wikipedia.org/wiki/Cisco_LocalDirector )。如果希望搭建一个 LVS 集群的测试环境,可以采用这个转发模式,这个模式是最简单的设置,同时不需要对后端服务器做任何设置上的变更。
LVS-NAT 基于 NAT(网络地址转换)技术,网络数据流程如下。
1)负载均衡器在收到客户端请求后,改写目的 IP 地址为后端服务器真实 IP 和/或端口号,转发给后端服务器。
2)后端服务器处理完成后,回复给负载均衡器。
3)负载均衡器改写源 IP 为虚拟 IP,发送给客户端。
由此可见,负载均衡器是串联在整个架构中。
一个最简单的 LVS-NAT 测试架构如图 4-1 所示。
LVS-DR
LVS-DR 中的 DR 是 Direct Routing 的缩写,译为直接路由。
以图 4-2 来说明 LVS-DR 转发模式下的数据通信情况。
该架构图中的基本信息见表 4-1。
图 4-1 一个最简单的 LVS-NAT 测试架构
图 4-2 LVS-DR 架构图
表 4-1 图 4-2 中服务器基本信息表
客户端使用以下命令进行测试:
curl http://10.1.6.18/index.html
数据流程如下:
步骤 1 Client 发起 Arp Request,请求 10.1.6.18 的 MAC 地址,负载均衡器回复(文件:LVS_Client_Arp_Request.pcap,Frame 1215),如图 4-3 所示。
图 4-3 Client 的 Arp Request
注意目标 MAC和目的 IP
,请求获取 10.1.6.18 的 MAC 地址。
负载均衡器回复(文件:LVS_Client_Arp_Request.pcap,Frame 1216),如图 4-4 所示。
图 4-4 负载均衡器的 Arp Response
步骤 2 Client 连接 10.1.6.18 的 80 端口,发送 TCP SYN(文件:LVS_Client_Arp_Request.pcap,Frame 1217),如图 4-5 所示。
图 4-5 Client 发送 TCP SYN
此处,目的 MAC为负载均衡器 LVS1 的 MAC 地址,目的 IP
为虚拟 IP。
步骤 3 负载均衡器 LVS1 进行包转发。
步骤 4 后端服务器 Web1 收到请求的数据,处理并回复给 Client(文件:LVS_Web1_Request_Receive.pcap,Frame 321),如图 4-6 所示。
图 4-6 Web1 收到改写了目的 MAC 的 TCP SYN
从此处的和步骤
的
对比可以看到,Web1 收到的包 Ethernnet 的目的 MAC 已经被 LVS1 修改成了 Web1 的 MAC 地址(文件:LVS_Web1_Request_Receive.pcap,Frame 322),如图 4-7 所示。
Web1 的回包:
从此处的 Web1 的回包 Ethernet 的目的 MAC为 Client 的 MAC,IP 层的目的 IP
为 Client 的 IP,可以得知,该回包没有再经过 LVS1。
从以上步骤可以看到 DR(直接路由)的含义:请求经过负载均衡器调度后,后端服务器的响应数据流量直接返回给客户端,回包不经过负载均衡器。
图 4-7 Web1 回复 Clinet 的 TCP SYN+ACK
LVS-Tun
LVS-Tun 是 LVS 原创的一种转发模式,基于 LVS-DR。负载均衡器 LVS 代码把原始的包(源客户端 IP 到虚拟 IP)封装成 ipip 包,目的地址是后端服务器的真实 IP,然后进入 OUTPUT 链,并路由到后端服务器。后端服务器解封 ipip 包并处理,以源地址虚拟 IP、目的地址客户端 IP 直接回复给客户端。
LVS-Tun 是为了解决后端服务器和负载均衡器不在同一个物理区域所设计(跨网段)。
3 种模式对比与推荐
从对后端服务器的要求上来看,LVS-NAT 仅仅要求后端服务器网关指向负载均衡器的内网地址,无任何其他要求;LVS-DR 模式要求后端服务器禁用对虚拟 IP 的 ARP 响应,后端服务器网关不指向负载均衡器;LVS-Tun 要求后端服务支持 ipip 解封包,部分操作系统不支持。
从吞吐量上来看,LVS-DR 最高,LVS-NAT 最低。
从配置简便性上来看,LVS-NAT 最低,LVS-DR 和 LVS-Tun 均较为复杂。
本书推荐在应用中使用 LVS-DR 模式,这个也是目前运维架构中应用最多的 4 层开源负载均衡转发策略。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论