简介:HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
项目需求:由于网站规模的扩大,访问量的也越来越多,原来的一台机器提供网站服务,出现故障后就中断了网站服务,造成经济损失,现在老板发话要解决单点故障,于是我就找了些资料,对比了下Haproxy、LVS、Nginx,是各有各的优点,我们的网站每天的PV也不是很大,就先在虚拟机上做了下测试,仅做Haproxy部分七层负载均衡,生产环境需要Haproxy+keepalived来实现负载均衡器高可用性。
先了解下HAProxy常用的算法:
roundrobin #表示简单的轮询,每个负载均衡器基本都具备的
static-rr #表示根据权重
leastconn #表示最少连接者先处理
source #表示根据请求源IP, haprox按照客户端的IP地址所有请求都保持在一个服务器上
ri #表示根据请求的URI
rl_param #表示根据请求的URl参数'balance url_param' requires an URL parameter name
hdr(name) #表示根据HTTP请求头来锁定每一次HTTP请求
rdp-cookie(name) #表示根据据cookie(name)来锁定并哈希每一次TCP请求
拓扑图:
配置如下:
安装haproxy
1 2 3 4 |
|
#进入安装目录创建配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
说明:用server来设置后端服务器
第二段:haproxy自己的一个名称,将在日志中显示
第三段:后端IP和端口
第四段:权重值,权重值越大,分配的任务几率越高
第五段:健康检测,inter 500健康检测间隔是500毫秒
最后一段:检测多少次,认为服务器是不可用的
启动haproxy
1 |
|
重启haproxy
1 |
|
写一个简单的haproxy服务脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
#设置开机启动
1 2 |
|
http://192.168.1.10:8080/haproxy-status
配置haproxy日志输出
1 2 3 4 |
|
后端web服务器配置相同
1 2 3 |
|
测试:访问http://192.168.1.10,按F5一直刷新会显示轮训显示web1和web2,模拟web1故障down机,haproxy页面显示的状态会变成DOWN,只有web2提供服务,当web1恢复后会自动加入集群中。