【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,即统计配置项,这个比较简单。

 

posted @ 2019-04-16 20:13  wind_land  阅读(486)  评论(0)    收藏  举报