在Debian 9.1 (Stretch)上,安装HAProxy 1.7
杨和超
・6 分钟阅读
使用不同的系统?
HAProxy是一个网络软件应用程序,提供高可用性,负载平衡,以及用于TCP和HTTP网络应用程序的代理,它适用于高流量网站,并为许多热门网站提供支持。本文将向你展示如何在Debian 9.1上安装和配置HAProxy 。
尽管HAProxy有好几个突出的特性,本文重点介绍如何将HAProxy设置为"代理"应用程序。
要求
- 至少有两个服务器(用于负载均衡)与你的网站或Web应用程序一起部署。
安装HAProxy
Debian 9已经附带HAProxy 1.7 (撰写本文时,最新稳定发行版),我们只需使用apt-get安装它:
# apt-get update
# apt-get install haproxy
如果前面的命令成功,那么你已经安装了HAProxy,你可以继续下一步。
配置HAProxy
HAProxy配置文件分为两部分 "global" 和"proxies" ,
Global
使用你喜爱的文本编辑器,打开/etc/haproxy/haproxy.cfg
,并且注意预定义的部分: "global "还有"defaults ",首先要做的是,将maxconn增加到合理的大小,因为这会影响HAProxy允许的连接,太多的连接可能导致你的web服务因太多的请求而崩溃,你需要调整大小才能找到适合你,在global中,我们选择了3072的maxconn值。
global
daemon
maxconn 3072
在默认部分中,在模式http
下添加以下行:
option forwardfor
这将向每个请求添加X-Forwarded-For
头,这允许后端服务器了解用户的原始IP地址。
此外,在服务器端添加此行以启用HTTP连接关闭模式,同时保持在客户端保持HTTP的能力,这样可以减少客户端的延迟,并有助于节省服务器资源:
option http-server-close
如果你希望在客户端和服务器端同时使用keep,那么你可以使用option http-keep-alive
,当与服务器建立新连接的成本显著比检索请求资源的成本大时,这个选项特别有用。
最后,生成的配置文件将如下所示:
defaults
mode http
option forwardfor
option http-server-close
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
Proxies
要设置代理,需要将两个部分添加到配置文件中,以定义代理的两部分: 前端和后端。
前端配置
前端将处理你的HTTP连接,将以下内容添加到haproxy.cfg
文件的末尾:
frontend http-frontend
bind public_ip:80
reqadd X-Forwarded-Proto: http
default_backend wwwbackend
请务必用服务器IP地址或域名的公共名称替换public_ip
。
后端配置
通过在配置文件的末尾添加以下行来设置你的后端:
backend wwwbackend
server 1-www server1_ip:80 check
server 2-www server2_ip:80 check
server 3-www server3_ip:80 check
这里使用的后端配置会创建名为X-www
的3连接,(X
是1,2或3)它们中的每一个对应于serverX_ip:80
地址,(将serverX_ip替换为你实例的IP地址,),这将允许你在指定服务器集中的每个服务器之间进行负载平衡(假设每个IP地址对应于不同的服务器)。check
选项使负载平衡器在服务器上执行运行状况检查。
保存配置文件,然后重新启动HAProxy :
service haproxy restart
如果一切正常,那么你就可以连接到http://public_ip/
(将它替换为你的公共IP或域名,如前端步骤中所配置)并查看你的网站。
调试错误
如果你的HAProxy实例在修改后拒绝启动,则可能是你在配置文件中的某处出现错误。要在配置文件中获得有关该问题的明确消息,你可以尝试使用以下命令手动启动HAProxy:
# haproxy -f /etc/haproxy/haproxy.cfg
例如,如果你看到这样的输出:
[ALERT] 234/195612 (2561) : parsing [/etc/haproxy/haproxy.cfg:48] : server 1-www has neither service port nor check port nor tcp_check rule 'connect' with port information. Check has been disabled.
[ALERT] 234/195612 (2561) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 234/195612 (2561) : Fatal errors found in configuration.
那是你忘记为服务器1-www指定端口号。