首页 存档 技术 查看内容

HAProxy负载均衡与最佳实践(中)

2018-3-30 13:00 |来自: 互联网 269 0

摘要: HAProxy是一个免费和开源的Linux应用,用于负载平衡网络流量。本文将继续讲解如何使用HAProxy进行负载均衡配置Web应用与大型网站。 在上篇中我们提到过,可根据流量的情况与复杂度,选择使用用第4层或第7层这两种负 ...

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安装


  1. 下载 EPEL仓库的PRM包

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

  1. 添加到你服务器中的YUM配置.

rpm -ivh epel-release-6.8.noarch.rpm

  1. 开始安装

yum install haproxy


编译安装


编译会生成与硬件配置的二进制文件,需要安装编译器和开发库。可在单独的计算机上编译二进制文件,然后再将二进制文件复制到服务器。

  1. 安装开发工具

  2. 下载最新版本的haproxy.

wgethttp://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz

  1. 开始解压.

tar xvzf haproxy-1.4.24.tar.gz

  1. 进入haproxy 目录.

cd ./haproxy-1.4.24

  1. 编译HAProxy。我们可以根据机器的硬件进行编译优化。

根据Linux内核版本与CPU优化:

make TARGET=linux2628 ARCH=native

对i386架构兼容式优化:

make TARGET=linux26 ARCH=i386

  1. 安装

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部