负载均衡—致性hash
负载均衡高可用
提起负载均衡,大家一定会想到F5/Netscale/深信服等厂商。硬件负载均衡设备性能低,采购成本高,通常适用于业务量小的土豪级别企业使用。随着企业规模不断扩大业务量成倍增长,硬件负载的横向扩展能力局限性突出。在当今IT互联网拥抱开源的大环境下,企业可以有多种开源的负载均衡方案,比如有lvs/nginx/haproxy。 同时为了提高业务的连续高可用,我们在部署网络和业务时通常都会考虑高可靠性技术,开源负载均衡高可用方案通常有keepalive/ecmp两种。
Keepalive:基于VRRP虚拟冗余路由协议,可以主备或者主主,适用于小规模场景,在大规模网络流量场景下不利于扩展。
如上图,我们可以利用三层交换机与服务器之间跑ospf协议实现负载均衡场景应用,当一台服务器故障后,流量会在剩余服务器上分摊,当业务流量规模增长时,只需在增加服务器即可,负载横向扩展非常方便。
ECMP 一致性hash
问题:在ECMP场景下,当其中一条链路故障时,为保证业务不中断,对当前所有流量重新进行HASH计算。将所有流量重新分布到正常工作的链路上,这样就有可能导致原来HASH的路径发生变化,同一用户的请求可能被发送到不同的服务器,大大影响了那些需要会话保持的业务。
解决方法:为了保持业务的连续性,当链路发生故障时只对故障链路上的流量进行重新HASH计算,对正常链路上的流量不产生影响,因此我们需要采用ECMP负载分担一致性机制来解决此问题。
网络设备配置一致性Hash
华为交换机配置
load-balance ecmp stateful enable
华三交换机配置
ecmp mode enhanced
cisco交换机配置
hardware profile ecmp resilient
注意:以上常见网络设备厂家并不是所有产品和版本都支持一致性hash,在选型时需要注意查看产品功能介绍,建议直接咨询对应厂商。