HAproxy研究与应用(千万级并发、负载均衡)
博客搬家至油皮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 #
balance roundrobin #负载均衡算法
#optionhttplog #日志类别,采用httplog
#optionhttpclose #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
#optiondontlognull
#optionforwardfor#如果后端服务器需要获得客户端真实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
页:
[1]