Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂; Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy 好。Haproxy 官方网站是http://www . haproxy, org/ .
- HTTP请求
通过URL访问网站使用的协议是HTTP协议,此类请求一般称为HTTP请求。HTTP请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求URL返回状态码,通常正常的状态码为2x x、3x x (如200. 301)如果出现异常会返回4x x、5x x (400.500)。
例如,访问http://www. test. com/a. php?ld=123,就是一个GET请求,如果访问正常,会从服务器的日志中获取200状态码。假如此请求使用POST方式,那么传递给a.php的ld参数依旧是123,但是浏览器的URL将不会显示后面的ld=123字样,因此表单类或者有用户名、密码等内容提交时建议使用POST方式。不管使用哪种方式,最终a. php获取的值是一样的。
2)负载均衡常用调度算法
LVS. Haproxy. Nginx 最常用的调度算法有三种,如下所述。
(1) RR (Round Robin)。 RR算法是最简单最常用的一种算法,即轮询调度。例如,有三个节点A.B. C,第一个用户访问会被指派到节点A,第二个用户访问会被指派到节点B.第三个用户访问会被指派到节点C,第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果。此算法还有一种加权轮询,即根据每个节点的权重轮询分配访问请求。
(2) LC (Least Connections). LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。例如,有三个节点A. B. C,各节点的连接数分别为A:4. B:5. C:6, 此时如果有第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5. C:6;第二个用户请求会继续分配到A上,连接数变为A:6. B:5. C:6; 再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端。由于实际情况下A. B. C的连接数会动态释放,很难会出现一样连接数的情况,因此此算法相比较rr算法有很大改进,是目前用到比较多的一种算法。
(3) SH (Source Hashing). SH