上节 我们主要讲解了HAProxy的基本知识,以及事关HAProxy的重要资源。我们知道HAProxy是众多负载均衡器中非常重要的一个,而本系列文章就是围绕其使用、管理以及原理来展开。在深度学习之前,我们先安装HAProxy,运行起来,直观感受下它的魅力。
源代码下载
使用上文提供的下载链接,下载到本地服务器上:
1 | $ wget http://www.haproxy.org/download/2.8/src/haproxy-2.8.3.tar.gz |
编译
HAProxy的编译相当简单,不用configure、不用cmake,系统给我们提供了Makefile文件,按照指引设置make参数即可编译成功。
我们先忽略掉所有编译选项,按照下面的方法编译一个版本出来测试。至于具体选项的特定含义,以及其他高级选项,后续再慢慢道来。
先安装依赖包:
1 | $ sudo apt-get install libpcre3-dev -y |
然后编译代码:
1 | $ tar -zxvf haproxy-2.8.3.tar.gz |
无报错即成功,在当前目录下会生成我们需要的可执行程序haproxy。
七层负载均衡测试方案
HAProxy支持四层和七层负载均衡,我们先做个简单的七层负载测试。测试方案如下:
- 我们在同一台服务器上部署两个WebServer和一个HAProxy
- WebServerA监听192.168.0.45:8081端口,其index.html页面内容为“WebServerA”
- WebServerB监听192.168.0.45:8082端口,其index.html页面内容为“WebServerB”
- HAProxy作为前端机,监听192.168.0.45:8080端口,HAProxy负载均衡算法采用轮询算法
- 多次使用命令“curl http://192.168.0.45:8080/index.html ” 向HAProxy发起调用请求
- 成功标准:我们多次调用curl,控制台依次轮流打印WebServerA,WebServerB,WebServerA,WebServerB……
七层负载均衡测试
首先,我们定制七层负载均衡测试用的配置文件:
1 | global |
将上述内容保存为 haproxy-7.cfg 文件(右键另存为)。然后使用如下命令启动HAProxy(启动haproxy之前,先启动webserver)。
1 | $ ./haproxy -f ./haproxy-7.cfg |
启动之后如下图:
我们在另外一个控制台,使用curl向haproxy发起请求,控制台输出如下:
可见输出与我们的预期一致,说明haproxy完美的对两台WebServer进行了轮询负载均衡调用。
四层负载均衡测试方案
四层负载均衡测试方案如下:
- 使用Echo服务做测试,EchoServer返回时带上本机的信息用作区分
- 测试工具下载:EchoServer,EchoClient
- 编译EchoServer:g++ -g -o echoserver echoserver.cpp
- 编译EchoClient:g++ -g -o echoclient echoclient.cpp
- 我们在同一台服务器上部署两个EchoServer和一个HAProxy
- EchoServerA监听192.168.0.45:5001端口,启动命令:./echoserver -p 5001 -s “EchoServerA@5001 “
- EchoServerB监听192.168.0.45:5002端口,启动命令:./echoserver -p 5002 -s “EchoServerB@5002 “
- HAProxy作为前端机,监听192.168.0.45:5000端口,HAProxy负载均衡算法采用轮询算法
- 多次使用命令“./echoclient -h 192.168.0.45 -p 5000 -m hello” 向HAProxy发起调用请求
- 成功标准:控制台依次轮流打印 EchoServerA@5001 hello,EchoServerB@5002 hello,EchoServerA@5001 hello,EchoServerB@5002 hello……
四层负载均衡测试
首先,我们定制四层负载均衡测试用的配置文件:
1 | global |
将上述内容保存为 haproxy-4.cfg 文件(右键另存为)。然后使用如下命令启动HAProxy(启动haproxy之前,先启动EchoServer)。
1 | $ ./haproxy -f ./haproxy-4.cfg |
启动之后如下图:
我们在另外一个控制台,使用echoclient向haproxy发起请求,控制台输出如下:
可见输出与我们的预期一致,说明haproxy完美的对基于TCP协议的两台EchoServer进行了四层负载均衡轮询调用。
HAProxy自带监控统计页面
HAProxy自带一套系统统计和监控页面,详细记录了所管理的frontend、backend等信息,打开监控页面我们可以直观查看backend中各后台真实服务器的运行状态,HAProxy以不同的颜色来标识状态,运维人员可以直观快速发现问题。
该项功能对开发和运维人员来讲极为友善,我们看下如何开启该项功能。修改上述的配置文件,加入如下配置项:
1 | listen admin_stats |
将上述统计监控功能的配置项加入上文 haproxy.cfg 文件,保存为新文件 haproxy-stats.cfg。或者下载本测试配置文件(右键另存为 )。
使用新的配置文件,重新启动HAProxy
1 | $ ./haproxy -f ./haproxy-stats.cfg |
我们打开浏览器,输入监控网页地址:http://192.168.0.45:8090/monitor 。
该页面需要认证,账号和密码是配置项”stats auth admin:apassword”指定的,即账号为admin,密码为apassword。
输入账号和密码之后,打开的监控页面如下。
至于监控项及其含义,后续博文我们再做详细讲解。