标签: haproxy

针对中小流量站点的 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
查看次数

HAproxy 子域重定向

我拥有一个像 xyz.com 这样的域,我正在尝试使用 haproxy 重定向其他 ip 的子域。

我在服务器上使用 tomcat,并使用 haproxy 将端口 80 上的传入请求重定向到端口 8080。

Like;

www.xyz.com -> 10.0.0.1

www.xyz.com/abc -> 10.0.0.2
  or  abc.xyz.com -> 10.0.0.2
Run Code Online (Sandbox Code Playgroud)

为了进行这种重定向,我该如何设置 haproxy?

linux haproxy

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

如何添加包含原始请求资源绝对地址的自定义标头

我有以下设置:

                 |-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
                 |-------|--- backend3:8080
Run Code Online (Sandbox Code Playgroud)

我想配置 HAProxy 以添加包含原始 url 的自定义标头。例如,如果用户请求http://example.com/foo?bar=baz,即:

GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Run Code Online (Sandbox Code Playgroud)

我希望 HAProxy 将此请求转换为后端,如下所示:

GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Run Code Online (Sandbox Code Playgroud)

reqadd选项仅允许我添加具有静态值的标题。我能够使用reqrep以下命令从请求中获取路径部分:

reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10])  \0\r\nx-custom-header:\ \2
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这仅捕获原始 url 的路径部分,导致以下标题:

x-custom-header: /foo?bar=baz
Run Code Online (Sandbox Code Playgroud)

所以我的问题是在 HAProxy 1.4 中是否有可能Host将 HTTP 请求的标头和第一行组合成一个自定义标头

haproxy

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

HAProxy,对不同主机名的多台服务器进行健康检查

我需要在具有不同主机名的多个正在运行的服务器之间进行负载平衡。我无法在每个主机上设置相同的虚拟主机。

是否可以只对多个服务器进行一个监听配置并使健康检查应用该http-send-name-header Host指令?我正在使用 HAProxy 1.5。

我想出了这个工作 haproxy.cfg,正如你所看到的,我必须为每个健康检查设置一个不同的主机名,因为健康检查忽略http-send-name-header Host. 我更喜欢使用变量或其他方法并使事情更简洁。

global
    log 127.0.0.1 local0 notice
    maxconn 2000
    user haproxy
    group haproxy

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    timeout connect  5000
    timeout client  10000
    timeout server  10000
    stats enable
    stats uri /haproxy?stats
    stats refresh 5s
    balance roundrobin
    option httpclose

listen inbound :80    
    option httpchk HEAD / HTTP/1.1\r\n
    server instance1 127.0.0.101 check inter 3000 fall 1 rise 1
    server instance2 127.0.0.102 check …
Run Code Online (Sandbox Code Playgroud)

haproxy

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

这个 HAProxy“重启脚本”会像我认为的那样优雅地工作吗?

我把这个脚本从不同的地方放在一起。我希望它一旦运行就会执行以下操作:

  1. 暂停端口 80 和 443 的所有“新”http 流量 - 只是“暂停”它们,不要给出任何错误
  2. 当所有“处理中”请求完成后,优雅地重启 haproxy
  3. 取消暂停 http 流量并继续照常营业。

这是它将如何运行?我错过了什么吗?我们有数千条基于 ip 的 acl 规则,存储在 haproxy 引用的文件中,我们需要每分钟重新加载几次。

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D …
Run Code Online (Sandbox Code Playgroud)

bash iptables haproxy

10
推荐指数
1
解决办法
1787
查看次数

负载平衡 DNS 服务器:UDP / TCP

我被要求在数据中心重建我们的负载平衡基础设施。

最初的请求是对 FTP 服务器进行负载平衡。我尝试使用当前的负载平衡器 ( Piranha / LVS)执行此操作,但没有启动并运行。不仅仅是因为这个软件几乎没有文档。由于Piranha被认为已弃用,我在HAProxy尝试了几天后转而使用它,它在Piranha.

所以我已经有了 FTP 负载平衡(被动模式)。现在,我被要求更换数据中心的整个 Piranha Load Balancer。在当前的 Piranha 配置中,我们有几个 Web 服务器、IIS 服务器....aaa 和DNS

不,事情是这样的:
HAProxy似乎是一个常用的 LB,但它不能处理UDP load balancing. 这是一个无赖,因为我喜欢如何HAProxy运作。所以我用谷歌搜索了很多,遇到了几件事。大多数人似乎将LVS其用作 DNS (TCP/UDP) 的 LB。有的用dlbDNS,有的用lbnamed,有的用netfilter / iptables

由于我想坚持使用HAProxyFTP、HTTP、IIS 服务器,因此我对将它与LVS.

要求:
具有故障转移功能的
2个 LB 实例 具有故障转移功能的2 个 DNS 服务器(已经存在)
多个后端服务器(http、应用程序等...)

问题:
这可能吗?DNS 服务器上的 UDP 负载平衡是否有必要?是否有任何类型的资源可以告诉我如何开始使用它?或者有没有既能处理 TCP/HTTP 又能处理 UDP 负载均衡的 …

domain-name-system load-balancing udp haproxy lvs

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

带有浏览器的 haproxy CD 标志,而不是 curl

从同一个工作站向同一个 haproxy 服务器发出相同的 url 请求:

  • 使用浏览器(尝试过 Chrome 和 Firefox):haproxy 日志显示CD标志
  • 使用 curl:haproxy 日志显示 --

这两个请求都得到了完整的答复 - 没有数据被截断。

根据,标志CD是指

客户端在数据传输期间意外中止。这可能是由于浏览器崩溃、客户端和 haproxy 之间的中间设备决定主动断开连接、客户端和 haproxy 之间的网络路由问题或服务器和客户端之间的保持活动会话终止引起的首先由客户。

鉴于我从同一个工作站发出两个查询,我将排除“中间设备”或“路由问题”的任何影响。区别似乎在于两个客户端如何打开和关闭连接。

有什么线索吗?

haproxy

10
推荐指数
1
解决办法
3069
查看次数

https后端的HAproxy健康检查

我有 haproxy 配置,非常适合后端的 vault 服务器,使用 http 配置,它使用 200 OK 代码基于未密封和活动的 vault 服务器进行负载平衡。这适用于http。但是我们将所有内容都设置为 https (tls),因此健康检查不再起作用,haproxy 将我们引导至密封的保险库服务器。如何修改以下配置以支持 https Vault 服务器后端的健康检查?我当前的 http 配置如下:

listen vault
  bind 0.0.0.0:443
  mode tcp
  balance roundrobin
  option httpchk HEAD /v1/sys/health
  http-check expect status 200
  option tcplog
  option ssl-hello-chk
  server web1 <vault 1 IP>:8200 check
  server web2 <vault 2 IP>:8200 check
Run Code Online (Sandbox Code Playgroud)

linux load-balancing haproxy centos7 vault

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