负载均衡就是负责将请求按照指定策略分发给后端的服务器,能够均衡请求压力,发现和屏蔽后端服务故障,提升服务的稳定性及资源利用率。还起到了流量转发、协议转换/SSL卸载、安全防攻击的作用。
常见的负载均衡产品有:
硬件类:F5 BIG-IP、NetScaler,
软件类:LVS、Nginx、HAproxy
一:从实现协议的角度,可以分类为链路层负载均衡、IP负载均衡、HTTP负载均衡以及DNS负载均衡。
1)DNS负载均衡的实现原理:在域名后配置多个后端机器IP作为A记录。用户访问域名时,通过轮询的方式返回不同的IP,客户端使用该IP访问服务器。优点是简单,但只能支持轮询的策略,受限于DNS缓存生效时间,无法实现快速的健康检查机制,而且每次返回的都是真实的服务器IP地,存在安全隐患。
2)CDN负载均衡的实现原理:CDN(content delivery network)是事先将大量内容缓存到各个地方的服务器集群,用户访问时,返回离用户最近的或者负载最低的集群地址,实现负载均衡。优点是能够提升用户的访问速度,减少主站压力,缺点是方案比较复杂,成本较高。
3)HTTP负载均衡的实现原理:HTTP负载均衡的实现方案较多,可以针对HTTP协议的任意特征字段进行负载均衡,包括HTTP协议的URL、头信息、甚至主体内容。最常见的负载均衡子段是HOST,URL。通过Cookie实现会话保持。
4)链路层负载均衡的实现原理:链路层负载均衡器收到用户请求后,通过修改请求的二层MAC地址为后端某一台服务器MAC地址,然后将通讯包通过ARP协议转发给对应的后端服务器,后端服务器处理请求后,直接将反馈包发送给请求方,无需再通过网关节点。链路负载均衡的优点是性能最高,但其限制也比较明显。
(1)负载均衡网关必须和业务处理集群的机器在同一个LAN或VLAN内,否正无法通过ARP协议找到业务机器IP。
(2)业务集群的机器必须绑定VIP,否者就算收到广播包,也会丢弃掉。
5)IP负载均衡的实现原理:IP负载均衡是使用最多的,适用场景最广且性能很好的负载均衡方式。它的基本思想就是通过修改源IP(SIP)或者目的IP(DIP)实现负载均衡。
目前比较流行的实现方式有:
(1)Tunnel(IP隧道)。通过隧道的方式,在用户原始数据包上封装了一层内部IP,实现了源IP/目的IP的转换。
(2)FullNat/Nat(网络地址转换)。使用FullNat的方式,直接修改数据的源地址和目标地址实现IP的转换。FullNat/Nat的主要区别在于:Nat只是修改了目的IP地址,而FullNat同时转换了源IP和目的IP。
上述方式各有利弊,IP隧道需要维护隧道配置,而FullNat/Nat模式需要额外的内核模块(TOA)来获取用户的真实IP。
二:负载均衡调度策略
(1)轮询,或加权轮询。加权值可以从机器性能差异设置权重。
(2)随机算法
(3)最小响应时间
(4)最小连接数
(5)哈希。常用的IP哈希、URL哈希,适合有状态的服务场景,后端服务器调整或故障需要重排资源。
(6)本机/本地机房优先
(7)一致性哈希。将请求对象和后端机器同时通过哈希算法映射到一个环形空间,通过空间点后续服务点的方式获取到后端资源。能够灵活地实现节点的增加和删除,而无需大量地重排资源。
上述内容为《新一代银行IT架构》的读书笔记。
网友评论