HAProxy配置为代理与负载均衡器之实践
Posted 21CTO
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAProxy配置为代理与负载均衡器之实践相关的知识,希望对你有一定的参考价值。
21CTO导读:了解如何配置HAProxy并查看HAProxy配置中的一些基本概念,如ACL,后端和前端。
HAProxy,中文译为高可用代理,它是一种用C语言编写的免费,快速,可靠的解决方案,可为基于TCP/HTTP的应用程序提供高可用负载均衡和代理服务器。
在开始配置代理之前,我们来看一下HAProxy配置中的一些基本概念,如ACL,后端和前端。
HAProxy作为代理和负载均衡服务器
ACL
访问控制列表(ACL)是一种测试表达式,基于测试条件结果执行动作。比如,选择服务器并转发请求。
ACL的语法:
acl <aclname> <criterion> [flags] [operator] [<value>] ...
请看如下示例:
acl acl_myApp path_sub myApp
其中:
1)acl_myapp:ACL 名字
2)path_sub:
一个函数,用来验证请求URL是否包括在myApp的子串。
详细信息可参考:http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7
后端
这是一组实际处理转发请求的服务器。 后端包括负载平衡算法和带端口的服务器列表。
后端的基本语法是:
backend <backendname>
balance <loadbalancing algorithm>
server <name of the server> <ip>:<port> check
....
server <name of the server> <ip>:<port> check
以下是填写所有详细信息的示例:
backend myAppBackend
balance roundrobin
server myAppServer1 172.21.28.1:8080 check
server myAppServer2 172.21.28.2:8080 check
对以上参数解释如下:
myAppBackend:ACL将转发请求的后端名字。
roundrobin:负载均衡器的名字。
myAppServer,myAppServer1:服务器的名字。
8080:服务器监听的端口。
check:指定检查服务器的运行状况。
前端
语法如下:
frontend <frontend name>
bind <IPs or wild card>:80
acl <aclname> <criterion> [flags] [operator] [<value>] ...
use_backend <backend name> if <aclname>
请看如下实例:
frontend myAppFrontEnd
bind *:80
acl acl_myApp path_sub myApp
use_backend myAppBackend if acl_myApp
其中:myAppFrontEnd 是前端名称。
前端在端口80上监听服务器中可用的所有接口(*)。如果URL将myApp作为子字符串,则请求将转发到myAppBackend,否则将无法获得服务异常。
统计(可选)
HAProxy的简要统计将显示服务器的状态,连接数等信息。我们通过以下配置添加到配置文件,可以轻松启用此功能。如下:
listen stats
bind *:<Port>
stats enable
stats hide-version
stats uri </url>
stats auth <username>:<password>
以下填写完整的详细信息:
listen stats
bind *:9999
stats enable
stats hide-version
stats uri /stats
stats auth admin:admin@123
其中:
9999:侦听端口9999以获取统计报告请求。
/stats:统计页面的URL(http://localhost:9999/stats)。
admin/admin@123:访问统计页面的用户名和密码。
以下是完整的配置文件 haproxy.cfg 内容:
#HA Proxy Config
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen stats
bind *:9999
stats enable
stats hide-version
stats uri /stats
stats auth admin:admin@123
frontend myApp
bind *:80
acl acl_myApp path_sub myApp
use_backend myAppBackEnd if acl_myApp
backend myAppBackEnd
balance roundrobin
server myAppServer1 127.0.0.1:8081 check
server myAppServer2 127.0.0.1:8082 check
将 HAProxy部署在 Linux 上
(1)从 HAProxy 官网下载源代码;
(2):用 tar 命令解压:
tar xvzf haproxy-1.8-dev1.tar.gz
(3):编译:
cd haproxy-1.8-dev1
make TARGET=linux2628
(4)创建配置文件 haproxy.cfg 并配置好详细信息
(5)启动 haproxy
./haproxy -f haproxy.cfg
(6)访问状态页面
http://localhost:9999/stats
会显示如下的界面:
编译:路川
来源:https://dzone.com/articles/how-to-configure-ha-proxy-as-a-proxy-and-loadbalan
以上是关于HAProxy配置为代理与负载均衡器之实践的主要内容,如果未能解决你的问题,请参考以下文章