HAProxy简介及使用-适合mysql读负载均衡

转载:http://www.cnblogs.com/shanyou/archive/2012/10/16/2726768.html
官网: http://haproxy.1wt.eu/
安装参考:
相关资料: http://bbs.chinaunix.net/tree/index_296_1/

简介

HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

(1)免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与硬件级的F5相媲美;

(2)根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个数值作为软件级负载均衡器是相当惊人的;官方测试的性能情况如下图。

haxingneng

(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

(5)HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;

(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

(7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

hajiagou

在功能上,能以proxy反向代理方式实现WEB均衡负载,这样的产品有很多。包括lvs,Nginx,ApacheProxy,lighttpd等。

国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统

hataobao

 

http://blog.chinaunix.net/uid/12924167/frmd/149251.html

http://www.andreagallazzi.com/2011/09/exchange-2010-haproxy-free-layer-4.html

http://www.stevieg.org/e2010haproxy/

http://pastebin.com/fssNNkqf

http://www.rritw.com/a/qitazonghe/IBM_MQ___TLQ/20120730/153186.html

http://www.cnblogs.com/balaamwe/tag/Haproxy/

HAproxy均衡负载部署和配置文件详解

利用Haproxy实现http和TCP反向代理和负载均衡(入门和技术验证)

[Erlang 0091] 另辟蹊径构建RabbitMQ集群

http://blog.loadbalancer.org/load-balancing-exchange-2010-cas-array-with-haproxy/

http://blog.exceliance.fr/2012/11/07/websockets-load-balancing-with-haproxy/

使用

 #./haproxy –help //haproxy相关命令参数介绍.
   haproxy  -f    [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p ] [-s] [-l] [-dk]
       [-ds] [-de] [-dp] [-db] [-m ] [{-sf|-st} pidlist...]
       -d     前台,debug模式
       -D     daemon模式启动
       -q     安静模式,不输出信息
       -V     详细模式
       -c     对配置文件进行语法检查
       -s     显示统计数据
       -l     显示详细统计数据
       -dk    不使用kqueue
       -ds    不使用speculative epoll
       -de    不使用epoll
       -dp    不使用poll
       -db    禁用后台模式,程序跑在前台
       -sf 
       程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
       -st 
       程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后

安装

wget http://haproxy.1wt.eu/download/1.3/src/haproxy-xx.tar.gz
tar zxvf haproxy-1.3.14.2.tar.gz
# prefix安装路径
make TARGET=linux26 prefix=/usr/local/haproxy install
make install PREFIX=/usr/local/haproxy

 创建配置

cd /usr/local/haproxy
mkdir conf
cd conf

# vi haproxy.cfg
  1. --------------------------------------------------------------------------------------------------------------------
  2. global
  3.         maxconn 5120
  4.         chroot /usr/local/haproxy
  5.         uid 99
  6.         gid 99
  7.         daemon
  8.        quiet
  9.         nbproc  2  #通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会短很多,性能自然就能提高不少
  10.         #pidfile /var/run/haproxy-private.pid
  11. defaults
  12.         log     global
  13.         mode    http
  14.         option  httplog
  15.         option  dontlognull
  16.         log 127.0.0.1 local3
  17.         retries 3
  18.         option redispatch
  19.         maxconn 2000
  20.         contimeout      5000
  21.         clitimeout      50000
  22.         srvtimeout      50000
  23. listen webfarm 0.0.0.0:80
  24.        mode http
  25.        stats uri /haproxy-stats     #监控haproxy状态
  26.        stats realm Haproxy\ statistics
  27.        stats auth netseek:52netseek  #设置状态监控的用户名为netseek密码为52netseek
  28.        balance roundrobin     #负载均衡
  29. [url=javascript:;][u][b][color=#656d77]算法[/color][/b][/u][/url]
  30.        cookie SERVERID insert indirect
  31.       option httpclose   #
  32.        option forwardfor  #apache日志转发功能
  33.        option httpchk HEAD /check.txt HTTP/1.0  #健康检测
  34. server app_bbs1 192.168.169.117:80 cookie app1inst1 check inter 2000 rise 2 fall 5
  35. server app_bbs2 192.168.169.118:80 cookie app1inst2 check inter 2000 rise 2 fall 5
复制代码
syslog.conf里加一行
local3.*         /var/log/haproxy.log
  
# touch /var/log/haproxy.log
# chown haproxy:haproxy /var/log/haproxy.log
# chmod u+x /var/log/haproxy.log
  
# tail –f /var/log/harpoxy.log 监控日志
# ./haproxy -f haproxy.cfg 启动服务.
   监控状态图示http://192.168.169.137/haproxy-stats ,输入用户名密码查看状态。
   
后端
apache
日志处理
配置httpd.conf
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b " combined
        CustomLog /var/log/httpd/access_log combined
虚拟主机不记录检测日志:
SetEnvIf Request_URI "^/check\.txt$" dontlog
    LogLevel warn
    ErrorLog /var/log/httpd/vhost_error.log
    CustomLog /var/log/httpd/vhost_access.log combined env=!dontlog



请使用浏览器的分享功能分享到微信等