Questions tagged «haproxy»

HAProxy是一个开源,非常快速且可靠的解决方案,可为基于TCP和HTTP的应用程序提供高可用性,负载平衡和代理。它特别适合于在需要持久性或Layer7处理的情况下在非常高的负载下进行爬网的网站。

3
haproxy:如何在不启动应用程序会话的情况下准备服务器维护?
问题 我正在使用haproxy来平衡Web服务器的负载。我将会话持久性与其他cookie一起使用,因为某些应用程序使用会话文件,并且这些文件在服务器之间不同步。 我想禁用服务器进行维护,但不要中断会话。因此,我想允许现有客户端继续其应用程序会话,但不接受新客户端。 代理行为 我将服务器设置为“要维护” 如果客户端设置了cookie,则即使标记为“进入维护”也要使用服务器 如果有新客户端(没有cookie),则将其定向到另一台服务器 在所有客户端结束他们的应用程序会话后,不再有客户端将cookie设置到该特定服务器上了,我最好在不中断用户的情况下将其关闭。 您是否认为通过某些haproxy配置可以实现?还是有一个聪明的方法吗? 其他方法 实现此需求的其他方法的非详尽清单: 在服务器之间同步会话文件(需要一种在多个服务器之间或公共的单个安装点之间同步文件的方法) 使用数据库存储会话信息(需要更改应用程序行为) 更多细节 我使用这种配置: frontend https-in bind xxx.xxx.xxx.xxx:443 ssl crt /etc/haproxy/ssl/_default.pem crt /etc/haproxy/ssl reqadd X-Forwarded-Proto:\ https acl APP1 hdr(host) -i APP1.atac.local use_backend APP1 if APP1 default_backend _default backend APP1 redirect scheme https if !{ ssl_fc } mode http balance …

2
如何根据URL子字符串发出haproxy路由请求?
负载平衡器设置有两个后端。 请求URI如下所示: http://example.com/answers/submit http://example.com/tag-02/answers/submit 如何根据请求URI的格式配置haproxy,以将请求发送到两个后端中的一个或另一个?请求之间的唯一区别在于/tag-02/请求URI。 由于我是haproxy的新手,因此非常感谢有一个解释的haproxy配置文件。
13 haproxy 

6
Windows替代HAProxy
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 似乎没有与已发布的问题类似的问题,因此我将继续询问。 我正在开发一个项目,该项目可以从拥有两到四台服务器处理后端Web服务的传入请求中受益。该服务不需要SSL,但确实需要支持偶尔长时间运行的进程(最长120秒)。 该项目目前没有购买硬件负载平衡解决方案的资金。 以前,我使用HAProxy作为解决方案,发现它非常简单明了。Windows是否有类似的产品(服务器2003或2008)提供类似的配置选项并作为轻量级服务运行? 由于无法控制的原因,我无法设置Linux机器(物理或虚拟),因此我正在寻找可以在Windows机器上部署的行为。 我只能找到似乎属于此类的Perlbal。为了不让自己保持开放态度,我会相信唯一的答案。

2
绑定到haproxy中的所有IPv4和IPv6接口
我想配置HAProxy的绑定到tcp和tcp6插座上的所有接口(即,0.0.0.0:80和:::80)。 我可以通过以下设置实现此目标: listen web bind :80 v4v6 bind :::80 v6only 有没有比这更短的方法了? 虽然我希望它的行为有所不同,但该v4v6关键字使haproxy仅绑定到v4套接字。
13 haproxy 

2
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通信?
13 haproxy 

4
haproxy记录到syslog
我ppa:vbernat/haproxy-1.5按照http://haproxy.debian.net/在ubuntu 14.04上通过apt-get安装了haproxy 1.5 问题是它登录到/var/log/syslog而不是/var/log/haproxy.log 设置基本上是默认设置: /etc/haproxy/haproxy.cfg global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # …

2
仅当服务器关闭时,HAProxy开关
假设我有2台服务器-SA和SB。是否可以将HAProxy配置为像这样工作: 所有连接均进入SA-> SA断开-> HAProxy将所有连接切换至SB->直到SB不断开-没有连接进入SA,即使再次恢复连接-> SB断开-> HAProxy切换至SA。 。 简而言之,我希望HAProxy仅在当前服务器出现故障时才进行切换。也许我应该使用HAProxy以外的其他工具?

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') 目前的方法 为了达到上述目的,我使用以下配置。 这是一个测试,具有非常低的限制(前端有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 …
12 proxy  haproxy 

6
跨多个静态文件服务器进行负载平衡以实现带宽分配的最佳方法?
首先,我将向您解释我的情况。我正在运行一个相当受欢迎的网站作为附带项目,因此我无法真正投入大量资金。我目前只有一台服务器,前面有HAProxy,向Apache发送正常请求,向Lighttpd发送所有静态文件请求。这非常有效,因为所有php和post请求均由Apache处理,而所有图像均发送到速度更快的Lighttpd(该站点主要是图像,因此这很重要)。不必设置一个子域来提供图像会很好,因为短网址也非常重要,因此,我之所以使用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,因为它们确实很昂贵,而且毕竟这只是一个附带项目。 你明白我的问题吗?让我知道我是否解释不正确或您需要更多信息。

2
使用HAProxy记录整个POST正文?
我正在尝试查找javascript客户端与应用程序服务器进行交互的方式的一些问题,并希望查看来回传递的整个http有效负载(标头,正文和所有内容)。 碰巧的是,在应用程序服务器之前已经有一个haproxy服务器,因此我希望能够使用haproxy提供相关的日志。显然,这在生产环境中很难打开,但是我有一个完整的环境克隆,可以在进行调试时将其隔离。 有没有办法让haproxy记录整个HTTP有效负载,以记录去往特定后端服务器的POST请求?
12 haproxy 

2
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 …
11 haproxy 

1
如何添加包含原始请求资源的绝对地址的自定义标头
我有以下设置: |-------|--- backend1:8080 example.com:80---|HAProxy|--- backend2:8080 |-------|--- backend3:8080 我想配置HAProxy以添加包含原始URL的自定义标头。例如,如果用户请求http://example.com/foo?bar=baz,即: GET /foo?bar=baz HTTP/1.1 Host: example.com:80 我希望HAProxy将此请求转换为后端,如下所示: GET /foo?bar=baz HTTP/1.1 Host: backend1:8080 x-custom-header: http://example.com/foo?bar=baz 该reqadd选项仅允许我添加具有静态值的标头。我能够使用reqrep以下命令从请求中获取路径部分: reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2 但不幸的是,这仅捕获了原始url的路径部分,导致了以下标头: x-custom-header: /foo?bar=baz 所以我的问题是,在HAProxy 1.4中是否可以将Host标头和HTTP请求的第一行都组合到自定义标头中
11 haproxy 

3
Nginx应该位于HAProxy的前面还是相反?
我在网站基础架构设计方面的经验很少。我知道这可能取决于具体情况。该网站应该: 1)需要某些页面(例如登录页面)的HTTPS支持,而其他页面只是HTTP页面。 2)需要多个Web服务器,因此需要一些负载平衡。 3)需要HTTP缓存和压缩以提高性能。 4)一些请求(例如图像上传)应路由到专用后端服务器。因此,需要基于URL的平衡。 我知道NginX和HAProxy都是不错的开源反向代理和/或负载均衡器。由于HAProxy不支持SSL,因此Nginx的负载平衡不如HAProxy。我都吃 那么,我应该将Nginx(作为反向代理)放在HAProxy(作为负载均衡器)的前面还是相反? 谢谢

1
是否可以在使用haproxy检查SSL之前重定向https连接?
我有两个域,myexample.com和my-example.com。我希望任何一个域的所有流量都转到https://www.my-example.com,该站点具有SSL证书。我没有域名myexample.com的SSL证书。 我有http://myexample.com,http://www.myexample.com,http://my-example.com和http://www.my-example.com所有重定向到https://开头WWW。 my-example.com没问题,但是,当我为https://myexample.com或https://www.myexample.com设置重定向时,它会在重定向之前检查其SSL证书,因此我总是会获得证书错误。 有没有一种方法可以进行重定向,而无需对我要重定向的非SSL域进行SSL检查? 我的配置文件的相关部分: frontend www-https bind xxx.xxx.xxx.xxx:443 ssl crt /etc/ssl/private/www.my-example.com.pem reqadd X-Forwarded-Proto:\ https redirect prefix https://www.my-example.com code 301 if { hdr(host) -i myexample.com } redirect prefix https://www.my-example.com code 301 if { hdr(host) -i www.myexample.com } default_backend www-backend
11 ssl  haproxy 

4
Haproxy不记录请求吗?
因此,我对Haproxy进行了配置,以便日志记录将通过rsyslog进行,并且现在将其全部转储到一个文件中。 当我在启动时收到那些“启动”消息时,它无疑是日志记录,但是根本没有HTTP请求记录日志。我的配置有什么问题? haproxy.cfg: global log /dev/log local0 debug chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.