标签: haproxy

HAProxy中基于源IP的HTTP路由

我一直在阅读 HAProxy 的文档,但似乎找不到一种根据源 IP 地址路由 HTTP 请求的方法。也就是说,我想将特定源路由到特定后端服务器。例如,我想将来自 10.1.0.3 的任何请求路由到一台特定服务器。

routes load-balancing http haproxy

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

Haproxy继续将会话路由到标记为down的后端

我在3节点MariaDB集群前使用HaProxy 1.5.0.HaProxy使用自定义查询/ xinet服务检查每个数据库节点是否具有同步状态.当由于某种原因检查失败(例如节点被desynced或成为捐赠者)时,haproxy中相应的后端被标记为down,但我仍然可以在haproxy统计控制台中看到它上面的活动会话,以及DB进程列表中的查询(这是可能的,因为MariaDB服务仍然启动并接受查询,即使群集状态未同步).我想知道为什么HaProxy在后端关闭时不会关闭活动连接,并将它们发送到其他活动后端?当MariaDB服务在给定节点上完全停止时(无可能会话),我得到了这种预期的行为.是否有特定的选项允许这个?选项redispatch看起来很有希望但它适用于连接关闭时(不是我的情况)并且它已经在我的配置中处于活动状态.谢谢你的帮助.

haproxy

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

使用HAPROXY阻止HTTP方法

如何构造HAPROXY配置文件来阻止对特定HTTP方法的请求?

我们开始看到许多攻击使用我们的应用程序中不支持的方法.我们宁愿拒绝我们的负载均衡器的流量,而不是让我们的应用程序陷入困境.

haproxy

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

selinux否认haproxy连接?

我在syslog中看到这些消息弹出:

Mar 10 12:51:35 db1 kernel: [5851729.958138] type=1400 audit(1457614295.823:2925931): avc:  denied  { name_connect } for  pid=801 comm="haproxy" dest=7778 scontext=system_u:system_r:haproxy_t:s0 tcontext=system_u:object_r:interwise_port_t:s0 tclass=tcp_socket
Run Code Online (Sandbox Code Playgroud)

这是否意味着SELinux拒绝与haproxy的连接?

谢谢

selinux haproxy

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

如何增加 HAProxy 中的会话限制

我在我的 HAProxy 统计报告中看到

Sessions Curr、Max、Limit 全部为 2000。

如何将 Max 和 Limit 增加到 2000 以上?

haproxy

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

How to redirect to multiple servers sitting behind HAProxy which have different path begining

I have 3 servers which listen on following port ,

> 10.21.5.39:80    -->   api.something.com
> 10.21.4.234:80    -->   *.something.com
> 10.21.5.73:80     -->   coolapi.something.com
> 10.21.5.73:3002    -->   school.something.com
Run Code Online (Sandbox Code Playgroud)

I am using a HAProxy server to redirect the traffic to these backends, i am using the following config on haproxy which doesn't seem to workout.

frontend api
       bind *:80
       acl url_api path_beg /api
       use_backend api-backend if url_api

frontend custui
       bind *:80
       acl url_custui path_beg *
       use_backend custui-backend if url_custui


frontend backoffice
       bind *:80 …
Run Code Online (Sandbox Code Playgroud)

routing load-balancing haproxy

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

基于主机名路由时如何在本地测试 haproxy?

我有一个相当复杂的 haproxy 配置,它根据请求的主机(通过 acl + hdr_dom)路由到后端。如果我想在本地测试配置,我必须更改要测试的主机的分辨率(例如,通过更改主机文件以将主机解析为127.0.0.1)。然后我可以使用 wget 或curl 在本地测试 haproxy 配置,然后重置主机文件。

然而,我想要进行自动化测试,并且在自动化测试中改变系统级的东西让我感到紧张。在我以自动方式更改主机文件的路径之前,有没有办法告诉 haproxy“假装此请求是向 xxx.yyy.com 发出的”?我可以采取其他方法吗?

谢谢

automated-tests haproxy

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

HAProxy:带有重定向的 hdr_dom(host)

我们有几个 haproxy 配置在大多数情况下运行良好。在我们的场景中,我们只是根据域名路由请求。这是一个域的示例,drawmessage.com:

frontend http
    bind *:80

    redirect prefix http://app.drawmessage.com code 301 if { hdr_dom(host) -i www.app.drawmessage.com }
    redirect prefix http://drawmessage.com code 301 if { hdr_dom(host) -i www.drawmessage.com }

    redirect prefix https://drawmessage.com code 301 if { hdr_dom(host) -i drawmessage.com }

    use_backend http:app.drawmessage.com if { hdr_dom(host) -i app.drawmessage.com }
    use_backend http:app.drawmessage.com if { hdr_dom(host) -i app-drawmessage-com.d250.hu }
    use_backend http:drawmessage.com if { hdr_dom(host) -i drawmessage.com }
    use_backend http:drawmessage.com if { hdr_dom(host) -i drawmessage-com.d250.hu }
Run Code Online (Sandbox Code Playgroud)

还有其他域,仅针对该域进行过滤。如您所见,在 www 重定向后,我们为 drawmessage.com 应用了特殊重定向,但理论上不适用于 app.drawmessage.com。

frontend https …
Run Code Online (Sandbox Code Playgroud)

haproxy

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

HAProxy:防止粘性到备份服务器

我面临 HAProxy (1.8) 的配置问题。

语境:

  • 在 HAProxy 配置中,我在后端有几台服务器,还有一个额外的备份服务器,以防其他服务器出现故障。
  • 一旦客户端从服务器获得答案,它必须坚持到该服务器进行下一个查询。
  • 由于某些充分的原因,我不能使用 cookie 来解决这个问题,而我不得不使用粘表。

问题:

  • 当每个“正常”服务器关闭时,客户端将按预期重定向到备份服务器。
  • 但棒表随后会填充客户端和备份服务器 ID 之间的关联。
  • 并且当每个“正常”服务器恢复时,棒表中存在的并与备份服务器的 ID 相关联的客户端将继续重定向到备份服务器,而不是正常的服务器!

这实在是让我很不爽……

所以我的问题是:如何防止 HAProxy 将客户端粘到后端的备份服务器上?

请在下面找到配置示例:

defaults
  option redispatch

frontend fe_test
  bind 127.0.0.1:8081
  stick-table type ip size 1m expire 1h
  acl acl_test  hdr(host) -i whatever.domain.com
  ...
  use_backend be_test if acl_test
  ...

backend be_test
  mode http
  balance roundrobin
  stick on hdr(X-Real-IP) table fe_test
  option httpchk GET /check
  server test-01 server-01.lan:8080 check
  server test-02 server-02.lan:8080 check
  server maintenance 127.0.0.1:8085 backup
Run Code Online (Sandbox Code Playgroud)

(我已经尝试为备份服务器添加较低的权重,但它没有解决这个问题。)

我在文档中读到“stick-on”关键字有一些“if/unless”选项,也许我可以用它来根据后端服务器名称编写条件,但我不知道要使用的语法,或者即使有可能。

欢迎任何想法!

haproxy

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

如何让 HA 代理自行跟踪重定向?

我有 Java 客户端,它通过 HA 代理与 3rd 方服务对话。3rd 方服务最近发生了变化,所以现在它返回 302(临时移动)而不是 200(Ok),这会导致我的 java 客户端失败,因为它期望实际响应为 200。出于多种原因,我想避免对 Java 客户端进行任何代码更改。

那么,问题来了:有没有办法让 HA 代理自己跟踪重定向,并且只将结果(不是 3xx http 代码)返回给客户端?

还有一件事要提到:我通过 http 访问 HA 代理,HA 代理通过 https 访问 3rd 方资源,并在 https 上返回带有位置的 302。位置各不相同,因此无法将 HA 代理配置到新位置。

HA 代理版本: HA-Proxy version 1.7.5 2017/04/03

操作系统: CentOS Linux release 7.2.1511 (Core)

java redirect http haproxy web

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