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配置为代理与负载均衡器之实践的主要内容,如果未能解决你的问题,请参考以下文章

反向代理负载均衡系列之Haproxy

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

负载均衡服务之HAProxy基础配置

第三章 负载均衡LB服务之Haproxy

http层负载均衡之 haproxy实践篇

高负载均衡学习haproxy之安装与配置