您的位置:首页 > 运维架构 > 网站架构

构建开源负载均衡架构平台之haproxy

2011-02-17 13:08 246 查看
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。


Haproxy包括以下一些特征:
1. 根据静态分配的cookie 分配HTTP请求
2. 分配负载到各个服务器,同时保证服务器通过使用HTTP Cookie实现连接保持;
3. 当主服务器宕机时切换到备份服务器;允许特殊端口的服务监控;
4. 做维护时通过热配置可以保证业务的连续性,更加人性化;
5. 添加/修改/删除HTTP Request和Response 头;
6. 通过特定表达式Block HTTP请求;
7. 带有用户验证的详细的HTML监控报告;



一、安装Haproxy
从官方网站:http://www.haproxy.org
下载最新版本。
# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

# tar zcvf haproxy-1.3.20.tar.gz
# cd haproxy-1.3.20
# make TARGET=linux26 PREFIX=/usr/local/haprpxy
# make install PREFIX=/usr/local/haproxy
二、安装完毕后,进入安装目录创建配置文件
# cd /usr/local/haproxy
# vi haproxy.cfg
global
log 127.0.0.1 local0 debug
maxconn 1024 #每个进程可用的最大连接数
ulimit-n 8000
daemon #使HAProxy进程进入后台运行
nbproc 1#创建1个进程进入deamon模式运行
defaults
log global
mode http
option httplog #定制日志格式
option dontlognull
maxconn 10
#5 seconds for connection to establish on a server
contimeout 5000
#50 seconds for the time we accept to wait for data from the client
clitimeout 50000
#50 seconds for the time we accept to wait for data from the server
srvtimeout 50000
listen boss_web 0.0.0.0:8811
mode http
log global
log 10.1.252.153 local3
maxconn 1000 #每个进程可用的最大连接数
option forwardfor
capture request header Cookie len 200
cookie HAPROXYID insert nocache indirect
balance roundrobin
#option httpchk GET /pboss/check.html#允许用http协议检查server 的健康
server 10_1_252_92_7879 10.1.252.92:7879 check inter 10000 cookie 10_1_252_92_7879
server 10_1_252_153_7989 10.1.252.153:7989 check inter 10000 cookie 10_1_252_153_7989
listen manager 0.0.0.0:8844 #监控管理平台
mode http
balance roundrobin #负载算法,这里采用默认
stats uri /status #监控平台的服务名
stats realm Global/ statistics
stats auth admin:admin #登陆监控平台的验证信息
~启动服务:

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
重启服务:

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid` (没有换行)
停止服务:

# killall haproxy
三、配置日志
# vim /etc/syslog.conf
在最下边增加

local3.* /var/log/haproxy.log

local0.* /var/log/haproxy.log

重启核心日志服务使配置起效

# service syslog restart
然后就可查看日志了

# tail –f /var/log/harpoxy.log
四、登陆监控平台可以查看到当前负载信息及每个服务器的状态http://10.1.252.153:8844/status



五、通过统一接入地址(proxy)访问应用程序 http://10.1.252.153:8811/pboss

六、模拟server1宕机

将server1 10.1.252.92:7879服务停掉,并登陆监控平台查看status是否为down.

重新登陆http://10.1.252.153:8811/pboss
登陆成功并从可以观察到服务的负载由server1转移到另一台服务器server2上。

七、模拟server2宕机

将server2 10.1.252.153:7879服务停掉,并登陆监控平台查看status是否为down.

重新登陆http://10.1.252.153:8811/pboss
登陆成功并从可以观察到服务的负载由server2转移到服务器server1上。

以上只是利用haproxy一小部分功能,但这些已经可以实现负载的目的,今天就先了解到这里。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: