千万级高并发负载均衡HAProxy安装及使用示例


1.HAProxy简介

HAProxy是一个开源的,高性能的,基于TCP(四层),HTTP(七层)应用的负载均衡软件。那HAproxy作为一个专业的负载均衡软件,它的优点如下:

.可靠性和稳定性非常好,可以与硬件级F5负载均衡设备相媲美

.最高可同时维护40000-50000个并发连接,单位时间内最大请求数为20000个,最大数据处理能力可达10Gbps

.支持多于8种负载均衡算法,同时支持会话保持

.支持虚拟主机功能

.从1.3版本后支持拒绝连接,全透明代理,这些功能是其它的负载均衡所不具备的

.HAPRoxy拥有一个强大的服务器状态监控页面,通过此页面可实时了解系统状况

.HAproxy拥有功能强大的ACL支持,给使用上带来很大方便

HAProxy是借助于操作系统的技术特性来实现性能最大化的,因此,在使用haproxy时对操作系统的性能调优是非常重要的

2.安装

前往HAProxy官网下载地址http://www.haproxy.org/

官网目前最新稳定版1.7.8版本下载地址

http://www.haproxy.org/download/1.7/src/haproxy-1.7.8.tar.gz

[html]  view plain  copy
  1. tar zxvf haproxy-1.7.8.tar.gz  
  2. cd haproxy-1.7.8  
  3. make TARGET=linux26 PREFIX=/usr/local/haproxy  
  4. make install PREFIX=/usr/local/haproxy  
  5. mkdir /usr/local/haproxy/conf  
  6. cp examples/option-http_proxy.cfg /usr/local/haproxy/haproxy.cfg  

3.为了大家能够看懂整个配置文件,我将贴出我的配置文件内容,里面会有注释帮助大家理解

[html]  view plain  copy
  1. #  
  2. # demo config for Proxy mode  
  3. #   
  4.   
  5. global  
  6.         maxconn         20000  
  7.     #设定HAProxy进程可接受的最大并发数  
  8.     ulimit-n    41000  
  9.     #linux命令行选项,等同于上参数  
  10.         log             127.0.0.1 local0  
  11.     #全局的日志中配置,local0 是日志设备 info(err,warnig,minfo,debug)为日志级别,使用rsyslog  
  12.         uid             200  
  13.         gid             200  
  14.     #用户和组 ,可以用uid,gid代替  
  15.         chroot          /var/empty  
  16.     nbproc      1  
  17.     #HAProxy启动时可创建的进程数,配合daemon参数使用,默认只启动一个进程,该值应小于cpu核数。  
  18.         daemon  
  19.     #进程后台运行,(推荐模式)  
  20.   
  21. defaults  
  22.     mode        http  
  23.     #实例的默认运行模式  
  24.     retries     3  
  25.     #连接后端服务器的失败重试次数  
  26.     timeout     connect 10s  
  27.     #连接服务器的最长等待时间,默认单位为毫秒,可使用其它时间单位  
  28.     timeout     client  20s  
  29.     #连接客户端发送数据时最长等待时间,默认单位为毫秒,可使用其它时间单位  
  30.     timeout     server  30s  
  31.     #服务器回应给客户端数据发送的最长等待时间,默认单位为毫秒,可使用其它时间单位  
  32.     timeout     check   5s  
  33.     #对后端服务器的检查超时时间,默认单位为毫秒,可使用其它时间单位  
  34.   
  35. listen  admin_stats  
  36.     bind        *:9188  
  37.     #设置监控页面的访问地址,该地址表示为监听本机所有地址的9188端口  
  38.     mode        http  
  39.     log     global  
  40.     #使用全局日志  
  41.     stats       refresh 30s  
  42.     #监控页面自动刷新时间  
  43.     stats       uri /haproxy-status  
  44.     #uri的访问后缀  
  45.     stats       realm welcome login\ Haproxy  
  46.     #文本提示信息  
  47.     stats       auth    admin:admin~!@  
  48.     #统计页面的用户名和地址,每行一个  
  49.     stats       hide-version  
  50.     #隐藏统计页面的HAProxy的版本信息  
  51.     stats       admin if TRUE  
  52.     #可手工启动或禁用后端真实服务器,仅在1.4.9版本后有效  
  53.   
  54.   
  55. frontend test-proxy  
  56.     bind        *:80  
  57.     #定义监听地址  
  58.         mode            http  
  59.         log             global  
  60.         option          httplog  
  61.         #启用日志记录  
  62.     option      forwardfor  
  63.     #获取客户端真实ip。通过日志“X-Forwarded-For”查看  
  64.     option      httpclose  
  65.     #HAProxy在完成一次请教请求连接后,将主动关闭该连接,对性能非常有帮助  
  66.         option          dontlognull  
  67.         option          nolinger  
  68.         option          http_proxy  
  69.         maxconn         8000  
  70.         timeout client  30s  
  71.   
  72.     # layer3: Valid users  
  73. #   acl allow_host src 192.168.200.150/32  
  74.     acl allow_host src 192.168.10.0/24  
  75.     #acl 控制,运行192.168.10.0/24网段的访问请求  
  76.     #acl使用方法如下  
  77.     #acl 自定义acl名称 acl方法 -i [ 匹配的路径或文件 ]  
  78. #   acl allow_host src 0.0.0.0/24  
  79.     http-request deny if !allow_host  
  80.     #拒绝连接请求除allow_host外  
  81.   
  82.     # layer7: prevent private network relaying  
  83. #   acl forbidden_dst url_ip 192.168.0.0/24  
  84. #   acl forbidden_dst url_ip 172.16.0.0/12  
  85.     acl forbidden_dst url_ip 192.168.20.0/24  
  86.     http-request deny if forbidden_dst  
  87.   
  88.     default_backend test-proxy-srv  
  89.   
  90.   
  91. backend test-proxy-srv  
  92.     mode            http  
  93.     timeout connect 5s  
  94.     timeout server  5s  
  95.     retries         2  
  96.     option      redispatch  
  97.     #应用于cookie保持的环境  
  98.     option      abortonclose  
  99.     #自动结束长时间连接  
  100.     option          nolinger  
  101.     option          http_proxy  
  102. #   option      httpchk GET /index.php  
  103.     balance     roundrobin  
  104.     cookie      SERVERID  
  105.     server web1 192.168.10.101:8080 cookie  server1 weight 6 check inter 2000 rise 2 fall 3  
  106.     #后端服务器真实地址  
  107.     server web2 192.168.10.101:8888 cookie  server2 weight 6 check inter 2000 rise 2 fall 3  
  108.   
  109.   
  110.     # layer7: Only GET method is valid  
  111.     acl valid_method        method GET  
  112.     acl valid_method    method POST  
  113.     http-request deny if !valid_method  
  114.   
  115.     # layer7: protect bad reply  
  116.     http-response deny if { res.hdr(content-type) audio/mp3 }  

4.启动

haproxy的启动在安装目录下的sbin下

haproxy -f /usr/local/haproxy.cfg

5.启动时遇到常见的错误

in multi-process mode, stats will be limited to process assigned to the current request.

listen需要运行在单个进程内,需要指定默认进程,如果想解决此问题,可将全局参数nbproc设置为1

Proxy 'admin_stats': stats admin will not work correctly in multi-process mode.
[./haproxy.main()] FD limit (16384) too low for maxconn=20000/maxsock=40014. Please raise 'ulimit-n' to 40014 or more to avoid any trouble.

请设置参数ulimit-n 的值等于maxconn的2倍


6.到此haproxy的简单负载均衡配置就设置完毕了,可通过ACL来控制7层的请求控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值