负载均衡算法选择配置 负载均衡算法选择配置是弹性负载均衡产品的典型应用,本文帮助您了解负载均衡算法选择配置的应用场景和算法原理。 应用场景 在为业务配置负载均衡时,需要选择合适的流量分发算法,对流量进行负载分发。选择合理的负载均衡算法,可避免服务器负载不均,部分服务器负载过高影响服务性能。 算法原理 掌握了算法的基本原理,才有助于您根据自己的业务需求选择合理的的负载均衡算法。 算法 轮询算法 最少连接算法 源算法 原理 轮询算法就是以轮询的方式依次将请求调度不同的服务器。轮询算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,按权值的高低和轮询方式分配请求到各服务器。权值高的服务器先收到连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。 在实际情况中,客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间的延伸,如果采用简单的轮询或随机均衡算法,每一台服务器上的连接进程数目可能会产生极大的不同,这样实际上并没有达到真正的负载均衡。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来评估服务器的负载情况。与轮询算法相反,调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中止或超时,其连接数减1。 根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,如果该服务器不可用,ELB会选择下一个可用服务器做兜底转发。 优势 轮询算法的优点是其简洁性和实用性。它无需记录当前所有连接的状态,所以它是一种无状态调度。 此种均衡算法适合长时处理的请求服务,如FTP等应用。 iphash可以实现部分会话保持的效果,能够记住源 IP,使某一客户端请求通过 hash 表一直映射在同一台后端主机上。 劣势 轮询算法相对简单,但不适用于请求服务时间变化比较大,或者每个请求所消耗的时间不一致的情况,此时轮询算法容易导致服务器间的负载不平衡。 对短连接的服务,服务器连接数变化过于频繁,没有明显优势。 在访问量差异大的场景,容易导致负载不均 适用场景 每个请求所占用的后端时间基本相同,负载情况最好。常用于短连接服务,例如HTTP 等服务。 每个请求所占用的后端时间相差较大的场景。常用于长连接服务。 适用于TCP/UDP协议类型的负载均衡,在不支持会话保持的场景可以使用 iphash 进行调度。