vlambda博客
学习文章列表

负载均衡—致性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,在选型时需要注意查看产品功能介绍,建议直接咨询对应厂商。