【haproxy】haproxy做负载均衡
参考链接:
https://www.cnblogs.com/nineep/p/6795780.html haproxy,nginx,LVS对比,以及适用场景
https://www.cnblogs.com/ilanni/p/4750081.html haproxy 配置 实践
http://www.ttlsa.com/linux/haproxy-study-tutorial/ haproxy 配置详细介绍
https://www.cnblogs.com/Dicky-Zhang/p/6285058.html 虚拟主机示例
haproxy可以实现负载均衡,支持4层和7层
nginx 只支持7层,不过7层方面比haproxy的功能强大,且支撑的负载更大,更稳定,可以只是上W的并发, 通常情况下haproxy够用,但是如果量比较大则用nginx
如果需要四层,则只能haproxy
不过如果访问量再大一些,就需要用LVS,LVS性能更强大,稳定性更好。
7层的,可以设定规则,把符合某种规则的(eg,如果请求的是img,css,js等,则转发到对应的机器上)请求按照设定的规则转发
4层的,则支持不同的负载均衡算法,也支持TOA,即开启tcp option,把真正的客户端ip写入tcp option中。
haproxy的配置文件说明:
haproxy.cfg中包含全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。
global:
是haproxy的全局设定,比较简单,需要说明的是,最好是daemon工作于后台,等同于启动的-D选项
node:定义当前节点名称,主要是用于多个haproxy的高可用场景,多节点之间共享一个ip,即传统的haproxy+keepalived方式
另外是一些性能参数,会涉及haproxy和OS的内核,也比较简单。
defaults [name]:
为其他段提供默认参数,可以有多个,每个需要设置不同的名字
frontend [name]:
定义监听的端口,该监听下有哪些ACL规则,ACL规则下转发给哪些后端server即backend
这个定义主要是为了实现虚拟主机,即受到http请求后,把bbs,blog,mall等转发到不同的http服务器集群上,这些集群会有自己的负载均衡。
bind *:80
acl [acl_name] 规则函数 规则预期 即当该端口进来的连接,使用规则函数的结果 = 规则预期
use_backend [backend_name] if [acl_name] 即当满足acl_name时,转发到backend_name这个后端服务器组
default_backend [backend_name] 指定默认的后端服务器组,即当都不满足上面的规则时, 默认转发到该backend
backend 【name】
定义后端服务器组,可以有很多个,每个backend有不用的名字
blance 【blance_name】负载均衡算法,有source,roundrobin,static-rr,leastconn(即WLC),uri,url_param,hdr(<name>),rdp-cookie(<name>)
前面几个是针对TCP的,后面几个是针对http的
server 【server_name】 ip:port max_conn 【max_conn】 weight【weight】 check ...
server的配置比较简单, 一看便知
listen 【name】
该段的作用是,明确指定一个frontend 和 backend的规则,frontend和backend,都必须在这个段内明确指出
bind *:8090 指定监听的端口
mode http/tcp 4层 or 7层
blance xx 负载均衡算法
server 【server_name】 ip:port max_conn 【max_conn】 weight 【weight】 check...
另外会有一些stats,即统计配置项,这个比较简单。

浙公网安备 33010602011771号