普通轮询算法
每个请求会按时间顺序逐个分配到不同的后端服务器。轮询不需要额外的配置
加权轮询算法
设置服务器的权重,权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的,所以此策略比较适合服务器的硬件配置差别比较大的情况
IP哈希算法
使用请求者的IP地址进行hash运算,根据计算结果来决定将请求发送到哪一台服务器,可以确保来自同一IP地址的请求始终落在同一台服务器上。
当对后端的多台动态应用服务器做负载均衡时,IP哈希算法能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来自某一个IP的用户在后端Web服务器A上登录后,在访问该站点的其他URL,能保证其访问的始终是后端web服务器A。(但是实际上,对于这种session共享问题,还是通过redis处理比较好)
需要额外多说一点的是使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接收的请求少,而且设置后端服务器权重等方法将不起作用
最少连接算法
把请求转发给连接数较少的后端服务器。
轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,最少连接算法就可以达到更好的负载均衡效果。
URL哈希算法
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。
发送相同的请求时,希望只有一个服务器处理该请求,使用 uri_hash。因为 URL 相同,则哈希值(hash)相同,那么哈希值对应的服务器也相同。适用于一些大文件缓存在一个服务器中的情况,减少大文件在多个服务器中传输消耗,通过提高缓存命中提高对请求的效率