您的位置:首页 > 其它

HAproxy研究与应用(千万级并发、负载均衡)

2013-08-11 19:39 344 查看
博客搬家至
油皮8


一、Haproxy介绍

         HAProxy提供高可用性负载均衡以及基于TCP和HTTP应用的代理支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。 

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

        其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy甚至还支持 Mysql的均衡负载。如果说在功能上,能以proxy反向代理方式实现
WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke等。 但要明确一点的,Haproxy并不是
Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。  




二、测试环境准备

1)、准备域名:www.123p6.cn,(下称域A)

2)、三台服务器,假设这三台服务器外网都能访问

192.168.1.100(linux) haproxy

192.168.1.101(XP )    WEB域A负载1

192.168.1.102(XP )    WEB域A负载2

3)、在192.168.1.101、192.168.1.102两台机器中搭建域A服务器环境

4)、域名解析、绑定

修改192.168.1.101、192.168.1.102的HOSTS文件,在C:\WINDOWS\system32\drivers\etc下,用记事本打开hosts文件

在127.0.0.1 localhost一行的下面添加:

192.168.1.101   www.123p6.cn
192.168.1.102   www.123p6.cn

5)、HAproxy下载,最新版本的为1.4.24

# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz


三、HAproxy的安装

 

# tar zxvf haproxy-1.4.24.tar.gz
# cd haproxy-1.4.24
# make TARGET=linux26 PREFIX=/usr/local/haproxy #TARGET是内核版本,2.6就写作26
# make install PREFIX=/usr/local/haproxy


四、编写haproxy.cfg配置文件

# vi /usr/local/haproxy/haproxy.cfg
global
maxconn 51200 #限制单个进程的最大连接数
chroot /usr/local/haproxy
uid 99 #所属运行用户,默认99为nobody
gid 99 #所属运行用户组,默认99为nobody
daemon #让进程作为守护进程在后台运行
quiet
nbproc 2 #指定作为守护进程运行时的进程数,推荐设置为与CPU核心数相同
pidfile //usr/local/haproxy/haproxy.pid

defaults

mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
#retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
#timeout check 2000 #=心跳检测超时
log 127.0.0.1 local0 err #[err warning info debug]
balance roundrobin                     #负载均衡算法
#option  httplog                        #日志类别,采用httplog
#option  httpclose   #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
#option  dontlognull
#option  forwardfor  #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

listen www.123p6.cn 0.0.0.0:80 #运行的端口及主机名
mode http #使用http的7层模式
balance roundrobin #设置服务器负载分配算法
option httpclose
option forwardfor
option httpchk GET /keepalive.html #健康检测页面
server webapp1 192.168.1.101:80 weight 1 check inter 2000 rise 2 fall 3
server webapp2 192.168.1.102:80 weight 1 check inter 2000 rise 2 fall 3
# weight - 调节服务器的负重
# check - 允许对该服务器进行健康检查
# inter - 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise - 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall - 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn - 指定可被发送到该服务器的最大并发连接数

listen localhost 0.0.0.0:8888 #监控页面的端口
mode http
transparent
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy-stats #监控页面的访问地址
stats realm Haproxy \ statistic #统计页面密码框上提示文本
stats auth haproxyadmin:haproxypass #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息

延伸阅读及参考资料:

 

1、HAproxy官方网站:http://haproxy.1wt.eu/

2、HAproxy监测页面及参数简释

3、HAproxy负载均衡保持客户端和服务器端session亲缘性的三种方式

4、MySQL从库集群方案之HAproxy

5、基于域名负载均衡HAproxy配置

6、HAproxy+keepalived实现高可用性负载均衡

友情链接:

PHP视频教程

博客搬家至
油皮8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: