What’s it 基本概念
- In computing, load balancing improves the distribution of workloads across multiple computing resources, such as computers, a computer cluster, network links, central processing units, or disk drives. Load balancing aims to optimize resource use, maximize throughput, minimize response time, and avoid overload of any single resource.
- Using multiple components with load balancing instead of a single component may increase reliability and availability through redundancy. Load balancing usually involves dedicated software or hardware, such as a multilayer switch or a Domain Name System server process.
- 负载平衡是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件或者硬件来完成。 主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。
References
概述overview
负载均衡有硬件和软件两种, 软件LB一般分为两种: 基于DNS or 基于IP报文.
目前主流的软件负载均衡分为四层和七层
LVS属于四层负载均衡,工作在tcp/ip协议栈上,通过修改网络包的ip地址和端口来转发, 由于效率比七层高,一般放在架构的前端.
七层的负载均衡有nginx(engine x), haproxy, apache等, 工作在应用层,因此可以将HTTP请求等应用数据发送到具体的应用服务器,一般放在架构的后面位置,布置在应用服务器前面.
基本原理
几种负载均衡策略
- http重定向
- web服务器通过http响应头信息中的Location标记来返回一个新的URL,http代理继续请求这个新的URL,完成自动跳转.
- 需要权衡转移请求的开销和实际处理请求的开销. e.g. 很多下载站点就使用Location重定向.
- DNS 负载均衡
- DNS服务器并不能很好地完成工作量均衡分配;
- 相比http重定向,基于DNS的负载均衡完全节省了所谓的主站点,或者说DNS服务器已经充当了主站点的职能; DNS服务器本身的性能几乎不用担心(DNS记录缓存), 也说是DNS不存在http的吞吐率限制,理论上可以无限增加实际服务器的数量.
3. 反向代理负载均衡
- 几乎所有主流的Web服务器都热衷于支持基于反向代理的负载均衡。它的核心工作就是转发HTTP请求(Layer 7)。
- 任何对于实际服务器的HTTP请求都必须经过调度器
- 调度器必须等待实际服务器的HTTP响应,并将它反馈给用户(前两种方式不需要经过调度反馈,是实际服务器直接发送给用户)
优点: - 调度策略丰富, e.g. weight(权重);
- work on HTTP layer, require high-performance of concurrency;
- 转发需要一定开销. e.g. 请求静态文件,更适合使用前面介绍的基于DNS的负载均衡方式。
- 反向代理服务器可以监控后端server, 调整均衡策略;
- 粘滞session.
- IP负载均衡
- 反向代理服务器工作在HTTP层,其本身的开销就已经严重制约了可扩展性,从而也限制了它的性能极限
- NAT服务器:它工作在传输层,它可以修改发送来的IP数据包,将数据包的目标地址修改为实际服务器地址。
- Linux2.6以后有LVS(Linux Virtual Server),命令行配置界面,快速实现负载均衡.
- NAT集群 + DNS 也是一种选择.
- 直接路由 LVS-DR
- 适合搭建可扩展的负载均衡系统,不论是Web服务器还是文件服务器,以及视频服务器,它都拥有出色的性能。前提是你必须购买一系列的合法IP地址
- 工作在数据链路层。它修改数据包的目标MAC地址,并没有修改目标IP
- 响应数据直接发给用户,实际服务器必须接入外网,而且不能将调度器作为默认网关,要给实际服务器添加和调度器IP地址相同的IP别名。
IP别名就是一张物理网卡上配置多个IP.
6. IP 隧道 LVS-TUN
- 转发机制:将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据包可以直接到达用户端。
- 实际服务器也必须拥有合法的IP地址。
- LVS-TUN可以将实际服务器根据需要部署在不同的地域,并且根据就近访问的原则来转移请求, CDN,所以有类似这种需求的,就应该选择LVS-TUN。
- Contents Delivery Network is a geographically distributed network of proxy servers and their data centers
- CDNs are a layer in the internet ecosystem. Content owners such as media companies and e-commerce vendors pay CDN operators to deliver their content to their end users. In turn, a CDN pays ISPs, carriers, and network operators for hosting its servers in their data centers.