标签: haproxy

如何在 HAproxy 的 ACL 列表中匹配通配符主机?

我的 haproxy.conf 中有以下几行:

acl valid_domains hdr(Host) -i mysite.com images.mysite.com docs.mysite.com admin.mysite.com
redirect location http://mysite.com/invalid_domain if !valid_domains
Run Code Online (Sandbox Code Playgroud)

我如何匹配任何子域?

我试过:

acl valid_domains hdr(Host) -i *.mysite.com

和:

acl valid_domains hdr(Host) -i [a-z]+.mysite.com

......但都没有奏效。

谢谢

regex access-control-list haproxy

13
推荐指数
3
解决办法
5万
查看次数

使用 HAProxy 记录整个 POST 正文?

我正在尝试追踪 javascript 客户端与应用程序服务器交互方式的一些问题,并希望查看来回传递的整个 http 有效负载(标头、正文和所有内容)。

碰巧应用服务器前面已经有haproxy服务器了,所以我希望能够使用haproxy提供相关的日志。显然,在生产中打开这会很糟糕,但我有整个环境的克隆,可以在我进行调试时隔离。

有没有办法让 haproxy 记录发送到特定后端服务器的 POST 请求的整个 http 负载?

haproxy

13
推荐指数
2
解决办法
1万
查看次数

haproxy时序连接图

我试图更多地了解 Haproxy 时间。以下是 Haproxy 手册中的时间片段:

  • Tq:获取客户端请求的总时间(仅限 HTTP 模式)...

  • Tw:在等待连接槽的队列中花费的总时间......

  • Tc:与服务器建立 TCP 连接的总时间....

  • Tr:服务器响应时间(仅限 HTTP 模式)...

  • Tt:总会话持续时间,在代理接受它的那一刻和两端都关闭的那一刻之间......

来源: http : //cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.4

我试图绘制一些时序,但我的图可能不正确并且绝对不完整(没有 FIN 等):

在此处输入图片说明

问题:完整的时序图会是什么样子,包括所有时序测量(Tq、Tw、Tc、Tr、Tt)以及所有 TCP/IP 通信?

haproxy

13
推荐指数
1
解决办法
7479
查看次数

在多个静态文件服务器之间进行负载平衡以实现带宽分配的最佳方法?

首先,我将向您说明我的情况。我正在运行一个相当受欢迎的网站作为一个副项目,所以我不能真正投入大量资金。我目前只有一台带有 HAProxy 的服务器在前端向 Apache 发送正常请求,向 Lighttpd 发送所有静态文件请求。这非常有效,因为所有 php 和 post 请求都由 Apache 处理,而所有图像都发送到更快的 Lighttpd(该站点主要是图像,所以这非常重要)。不必为提供图像而设置子域会很好,因为短 URL 也非常重要,因此我使用 HAProxy 的原因。

我找到了一个托管服务提供商,它提供了我一直在使用的非常便宜的未计量带宽,当我开始推出 100mbs 网卡可以处理的带宽时,问题就出现了,因此需要第二台服务器。

我已经考虑了很多我的选择,所以我会向你解释每一个。希望您能提供一些见解,了解哪个对我来说是最好的选择,或者也许还有另一种我还没有想到的选择。

要求:

  • 甚至带宽分配也是必须的。我有一个非常强大的服务器,所以不能选择扩展。我需要向外扩展以获得更多带宽。

  • 短网址。我真的不想设置子域,比如 img.example.com,来提供我的图像。example.com/image.jpg 是现在的样子,我真的希望它留下来。但如果没有其他办法,那我就明白了。

  • 处理请求的最近服务器会非常好,但不是必须的。要记住的事情。

HAProxy 负载均衡:

  • 这真的很容易做到,因为我已经在使用 HAProxy 了。但是,我认为分配带宽时会出现问题。我在这方面可能是错的,但是 HAProxy 不会将请求发送到服务器处理它的服务器,然后通过 HAProxy 将其发送回客户端吗?因此,所有流量都通过负载平衡器返回,导致它使用的带宽与所有服务器的总和一样多。

DNS 循环:

  • 这可能是我最好的选择。只需在多台服务器上复制网站,然后做我现在正在做的事情。缺点是如果一台服务器出现故障,客户端仍会被发送到它。我还需要在多台服务器上复制站点。我有点希望我可以有一个主服务器来处理除静态文件之外的所有内容,然后有几个静态文件服务器。我还读到这是一种“穷人的负载平衡”,如果有一些更复杂的东西会很好。

直接服务器返回:

  • 这看起来很复杂,但可能是一个不错的选择。我还能将某些 URL 发送到某些服务器吗?就像现在的 HAProxy 一样,每个以正确文件扩展名结尾的 URL 都被发送到 Lighttpd,而其他扩展名则被发送到 Apache。所以我需要类似的东西。就像,所有 php 请求都由运行平衡软件的同一台服务器处理,而所有 jpg 请求都发送到多个服务器。

理想情况下,如果 HAProxy 支持 Direct Server Return,那么我的问题就可以解决了。我也不想使用 CDN,因为它们真的很贵,毕竟这只是一个副项目。

你明白我的问题吗?如果我没有解释正确或者您需要更多信息,请告诉我。

bandwidth cluster load-balancing haproxy

12
推荐指数
1
解决办法
1万
查看次数

haproxy:在高负载下保留现有会话,为新来者提供“503”服务

尝试做标题中所说的:在高负载下保留现有会话,并向新到达的访问者提供 503 消息。

问题:它有效,但会话不会持续超过大约 90 秒。

目前的结果让我想知道是否有我缺少的超时设置。

目的

我试图让haproxy:

  • 当前端的会话总数低于某个阈值时,将会话的请求发送到 backend-001。
  • 当前端的会话总数高于该阈值时,向会话提供 503 错误
  • 即使会话数超过阈值,也允许对现有会话的请求

这样,正在填写多步骤表单的访问者不会对 503 错误感到惊讶,并且可以告诉新访问者“请稍后再回来,因为我们现在真的很忙”。

设置

设置如下:

            {visitors}
                ? 
            [haproxy]
                ? 
[rails app on unicorn served by nginx]   (right now just one 
                                            backend: 'backend-001')
Run Code Online (Sandbox Code Playgroud)

目前的方法

为了实现上述目标,我正在使用以下配置。

这个是用于测试的,有一个非常低的限制(前端10个连接(fe_conn gt 10)),使测试更容易。

为了让服务器承受一定的负载,我使用 httperf 如下:

httperf --hog --server staging.machine.tld --uri /do_some_things --wsess=500,10,30 --rate 2

global
    daemon
    maxconn 10000

defaults
    mode        http
    timeout connect 6s
    timeout client  60s
    timeout server  60s
    balance roundrobin
    option http-server-close

frontend http-in …
Run Code Online (Sandbox Code Playgroud)

proxy haproxy

12
推荐指数
1
解决办法
1321
查看次数

HAProxy ACL 多个 OR 条件

使用在 Ubuntu 12.04 上运行的 Haproxy 1.5.12

我需要将访问我的网站的权限限制为来自某些 IP 或在请求中具有已定义参数的请求。

因此,例如,以下请求应仅适用于授权 IP:

http://www-test.example.com/page.php
Run Code Online (Sandbox Code Playgroud)

并且应该从任何 IP(包括允许的 IP)满足此请求:

http://www-test.example.com/page.php?devtool=1
Run Code Online (Sandbox Code Playgroud)

我的 ACL 是:

acl is_test hdr(host) -m sub test
acl is_allowed src -f /etc/haproxy/allowed_ips
acl is_devtool urlp(devtool) 1
acl is_devtool hdr_sub(Referer) devtool=1
Run Code Online (Sandbox Code Playgroud)

如果专门使用,它们可以正常工作:

http-request deny if is_test ! is_allowed
Run Code Online (Sandbox Code Playgroud)

或者

http-request deny if is_test ! is_devtool
Run Code Online (Sandbox Code Playgroud)

但是,如果我将它们与 OR 结合使用,我将无法从允许的 IP 访问 URL(反转测试无济于事):

http-request deny if is_test ! is_allowed || is_test ! is_devtool
Run Code Online (Sandbox Code Playgroud)

知道如何做到这一点吗?

谢谢

access-control-list haproxy

12
推荐指数
1
解决办法
4万
查看次数

HAProxy:多个前端,相同的绑定

在 HAProxy 上配置绑定到同一端口的多个前端是否可能/正确?

frontend A
    bind :80
    bind :2000-5000
    acl rule_about_A
    use_backend server_A if rule_about_A

frontend B
    bind :80
    acl rule_about_B
    use_backend server_B if rule_about_B
Run Code Online (Sandbox Code Playgroud)

在这个用例中,前端 A 需要绑定到 80 和范围 2000-5000。对于前端 B,我不想将它绑定到所有这些端口,只绑定到 80。

我认为如果我以这种方式配置它看起来会很干净,而不是使用单个前端并使用 ACL,但似乎该配置使 HAProxy 工作出错 - 有时应用正确的规则,有时则不。

在将这些前端作为单个加入之前,是否可以使用绑定到相同端口的多个前端?

编辑:顺便说一句,我正在使用 HAProxy 1.5

haproxy

12
推荐指数
1
解决办法
2万
查看次数

针对中小流量站点的 HAProxy 硬件建议

我对设置 HAProxy 以用作一组小流量 Web 应用程序的负载平衡器很感兴趣。使用量正在增长,并可能在短期内(6 个月左右)变成中等规模。主要我们正在寻找平衡负载,因为有些客户想要他们自己的专用服务器,有些客户需要尽可能低的成本,以便适应我们似乎需要一个负载平衡器。

我查看了 HAProxy 主页和一些博客,但它们确实没有涉及具体细节,或者是使用 Sun 服务器进行应用程序的大型站点

就处理器、内存、存储和分布而言,您使用或会为此类应用程序推荐什么样的硬件和分布?

提前致谢

hardware linux load-balancing haproxy

11
推荐指数
1
解决办法
2万
查看次数

HAProxy 的基本权重问题

  1. 分配给服务器的权重是否仅影响该特定后端内的平衡?
  2. 第一次实现权重时,如果我给后端中的所有服务器分配相同的数字,那么当我们没有权重时,它会和以前一样吗?
  3. 我如何通过按一定数量调整权重来计算我正在转移的流量。例如:
    服务器 web1 10.10.10.10 权重 100
    服务器 web2 10.10.10.11 权重 100
    服务器 web3 10.10.10.12 权重 90
    服务器 web4 10.10.10.13 权重 90

load-balancing haproxy

11
推荐指数
1
解决办法
3万
查看次数

Nginx 应该在 HAProxy 的前面还是对面?

我在网站基础架构设计方面的经验很少。我知道这可能是针对特定情况的。该网站应该:

1) 某些页面(例如登录页面)需要 HTTPS 支持,而其他页面只是 HTTP 页面。

2) 需要多个 Web 服务器,因此需要进行一些负载平衡。

3) 需要 HTTP 缓存和压缩以提高性能。

4) 一些请求(例如图片上传)应该路由到专用的后端服务器。因此,需要基于 URL 的平衡。

我知道 NginX 和 HAProxy 都是不错的开源反向代理和/或负载均衡器。由于 HAProxy 不支持 SSL,而 Nginx 负载均衡不如 HAProxy。我两个都要。

那么,我应该将 Nginx(作为反向代理)放在 HAProxy(作为负载均衡器)的前面,还是相反?

谢谢

nginx reverse-proxy load-balancing haproxy

11
推荐指数
2
解决办法
7142
查看次数