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

前提概要
 

在大规模互联网应用中 , 负载均衡设备是必不可少的组成部分 , 源于互联网应用的高并发和大流量的冲击压力场景下 , 通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库、缓存等等)实现高可用特点和机制 。
LVS的介绍说明
  1. 官方站点:http://www.linuxvirtualserver.org;
  2. 用过LVS的朋友 , 其实大家的目的性很明确 , 就是需要通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能 , 高可用的服务器群集;
  3. 并且这个集群具有良好的可靠性、可扩展性和可操作性 , 从而以低廉的成本实现最优的服务性能 , 这也是大多数中小型公司青睐的架构;
LVS的体系架构请求传播路径 
全面分析:Web基础架构负载均衡LVS机制的原理

文章插图
 
负载均衡层(Load Balancer)
  1. 处于集群最前端 , 一台或多台构成负载调度 , 俗称负载调度器(Director Server);
  2. 分发请求给服务器集群组层的应用服务器(Real Server);
  3. 监控应用服务器健康状况 , 动态从LVS路由表中剔除、添加;
  4. 也可以兼职Real Server的身份;
负载均衡的作用
  • 负载均衡设备的任务就是作为应用服务器流量的入口 , 挑选最合适的一台服务器 , 将客户端的请求转发给它处理 , 实现客户端到真实服务端的透明转发
  • 云计算以及分布式架构 , 本质上也是将后端服务器作为计算资源、存储资源 , 由某台管理服务器封装成一个服务对外提供 , 客户端不需要关心真正提供服务的是哪台机器 , 在它看来 , 就好像它面对的是一台拥有近乎无限能力的服务器 , 而本质上 , 真正提供服务的 , 是后端的集群支撑的计算能力 。
典型的互联网应用的拓扑结构 
全面分析:Web基础架构负载均衡LVS机制的原理

文章插图
 
负载均衡的类型
  • 负载均衡可以采用硬件设备 , 也可以采用软件负载 。商用硬件负载设备成本通常较高(一台几十万上百万很正常)一般有F5和A10硬件负载均衡
  • 所以在条件允许的情冴下我们会采用软负载 , 软负载解决的两个核心问题是:选谁、转发 , 其中最著名的是 LVS(Linux Virtual Server)、Nginx、HAproxy等
软负载均衡(LVS)
LVS 是四层负载均衡 , 是我们国家著名技术专家:章文嵩博士研发的 , 也就是说建立在 OSI 模型的第四层——传输层之上 , 传输层上有我们熟悉的TCP/UDP , LVS支持TCP/UDP的负载均衡 。
LVS的转发主要通过修改IP地址(NAT模式 , 分为源地址修改SNAT和目标地址修改DNAT)、修改目标mac(DR 模式)来实现 。
LVS是在第四层做负载均衡
  • 首先 , LVS不像HAProxy等七层软负载面向的是HTTP包 , 所以七层负载可以做的URL解析等工作 , LVS无法完成 。
  • 其次 , 用户访问是与服务端建立连接后交换数据包实现的 , 如果在第三层网络层做负载均衡 , 那么将失去「连接」的语义
  • 软负载面向的对象应该是一个已经建立连接的用户 , 而不是一个孤零零的 IP 包后面会看到 , 实际上 LVS 的机器代替真实的服务器的用户通过TCP三次握手建立了连接所以 LVS 是需要关心「连接」级别的状态的
服务器群组层(Server Arrary)
  1. 一台或多台实际运行的应用服务器构成;
  2. 每个Real Server关联时通过有效网络互连;
共享存储层(Shared Storage) 
提供共享存储空间和内容一致性的存储区域;例如:数据库、OSS存储、FS文件服务器等 。
LVS相关术语