Articles of haproxy

HAProxy – 如果文件存在,则启用维护模式

我们正在使用stunnel和HAProxy来满足我们的负载平衡需求。 在nginx中,您可以根据子级服务器上的文件的存在来启用维护状态(请参阅configurationnginx以在文件存在时提供503 )。 使用HAProxy时,是否可以根据文件的存在将服务器节点置于“维护模式”?

Nginx请求重试(Nginx – Haproxy Combination)

我想问一下关于Nginx请求的重试。 我有一个运行在后端的Nginx,然后将请求发送到HaProxy然后在Web服务器上传递它并处理请求。 我正在重新加载我的Haproxyconfigurationdynamic提供弹性。 问题是当我重新加载Haproxy时请求被丢弃。 所以我想有一个解决scheme,我可以从Nginx重试。 我查看了http模块中的proxy_connect_timeout,proxy_next_upstream和服务器模块中的max_fails和fail_timeout。 我最初只有1个服务器在上游连接,所以我只是这个了两次现在和更less的请求被丢弃(只有当)有同样的服务器上游两次,如果我有同样的服务器3-4次下降增加)。 所以,首先我想现在,当一个请求无法build立从Nginx到Haproxy的连接,所以当重新加载时,似乎连接被认为是错误和直接的请求被丢弃。 那么我怎么能指定失败后的时间,我想重试从Nginx到上游的请求,或者Nginx把它作为失败请求处理的时间。 (我已经尝试越来越proxy_connect_timeout – 没有帮助,mail_retires,fail_timeout,并把两个相同的上游服务器(迄今为止最好的结果) Nginxconfiguration文件 上游gae_sleep { server 128.111.55.219:10000; } 服务器{ listen 8080; server_name 128.111.55.219; root /var/apps/sleep/app; # Uncomment these lines to enable logging, and comment out the following two #access_log /var/log/nginx/sleep.access.log upstream; error_log /var/log/nginx/sleep.error.log; access_log off; #error_log /dev/null crit; rewrite_log off; error_page 404 = /404.html; set […]

从HA后面的wwwredirect到nginx上的非www域

我有点困惑。 我有nginx运行在80以外的端口。 # part of nginx.conf server { listen 7000; include /etc/nginx/my_app.conf; } 这是因为我的HAProxy在同一台服务器上运行在80上。 # Approximate haproxy.cfg listen foo 0.0.0.0:80 option forwardfor server web01 web01:7000 maxconn 25000 check 如何让nginx提供从www.example.com到example.com的redirect? 我尝试了以下,但nginx抱怨,它不能听80(这是有道理的,因为haproxy在那里听)。 server { server_name www.example.com; rewrite ^ http://example.com$request_uri? permanent; }

在数据库模式下Haproxy缓慢重新加载

最近我开始使用伟大的工具进行负载均衡 – Haproxy。 只有一个令人不安的事情,我不知道如何处理它。 我们使用haproxy来负载平衡mysql的stream量。 当有大量的stream量和很多的连接,haproxy需要很长的时间来重新加载(〜30分钟),stream量较less,它会在1分钟内重新加载。 我重新加载: service haproxy reload 当然,如果我需要在configuration上做一个紧急的改变,我希望haproxy能够快速地重新加载。 终止等待断开的haproxy实例会导致msyql连接断开连接。 它看起来像我在haproxy的设置或应用程序的设置中犯了错误。 如果你知道如何解决这个问题,请帮助我。 谢谢!

什么是HAProxy appsession请求 – 学习?

我正在阅读HAProxy手册 ,有一个我不理解的部分: request-learn If this option is specified, then haproxy will be able to learn the cookie found in the request in case the server does not specify any in response. This is typically what happens with PHPSESSID cookies, or when haproxy's session expires before the application's session and the correct server is selected. It […]

HAProxy + nginx在24小时内达到最大numtcpsock

我正在运行一个相对简单的VPS(一个媒体寺(ve))与几个基于PHP的网站和(最终)几个节点服务器。 为了启用WebSockets支持,我在端口80上使用HAProxy,该端口路由到nginx或特定的Node进程。 然而,我最近遇到了一个问题,在24小时内,我的服务器达到了打开的TCP连接的最大允许数量(Parallels Power Panel中的numtcpsock设置为1000)。 单独运行nginx不会导致这个问题,而且我目前没有活动的Node后端服务器。 Nginx通过一个UNIX域套接字连接到PHP(同样,单独的nginx不会出现这个问题)。 有什么想法可能导致这个? 我的configuration: global ## 00-base maxconn 500 nbproc 2 defaults ## 00-base mode http frontend all ## 00-ports bind 0.0.0.0:80 ## 10-config timeout client 86400000 default_backend nginx backend nginx ## 00-timeouts timeout http-keep-alive 5000 timeout server 10000 timeout connect 4000 ## 10-servers server main localhost:8000 提前致谢! 更新 :在一点点的ing​​之后,我能够确定90%以上的开放TCP套接字实际上是由HAProxy拥有的,绝大多数是在CLOSE_WAIT或者FIN_WAIT2状态。 […]

我应该使用一个ssl终结者或haproxy?

我试图找出如何设置我的架构的一个socket.io应用程序,将需要https和wss连接。 我在网上发现了许多教程,build议您在haproxy前使用类似stud或stunnel的东西,然后将未encryption的stream量路由到您的应用程序。 如果我要走这条路线,是不是build议把haproxy和ssl终结者放在不同的实例上呢,还是在同一个EC2服务器实例上呢? 如果我不想使用单独的ssl终止符,我可以使用haproxy来终止ssl吗? 或者,而不是将这些https和wss连接代理到我的应用程序,并让节点应用程序终止ssl本身?

HA Proxy Stick-table和tcp-connectionconfiguration

我正在使用HA代理HA-Proxy版本1.4.18 2011/09/16我试图插入到/etc/init.d/haproxy.cfg文件 # Use General Purpose Couter (gpc) 0 in SC1 as a global abuse counter # Monitors the number of request sent by an IP over a period of 10 seconds stick-table type ip size 1m expire 10s store gpc0,http_req_rate(10s) tcp-request connection track-sc1 src tcp-request connection reject if { src_get_gpc0 gt 0 } # […]

HAProxy造成延迟

我正在尝试将HAProxyconfiguration为为我创build的自定义Web服务器执行负载平衡。 现在我注意到随着返回消息的大小增加,HAProxy的延迟日益增加。 例如,我跑了四个不同的testing,结果如下: 通过HAProxy响应15kb: 平均。 响应时间:.34秒 交易速度:763 trans / sec 吞吐量:11.08 MB /秒 通过HAProxy响应2kb: 平均。 响应时间:.08秒 交易速率:1171转/秒 吞吐量:2.51 MB /秒 响应15kb直接到服务器: 平均。 响应时间:.11秒 交易速率:1046转/秒 吞吐量:15.20 MB /秒 响应2kb直接到服务器: 平均。 响应时间:.05秒 交易速率:1158转/秒 吞吐量:2.48 MB /秒 所有事务都是HTTP请求。 正如你所看到的,响应时间比响应时间更短的响应时间似乎有更大的差异。 我明白使用HAProxy会有一些延迟。 不知道是否重要,但testing本身是使用围攻运行。 在testing期间,HAProxy后面只有一台服务器(与直接到服务器testing中使用的服务器相同)。 这是我的haproxy.config文件: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 10000 user haproxy group haproxy daemon […]

使用haproxy和http-send-name-header主机进行负载平衡

我遇到了以下问题: tldr; 使用http-send-name-header Hostdynamic重写HTTP主机头时http-send-name-header Host haproxy似乎搞乱了HTTP响应头。 这样做使用nginx和proxy_set_header Host $upstream_addr;时可以正常工作proxy_set_header Host $upstream_addr; 我需要到达目标机器:1234是: Host: target-machine:1234而不是Host: balancer:1234 长版 我们有一个只能运行32位JVM的客户安装,因此我们在n个不同的端口上产生n个相同应用程序的实例: target-machine:8766 target-machine:8767 target-machine:8768 target-machine:8769 而且我们确实有一台平衡器在专用balancer机上运行。 客户端必须基于IP(我们使用的软件的遗留问题)进行平衡。 现在我们来到这个丑陋的部分:我们打算使用的应用程序依赖于HTTP Host头字段,因为有些操作会导致它发送一个内部请求。 在我们当前的设置中,这个内部请求发送到负载均衡器,然后负载均衡器将其发送到目标机器之一,但是必然发送到它发起的目标机器。 我之前使用nginx和上游模块 (但是我们不能再这样做了,因为这个软件的另一个必须是HTTP代理不应该被代理caching,因为它的上传进度表取决于这个( 叹息… ))并且可以解决这个问题join: proxy_set_header Host $upstream_addr; ,但nginx不支持上传stream媒体。 我发现http-send-name-header Host可能正是我所需要的(请参阅我的haproxy.cfg ),但会导致另一个问题,当我将该行更改为http-send-name-header $AnythingButHost 该指令将正确的服务器名称添加到头部,但似乎与代理请求混乱,因为jetty过早地closures了stream,并抛出org.mortbay.jetty.EofException以及。 我需要的是一个主机头像: Host: target-machine:8766 代替 Host: balancer:8181 对于浏览器来说,这个问题如下图所示(发送内容的大小从几乎完整到几KB不等)。 当我不更改主机头时它会立即起作用,但是如果我将主机头改为完全相同的值,但是使用nginx,它就可以工作。 这真的让我感到困惑。 如果我可以帮助你的任何更多的信息,让我知道。