标签: haproxy

HAProxy SSL 场选项

我想弄清楚如何使用 haproxy 和 SSL 反向代理设置 SSL 场,我正在寻找一些一般性建议:

是否有可能满足以下所有条件:

  • 针对 SSL 场的负载平衡请求并具有故障转移功能,因此可以使用多个 SSL 框(也许 haproxy 中的 sslcheck 会对此有所帮助)。
  • 获取包含实际客户端 IP 地址的 HTTP 日志。
  • 无 TProxy 要求

如果所有这三个都不可能,我想知道权衡可能是什么。现在我正在考虑类似以下的事情,但这可能会改变:

Haproxy 443 TCP 代理前端 -> 高端口上的 SSL 代理(可能是 Nginx) -> Haproxy HTTP 前端 -> 网络服务器

我意识到我可能可以跳过第二跳回到 haproxy,但是 HAproxy 中所有事物的单一视角可能很好。另外,如果我必须使用 TProxy,也许从 SSL 场返回 haproxy 会使路由更简单?

参考资料:
http : //haproxy.1wt.eu/download/1.5/doc/configuration.txt
http://1wt.eu/articles/2006_lb/index_05.html

ssl haproxy

7
推荐指数
1
解决办法
2810
查看次数

haproxy httpchk 对后端的多重检查

是否可以在一个后端检查两个条件?例子

backend web-static
        option httpchk GET /path/alive.php HTTP/1.1\r\nHost:\ www1.domain.com
        option httpchk GET /path2/alive.php HTTP/1.1\r\nHost:\ www1.domain.com
        server appsrv1 192.168.1.10:80 check inter 3000 weight 1
Run Code Online (Sandbox Code Playgroud)

load-balancing haproxy

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

haproxy BADREQ 错误

我在 haproxy 日志中看到类似于以下内容的错误:

Jul 18 17:05:30 localhost haproxy[8247]: 188.223.50.7:51940 [18/Jul/2011:17:05:24.339] http_proxy_ads http_proxy_ads/<NOSRV> -1/-1/-1/-1/6001 408 212 - - cR-- 100/89/0/0/0 0/0 "<BADREQ>" 
Jul 18 17:05:30 localhost haproxy[8247]: 188.223.50.7:51943 [18/Jul/2011:17:05:24.341] http_proxy_ads http_proxy_ads/<NOSRV> -1/-1/-1/-1/6000 408 212 - - cR-- 99/88/0/0/0 0/0 "<BADREQ>" 
Run Code Online (Sandbox Code Playgroud)

等等...

到目前为止,我已经尝试增加客户端超时(从 3 到 6 秒),并将 http 请求缓冲区从 16k 增加到 32k。错误仍然出现。

任何人都可以指导我在这里寻找什么吗?

haproxy

7
推荐指数
4
解决办法
2万
查看次数

rackspace 和 centos 上的负载均衡器性能不佳

我正在对不同的负载平衡选项进行负载测试,但从 Nginx、haproxy 和 varnish 得到的结果很差。我在 Rackspace 有一个 4GB 的负载均衡器,可以运行 4x1GB 的应用服务器。

我正在访问一个名为“/slow”的 url,它在响应之前故意等待 500 毫秒。如果我直接访问应用程序服务器,它可以处理每秒 1600-1800 的连接速率。

如果我打 Nginx 负载均衡器,它只能处理大约 2000 个连接。我希望有更接近 4x1600 = 6000 的东西。下面是我用来测试它的命令。这是在 40 256 MB 实例上并行运行的。我特意将 num_call 设置为 1,因为我想看看连接性能。任何高于此值,我就会开始出现很多错误。

httperf --server 50.56.80.227 --port 1555 --uri /slow --rate 50 --num-call 1 --num-conn 100 --timeout 5
Run Code Online (Sandbox Code Playgroud)

这是我的 nginx 配置:https : //gist.github.com/1299501

所以,奇怪的是,无论我使用 nginx、haproxy 还是 varnish,我都会得到大致相同的结果。然而,我测试了 Rackspace 的新云平衡器,它们获得了更好的性能(在 7000/s 时表现良好)。由于 nginx 和其他都在我设置的实例上运行,而机架空间平衡器不是,我猜系统有问题。我宁愿使用我控制的平衡器,这样我就可以向其中添加缓存、gzip、ssl 和其他内容。

我怎样才能找出瓶颈是什么?有什么我应该在系统上调整以获得更好的性能吗?我需要超过 4GB 的内存吗?(测试过程中Ram使用率不高)。还有其他随意的想法吗?

更新:我只是将平衡器调整为 8GB,它的性能要好得多,高达 6000-7000,或者与机架空间平衡器相当。这没有任何意义,因为它之前没有耗尽 RAM。

更新:这是我重载平衡器时 httperf 的输出示例(在 8GB 版本上,比我之前能够运行的要高,但错误类似):https …

nginx centos varnish load-balancing haproxy

7
推荐指数
1
解决办法
2358
查看次数

使用 HAProxy,只在 ACL 中匹配根 URL

使用 HAProxy,我想创建以下设置:

  • 除 root (/)、/articles 和 /blogs 之外的所有请求都转到 server1
  • 所有对 root (/)、/articles 和 /blogs 的请求都转到 server2

我无法弄清楚如何在不依赖于设置默认服务器的情况下匹配 root,然后否定所有请求转到 server1 规则。

如何使用 HAProxy 表达上述内容?

正则表达式可能是解决此问题的方法,但我对正则表达式并不擅长,因此很难提出基于它的解决方案。

load-balancing haproxy

7
推荐指数
1
解决办法
8365
查看次数

HAProxy 的配置中“acl cdn_name hdr_beg(host) -i foor.bar.com”是什么意思?

我最近接管了一个使用 HAProxy 的环境,我正在尝试了解配置及其含义,但我发现它的某些方面不清楚。

认为上面的意思是,如果主机头以“foo.bar.com”开头,则使用 cdn cdn_name,但我不完全确定。有人可以为我确认吗?

谢谢!

web-server reverse-proxy haproxy

7
推荐指数
1
解决办法
7244
查看次数

忽略 haproxy 主机头匹配中的端口号

使用 haproxy-1.5,我有以下部分配置:

    acl is_api hdr(host) -i api.example.com
    acl is_app hdr(host) -i app.example.com
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的请求与如下所示的请求不匹配:

GET / HTTP/1.1
Host: api.example.com:80
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要这样做:

    acl is_api hdr(host) -i api.example.com
    acl is_api hdr(host) -i api.example.com:80
    acl is_app hdr(host) -i app.example.com
    acl is_app hdr(host) -i app.example.com:80
Run Code Online (Sandbox Code Playgroud)

啊。不!恨!

有没有更好的方法来做到这一点?我可以告诉 haproxy 忽略主机头中的端口吗?

haproxy

7
推荐指数
1
解决办法
3757
查看次数

HAProxy 没有公平地平衡服务器负载

HAProxy 似乎并没有保持与服务器的连接平衡。

请记住这一点:

  • 使用 HAProxy v1.3.26
  • 5 个均衡的服务器规格
  • 算法是循环的,但没有对每个服务器应用权重
  • 在 haproxy 中设置的全局最大连接数为 80,000

如图所示,服务器 C 和 D 的连接似乎比其他服务器多。由于这种额外的负载,它们会继续下降并自动重新启动。

状态 配置

我尝试阅读 HAproxy 官方文档并进行了一些谷歌搜索,但没有发现任何有用的信息。希望这里有人可以提供帮助。

几个问题:

  1. 为什么当配置说使用 roundrobin、服务器规格相同并且没有应用权重时会出现这种情况?

  2. 什么决定了“会话”列中的“最大”子列(表示 1970、1444 等的那个)。服务器 C、D、E 在 3K 范围内,其他 2 个在 2K 以下。为什么会有差异?

  3. 如何让这一切保持平衡?

  4. 有人可以解释每一列吗?我很惊讶 HAproxy 的官方文档并没有真正解释它。

scaling load-balancing haproxy

7
推荐指数
1
解决办法
2924
查看次数

使用 Keepalived 设置主动/主动 HAProxy 的任何问题

抱歉,如果之前有人问过这个问题,但我似乎找不到太多关于它的信息。

我们将使用 HAProxy 来平衡我们的 MariaDB Galera 集群。我在这方面看到的所有文章/教程都使用 Keepalived(或类似的东西)进行主动/被动 HAProxy 设置。

有什么好的理由为什么你不应该有一个主动/主动设置?

每个 HAProxy 节点都可以有一个固定的 IP,并且都有一个浮动的 IP。在正常情况下,请求在两个 HAProxy 节点之间共享,如果一个节点宕机,另一个将使用它的浮动 IP 并处理两个 IP 下的请求。当另一个恢复时,它会再次获取其浮动 IP 和负载份额。

我很感激你对此的意见。

卢克

high-availability load-balancing haproxy keepalived

7
推荐指数
1
解决办法
9879
查看次数

HAProxy 使用文件中的主机设置 acl

我想将大约 100 多个站点从一台服务器迁移到另一台服务器。当前计划是逐渐为每个添加一个 acl,因为它们被移动以将流量引导到新服务器。

这是一个简化的例子

front http_frontend
  bind *:80
  acl is_new hdr_end(host) -i sub1.domain.com
  acl is_new hdr_end(host) -i sub2.domain.com
  acl is_new hdr_end(host) -i www.domain2.com
  mode http
  # etc
  use_backend web1 if is_new
  default_backend legacy1
Run Code Online (Sandbox Code Playgroud)

一旦他们都被感动了,我们就会改变 default_backend

有没有办法从另一个文件中读取这些 acl?或者从文件中读取域 - 也许像这样?

acl is_new hdr_end(host) -i /path/to/file
Run Code Online (Sandbox Code Playgroud)

例如,我将所有安全证书包括在下面,这样的东西会很棒!

bind *:443 ssl crt /etc/haproxy/certs.d
Run Code Online (Sandbox Code Playgroud)

如果没有,这不是世界末日,它只是美好而整洁:)。

haproxy

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