第十二章 Haproxy搭建Web群集
一、各类负载均衡器对比
1、LVS:
(1)优点
①抗负载能力强
②工作在第4层,仅做分发,没有流量产生
③工作稳定,自身有完整的热备方案(keepalived或heartbeat)
④应用范围广,可以对所有应用做负载均衡
⑤配置性比较低,出错率低
(2)缺点
①不支持正则处理,不能做动静分离
②如果网站应用比较庞大,LVS/DR+Keepalived就比较负载
2、Nginx:
(1)优点
①工作在第七层,可针对http应用做一二写分流策略。如针对域名、目录结构等。它的正则比Haproxy更为强大和灵活
②对于网络依赖小,理论上能ping通就能进行负载功能
③安装和配置简单,测试比较方便
④可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量
⑤可通过端口检测服务器内部故障,并根据网页返回码状态、超时等把返回错误请求转到其他节点
⑥除了负载均衡,同时也是功能强大的Web服务器
⑦可作为Web反向加速缓存
(2)缺点
①不支持url来检测
②仅支持http和email的调度
③session保持,cookie的引导能力相对欠缺
3、Haproxy:
(1)优点
①支持虚拟主机,可工作在4/7层(支持多网段)
②能够补充nginx的一些缺点,比如session保持,cookie的引导工作
③支持url检测后端的服务器
④效率及并发处理上优于nginx
⑤可以对mysql读进行负载均衡,对后端的mysql节点进行检测和负载均衡(mysql服务器超过10台后不如LVS)
⑥算法较多:rr、wrr、lc、wlc
1)source:根据请求源IP,跟nginx的ip_hash机制类似,可作为解决session问题的一种方法
2)ri:根据请求的URL
3)ri_param:根据请求的URL参数balanc url_param requires an URL parameter name
4)hdr(name):表示根据HTTP请求头来锁定每一次HTTP请求
5)rdp-cookie(name):根据cookie(name)来锁定并哈希每一次TCP请求二、案例实施
1、配置节点服务器(过程参照nginx安装配置)
2、编译安装Haproxy
(1)yum install -y pcre-devel bzip2-devel gcc gcc-c++
(2)tar -zxf haproxy-1.4.24.tar.gz
(3)cd haproxy-1.4.24
(4)make TARGET=linux26
(5)make install
3、Haproxy配置
(1)建立配置文件
①mkdir /etc/haproxy
②cp examples/haproxy.cfg /etc/haproxy
③mkdir -p /usr/share/haproxy
④cp examples/haproxy.init /etc/init.d/haproxy
⑤chmod +x /etc/init.d/haproxy
⑥ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
(2)修改配置文件
global
log 127.0.0.1 local0 #配置日志记录,local0为日志设备,默认存放到系统日志
log 127.0.0.1 local1 notice #notice为日志级别,通常有24个级别
#log loghost local0 info
maxconn 4096 #最大连接数
chroot /usr/share/haproxy
uid 99 #用户uid
gid 99 #用户gid
daemon
#debug
#quiet
defaults
log global #定义日志为global配置中的日志定义
mode http #模式为http
option httplog #采用http日志格式记录日志
option dontlognull #不记录健康检查的日志信息
retries 3 #检查节点服务器失败次数
# redispatch #如果后端有服务器宕机,强制切换到正常服务器
maxconn 2000 #最大连接数
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端超时时间
srvtimeout 50000 #服务器超时时间
listen web1 0.0.0.0:80
option httpchk /index.html #检查服务器的index.html文件
balance roundrobin #算法
# cookie SERVERID insert indirect nocache
server inst1 192.168.1.21:80 check inter 2000 fall 3 #定义在线节点
server inst2 192.168.1.22:80 check inter 2000 fall 3 #定义备份节点
4、优化
参数 | 说明 | 优化建议 |
---|---|---|
maxconn | 最大连接数 | 根据应用实际使用情况调整,推荐使用10240 |
daemon | 守护进程模式 | 生产环境建议使用守护进程模式启动 |
hbproc | 负载均衡的并发进程数 | 建议与当前服务器CPU核数相等或两倍 |
retries | 重试次数 | 主要用于集群节点检查,如节点多且并发量大可设置为2-3次;节点少可设置5-6次 |
option http-server-close | 主动关闭http请求 | 建议生产环境中使用,避免由于timeout时间过长导致http连接堆积 |
timeout http-keep-alive | 长连接超时时间 | 设置长连接超时时间,具体可参考应用自身特点,可设置为10s |
timeout http-request | http请求超时时间 | 建议设置为5-10s,增加http连接释放速度 |
timeout client | 客户端超时时间 | 如果访问量过大,节点相应过慢,可将时间设置短些,建议1分钟左右即可 |