Web集群调度器
目前常见的Web集群调度器为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些铲平,比如绿盟等。
Haproxy
LVS在企业中抗负载能力很强,但是存在不足,它不支持正则处理,不能实现动静分离并且对于大型网站而言,LVS的实施配置很复杂,维护成本比较高,但是Haproxy可提供高可用、负载均衡以及基于TCP和HTTP应用的代理软件,适用于负载打的Web站点,运行在硬件上可支持大量的连接请求。
Haproxy调度算法
- RR(Round Robin):轮询调度,轮询分配各节点用户访问,可以实现负载均衡
- LC(Least Connections):最小连接数算法,更具后端的节点连接数大小动态分配前端请求
- SH(Source Hashing):基于访问调度算法,用于一些在服务器端由Session会话记录时,可以基于来源的ip、Cookie等做集群调度,可以实现会话保持,但当IP访问量非常大时会引起负载不均衡,部分节点访问量大,影响业务
Haproxy部署
[root@haproxy opt]
[root@haproxy opt]
[root@haproxy haproxy-1.5.19]
[root@haproxy haproxy-1.5.19]
install -d "/usr/local/sbin"
install haproxy "/usr/local/sbin"
install -d "/usr/local/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1
install -d "/usr/local/doc/haproxy"
for x in configuration architecture haproxy-en haproxy-fr; do \
install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \
done
[root@haproxy haproxy-1.5.19]
[root@haproxy haproxy-1.5.19]
[root@haproxy haproxy-1.5.19]
[root@haproxy haproxy]
global
log 127.0.0.1 local0 info
log 127.0.0.1 local1 notice
maxconn 4096 //最大连接数
uid 99 //用户UID
gid 99 //用户GID
daemon //守护进程模式
defaults
log global //定义日志为global配置中的日志
mode http //模式为http
option httplog //采用http日志格式记录
option dontlognull //不记录健康检查日志信息
retries 3 //检查节点服务器失败次数,连续失败了三次,则认为不可用
redispatch //服务器负载很高时,自动结束当前队列处理比较久的连接
maxconn 2000 //最大连接数
contimeout 5000 //连接超时时间
clitimeout 50000 //客户端超时时间
srvtimeout 50000 //服务器超时时间
listen webcluster 0.0.0.0:80
option httpchk GET /test.html //检查服务器html文件
balance roundrobin //负载均衡调度算法使用轮询
server inst1 192.168.20.22:80 cookie app1inst1 check inter 2000 fall 3 //定义节点
server inst1 192.168.20.33:80 cookie app1inst2 check inter 2000 fall 3
[root@haproxy haproxy]
[root@haproxy haproxy]
[root@haproxy init.d]
[root@haproxy init.d]
[root@haproxy init.d]
[root@haproxy ~]
Starting haproxy (via systemctl): [ 确定 ]
[root@Nginx-1 opt]
[root@Nginx-1 opt]
[root@Nginx-1 opt]
[root@Nginx-1 opt]
[root@Nginx-1 nginx-1.12.2]
[root@Nginx-1 nginx-1.12.2]
[root@Nginx-1 nginx-1.12.2]
[root@Nginx-1 nginx-1.12.2]
[root@Nginx-1 nginx-1.12.2]
[root@Nginx-2 opt]
[root@Nginx-2 opt]
[root@Nginx-2 opt]
[root@Nginx-2 opt]
[root@Nginx-2 nginx-1.12.2]
[root@Nginx-2 nginx-1.12.2]
[root@Nginx-2 nginx-1.12.2]
[root@Nginx-2 nginx-1.12.2]
[root@Nginx-2 nginx-1.12.2]
[root@Nginx-2 nginx-1.12.2]
|