负载均衡的原理与算法介绍

转自:http://sites.google.com/site/star33375249/Home/database/mysql/fu-zai-jun-heng-de-yuan-li-yu-suan-fa-jie-shao

服务器负载均衡算法有很多(持续性的和非持续性的),包括轮循算法、最少连接算法、响应时间算法、散列算法、最少连接失误算法,链路带宽算法等等。此外实际服务器(Real Server)可以被分配不同的加权值来调整被分配的流量。比如性能高的大型服务器可配置较大的加权值,而为性能较低的小型服务器设置较小的加权值。为了避免服务器因过载而崩溃,可为实际服务器指定最大连接阈值来避免该服务器过载。任何服务器可被指定为另一台服务器的备份服务器或溢出服务器,从而进一步保证了应用可用性。

    非持续性算法(Non-Persistent):

一个客户端的不同的请求可能被分配到一个实际服务组中的不同的实服务器上进行处理。主要有轮循算法、最少连接算法、响应速度算法等。

    -轮循算法(Round Robin):

说明:

    每一次来自网络的请求轮流分配给内部中的每台服务器,从1至N然后重新开始。

举例:

    此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况;

    -最少连接算法(Least Connection):

说明:

    客户端的每一次请求服务在服务器停留的时间都可能会有较大的差异,随着工作时间的加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,这样的结果并不会达到真正的负载均衡。最少连接数均衡算法对内部中有负载的每一台服务器都有一个数据记录,记录的内容是当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。

举例:此种均衡算法适合长时间处理的请求服务。

  -响应速度算法(Response Time):

说明:

    负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。

举例:

    此种均衡算法能较好地反映服务器的当前运行状态,但最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。

    持续性算法(Persistent):

 

    从一个特定的客户端发出的请求都被分配到一个实服务组中的同一个实服务器上进行处理。主要包括:

A.基于IP的算法

-Persistent IP (pi):基于用户IP地址来选择服务器。

-Hash IP (hi) :基于用户IP地址的HASH值,来选择服务器

-Consistent Hash IP (chi):

B.基于报头/请求的算法

-Hash Header (hh):基于用户请求报中HTTP报头来选择服务器;

-Persistent Hostname (ph) :基于用户请求报中HTTP报头的Hostname的HASH值,来选择服务器;

-Persistent URL (pu):基于对URI Tag 和值的静态对应关系来选择服务器。

-SSL Session ID (sslsid):基于SSL会话ID来选择服务器。

C.基于Cookie的算法

-Persistent Cookie (pc) : 选择服务器基于用户请求包用Cookie Name / Value 的静态对应关系;

-Hash Cookie (hc) :选择服务器基于用户请求包用Cookie Name / Value 的Hash 值对应关系;

-Insert Cookie (ic) :选择服务器基于负载均衡器 向服务器响应包中插入Cookie;

-Re-write Cookie (rc):选择服务器基于负载均衡器向服务器响应包中重写Cookie值。

(必须为重写指定Cookie值的偏移量)

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据