在CentOS 6上部署HAProxy负载均衡器

时间:2020-01-09 10:38:09  来源:igfitidea点击:

说明

HAProxy是一个免费的开源Linux应用程序,用于负载平衡网络流量。本教程将指导我们将其部署到简单的Web应用程序以及大型,复杂的网站。

负载平衡概念

根据需求的复杂性,可以使用不同的技术以多种方式实现平衡。我们需要识别的第一件事就是使用第4层或者第7层平衡。每个解决方案都是针对不同需求的解决方案,因此在决定负载均衡器配置之前,了解实际需求非常重要。

第4层

我们在网络堆栈层上的级别越高,我们处理请求的速度就越快。需要注意的是,额外的性能提升是以功能和功能损失为代价的。忽略高级企业级负载均衡器中可能发现的功能,我们将无法获得第4层均衡的性能。它通过修改每个数据包标头的目标IP和MAC地址部分以将其转发到可用节点之一来工作。这种方法是通过使用很少的处理来完成的。

第4层Web服务器负载平衡第7层负载平衡

这种平衡方法的最大缺点是节点必须承载应用程序的每个组件(PHP,Java,CSS,Javscript,IMG等),并且每个节点上的应用程序文件必须具有完全相同的版本。否则,用户每次访问网站时的体验都会有所不同。

第4层平衡非常适合小型网站或者复杂程度较低的网站。

7层

第7层平衡可能需要更多的处理能力,但是它为大型和复杂网站提供的回报值得额外的CPU时间。这种类型的平衡使我们可以将每个组件分离到其自己的服务器上,并且对用户透明。另一个好处是能够将我们网站访问频繁的区域移到单独的服务器上。例如,也许我们正在托管一个新闻网站,该网站还具有允许用户讨论事物的论坛。如果足够受欢迎,该论坛可能会导致我们网站的其他区域呆滞或者无法访问。使用第7层,我们可以将论坛划分到其自己的服务器或者服务器组中,以使其扩展。

第7层的工作方式是分析每个数据包的应用程序请求部分,然后将其与一组策略或者规则进行匹配。对于Web服务器,它查看HTTP请求以标识操作和目标URI。使用我们的新闻网站和上面的论坛示例,如果以/ forum开头的HTTP GET或者POST请求被提交,流量将被路由到托管该论坛应用程序的服务器,从而减轻了网站新闻发布部分的压力。

安装HAProxy

HAProxy在CentOS或者Red Hat的默认存储库中不可用。为了使我们能够安装它,我们需要从源代码编译(首选),或者将EPEL存储库添加到我们的服务器,然后使用Yum安装它。

从EPEL安装

  • 下载EPEL存储库RPM。
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • 安装EPEL存储库RPM以将其Yum配置文件添加到服务器。
rpm -ivh epel-release-6.8.noarch.rpm
  • 安装HAProxy
yum install haproxy

从源安装

此方法最适合为硬件优化二进制文件。但是,我们将需要安装编译器和开发库。建议我们在单独的计算机上编译二进制文件,然后将二进制文件移到服务器上。

  • 安装开发工具。
  • 下载最新版本的haproxy。在撰写本文时,版本1.4.24已经发布。
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
  • 解压缩下载的文件。
tar xvzf haproxy-1.4.24.tar.gz
  • 导航到新的haproxy目录。
cd ./haproxy-1.4.24
  • 编译HAProxy。要优化硬件的二进制文件,应指定一些选项。根据运行的内容,使用以下之一。针对Linux内核2.6.28或者更高版本进行编译,并针对安装CPU体系结构优化二进制文件。
make TARGET=linux2628 ARCH=native
  • 针对Linux内核2.6或者更高版本进行编译,并针对i386 CPU体系结构优化二进制文件。
make TARGET=linux26 ARCH=i386

	Install the newly compiled binary.
make install
  • 将haproxy二进制文件复制到/ usr / sbin
cp /usr/local/sbin/haproxy /usr/sbin/
  • 将haproxy的示例初始化文件复制到init目录。
cp /root/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
  • 修改初始化文件的文件权限。
chmod 755 /etc/init.d/haproxy
  • 创建haproxy用户。
useradd --system haproxy
  • 创建一个haproxy / etc目录来存储配置文件。
mkdir -p /etc/haproxy

配置HAProxy

在开始创建负载平衡集群之前,应设置一些基本配置。如果使用Yum安装了HAProxy,则会预设许多默认值。如果从源代码编译,则没有配置文件,我们需要创建一个。

基本配置

  • 打开现有文件或者创建新的haproxy配置文件。
vi /etc/haproxy/haproxy.cfg
  • 配置文件的第一部分用于全局属性。以下是基本配置的示例。
global
        user    haproxy
        group   haproxy
        nbproc  1
用户
本地passwd文件HAProxy中的用户帐户将作为运行
HAProxy将担任的小组
HAProxy将运行的进程数。强烈建议我们将此值设置为1
  • 全局部分下面可以有一个默认部分。这定义了我们组的默认配置。
defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
模式
连接超时前的时间量
客户端超时前的时间量
服务器超时前的时间量
  • 将更改保存到haproxy配置文件。现在,我们准备着手创建第4层和/或者第7层负载均衡集群。