本文主要阐述 LVS 的各种转发模式,本文以 CDN 集群为例
当集群服务能力遇到性能瓶颈,需要进行拓展时,有两种解决思路:Scale-up 和 Scale-out,也称作垂直扩展和水平扩展。
垂直扩展 :提升单机处理能力。垂直扩展的方式又有两种:
(1)增强单机硬件性能,例如:升级 CPU,扩容硬盘及内存;
(2)提升单机架构性能,例如:使用 Cache 来减少 IO 次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间;
在业务发展迅猛的早期,如果对成本不敏感,可以采用 增加设备单机硬件能力 的方式来提高集群的服务能力,但垂直拓展有个明显缺点:单机设备能力有极限,并且随着硬件设备能力提高对应的硬件成本会急剧增加,性价比低
水平扩展 :增加服务器数量,线性扩充集群。当然水平扩展对系统架构设计是有要求的,就 CDN 而言需要进行多层的均衡负载来实现。
常见的负载均衡
根据工作所在的协议层可以分为:
- 四层均衡负载:根据请求报文中 IP 和端口进行调度
- 七层均衡负载:根据请求报文中内容进行调度
根据软硬件划分
- 硬件均衡负载:
F5 的 BIG-IP
Citrix 的 NetScaler
这类硬件负载均衡器通常能同时提供四层和七层负载均衡,但同时也价格不菲。
- 软件均衡负载
基于四层:LVS,HaProxy,Nginx
基于七层:Haproxy,Nginx,ATS(Apache Traffic Server),squid,varnish