祸兮福之所倚,福兮祸之所伏
分类: 系统运维
2017-01-29 20:41:43
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
HAProxy是一款优秀的开源的提供高可用负载均衡和反向代理的软件,跟nginx一样能提供七层的代理和负载均衡服务。
在x86或x86_64平台上,要获取最好性能的负载均衡器,建议按顺序考虑以下方案。
Linux 2.6.32及之后版本上运行HAProxy 1.4-;
打了epoll补丁的Linux 2.4上运行HAProxy 1.4-;
FreeBSD上运行HAProxy 1.4-;
Solaris 10上运行HAProxy 1.4-;
总的来说haproxy能支持七层和四层代理,可以作为一般中小型系统的前端web代理(七层,主要代理web服务),又可以作为四层代理,我们系统使用haproxy作为mycat数据库代理,上线运行一年多还未出现关于haproxy的问题。
安装haproxy (centos6平台)
直接使用yum install haproxy 安装
haproxy主要在于配置文件,默认位置 /etc/haproxy/haproxy.cfg
haproxy有多种配置方式,本次主要使用负载均衡类配置
关键标签global 这是全局变量配置,一些常用配置
介绍自己的配置,较简单,global和default部分不再写
开启haproxy统计功能,此功能能显示当前所有状态,包括后端应用状态,连接数,负载状态等
listen admin_stats
bind 0.0.0.0:1080
mode http
option httplog
maxconn 10
stats refresh 20s
stats uri /stats
stats realm XingCloud\ Haproxy #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
stats hide-version
#一个四层负载均衡实例,对于mysql进行负载
listen globalmysql # 实例名,本实例是对mysql进行负载
bind 0.0.0.0:3307 #实例监控端口
balance roundrobin #负载策略,轮询
mode tcp #使用tcp协议,还有http协议
option tcpka # 使用的健康状态检测机制
maxconn 4096 #本实例最大连接数
server mysql1 10.0.0.101:3306 check inter 1000 rise 2 fall 3 #后端真实应用地址和健康检测策略,可以拥有多个
server mysql2 10.0.0.120:3306 check inter 1000 rise 2 fall 3
#一个7层负载实例
listen myweb
band 0.0.0.0:80
haproxy是软负载均衡中出场率较高的软件,极强的负载能力,功能也非常强大,支持虚拟主机等功能。