在CentOS 6上部署HAProxy负载均衡器
说明
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层负载均衡集群。