HAProxy是一个免费和开源的Linux应用,用于负载平衡网络流量。本文将继续讲解如何使用HAProxy进行负载均衡配置Web应用与大型网站。 在上篇中我们提到过,可根据流量的情况与复杂度,选择使用用第4层或第7层这两种负载均衡方案,这两种是针对不同场景的方案,所以在对负载均衡设备配置决策之前,需要清楚自己的需求很重要。 4层(TCP)负载 位于网络层数越高,处理请求的速度越快。 需要注意的是,额外的性能增益是以功能和灵活性损失为代价。 我们忽略在硬件企业级负载均衡设备中有的功能,只需专注其核心功能即可。它是通过修改每个分组报头的目地IP和MAC地址部分,然后将其转发到可用的服务器节点之一。 这种机制用很少的处理就可以实现,所以4层负载处理速度最快。 4层负载也有缺点,就是每个服务器都要部署应用组件(冗余部署,不论你是使用PHP,Java,CSS,JavsScript,图片等),并且每个节点上的文件必须是完全相同的版本。否则用户每次访问你的网站时,他看到的就会不一样。 使用4层负载均衡是小型网站或复杂度较低网站的理想选择。 在上一篇文章中,我有提到了Nginx负载均衡,并提到只支持3层负载均衡,也不黑Nginx,它从1.1.5版本开始,也已支持4层和7层负载均衡。 7层(HTTP)负载 使用7层负载平衡,可能需要更多的计算能力来处理,比如较高的CPU和内存,但它为大型和复杂的网站提供的回报是值得付出的。7层负载均衡类型允许我们把每个组件分离到不同的服务器上,而且这些机器亦对用户透明。 另一个好处,是能把大访问量的应用移到独立的服务器上。 例如,比如我们正在运营一个类似于今日头条的网站,但也有社区,允许用户评论。有大量的人发帖讨论,数据库产生大量的写操作,可能会导致网站的其他应用变慢甚至没法访问。 使用7层负载,我们就可以将论坛分拆到独立的服务器或服务器集群,可以方便地扩展。 7层负载均衡通过分析每个分组应用的请求部分,然后将其与一组策略或规则做匹配分发。 对于Web服务器,它分析HTTP请求然后标识目标URI。 再拿新闻和社区示例,如果提交HTTP GET或POST请求从URI:/community开始,流量将被路由到部署社区应用程序的服务器集群,以缓解文章CMS部分的压力。 SSL处理 4层TCP负载平衡的优点是,若是SSL数据包直接扔给给应用服务器,它只是做转发。 使用7层HTTP负载均衡(比如用Nginx)时,因为它无法解析HTTP头 ,不首先处理SSL,强制所有SSL在负载平衡设备上进行处理。 SSL在CPU占用率非常高,此时就会在此处出现瓶颈。最好是在一个应用集群中负载使用,而非集中在一个或两个负载均衡设备上。 当Nginx为负载均衡设备时,在后端执行集群健康检查的唯一方法是看服务器是否超时,如果是就从集群中删除,否则它被认为是健康的,即使它返回PHP代码/500/502错误。 而HAProxy提供了几种分发和健康检查算法来对集群执行检查,Nginx只能使用选择后端服务器的原始循环算法。 安装HAProxy HAProxy已经被内置在Centos或Redhat中。当然也可下载编译安装。 使用EPEL安装
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6.8.noarch.rpm
yum install haproxy 编译安装 编译会生成与硬件配置的二进制文件,需要安装编译器和开发库。可在单独的计算机上编译二进制文件,然后再将二进制文件复制到服务器。
wgethttp://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
tar xvzf haproxy-1.4.24.tar.gz
cd ./haproxy-1.4.24
根据Linux内核版本与CPU优化: make TARGET=linux2628 ARCH=native 对i386架构兼容式优化: make TARGET=linux26 ARCH=i386
|
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|