Articles of haproxy

如果不可用(不只是下)

使用haproxy,我想要: “主”服务器和“备份”服务器池,尽pipe它们不一定必须位于不同的池中。 每个后端都有一个较低的“maxconn”(在本例中为1) 客户不应该排队等候。 如果“主”池中没有立即可用的服务器,则应立即将其分配给“备份”池。 现在我有一个后端,“主”服务器有一个荒谬的高权重,它“工作”。 acl use_backend + connslots是沿着正确的路线,但没有在我自己的答案补丁是不完美的。 奖金点不需要修改haproxy二进制。

是否可以使用多个负载平衡器将stream量redirect到我的应用程序服务器?

我是新来的负载平衡,我想知道是否有可能使用多个负载平衡器redirectstream量到我的应用程序服务器。 我真的不明白如何做到这一点。 一个域名不能与某个服务器的IP地址一一对应(在这个例子中是一个负载均衡器的IP地址)? 如果每个负载均衡服务器具有不同的IP,那么两个负载均衡器(或10个负载均衡器或50或100)是如何接收请求的?

负载均衡的IIS。 我应该使用NLB,还是基于linux的反向代理或其他?

对至less2-3个运行多个.NET应用程序的Windows 2008 R2 IIS Web服务器进行负载平衡最好的方法是什么? 我的select似乎是: 1)基于硬件的networking设备负载均衡器,如Cisco CSS 2)Windows NLB 3)某种基于Linux的代理,haproxy或其他 这三台服务器在vSphere场中作为虚拟机,所以我有能力在高负载时克隆实例数。 我控制vSphere主机插入的交换机(Cisco 3750),但不控制交换机/路由基础设施。 (1)太贵了,可能是我的需要矫枉过正。 我已经包含了这个,以防有人在我现有的networking工具包中做出一个狡猾的方法,我怀疑。 (2)似乎是显而易见的“内置”选项,但似乎很复杂的networking接口,多播,以及其他似乎是不必要的复杂的事情。 这也是相当愚蠢的,因为如果开始抛出500错误或者出错,它不能从池中移除主机 (3)是最有趣的select,因为它似乎提供了最大的灵活性和可定制性,但不必乱搞networking。 但是,虽然我熟悉lighttpd等的反向代理function,但我不太了解HAProxy等其他选项,这些选项可能会提供更多。 你会去哪,还有什么我没有想到的?

在后端启动时,HAProxy使用NOSRV进行响应

我有一个奇怪的情况,请求我的HAProxy返回一个503. HAProxy日志显示它返回一个NOSRV错误: Mar 26 19:47:01 localhost haproxy[23910]: 10.0.0.30:34261 [26/Mar/2013:19:46:48.579] fe v2/<NOSRV> 12801/-1/-1/-1/12801 503 212 – – SC– 0/0/0/0/0 0/0 "GET /path/v2/ HTTP/1.1" 在此期间,后端服务器被确认并正在接收来自内部负载平衡器的stream量。 这件事情自发地发生,没有任何configuration或HAProxy的其他变化。 重新启动HAProxy解决了这个问题。 有谁知道这是一个已知的问题? 感谢您的帮助/见解。 谢谢。 我的configuration如下所示: global maxconn 1000 # Total Max Connections. This is dependent on ulimit daemon nbproc 1 # Number of processing cores. Dual Dual-core Opteron is 4 cores […]

HAProxy SSL农场选项

我想弄清楚如何设置haproxy和SSL反向代理服务器的SSL场,我正在寻找一些一般性的build议: 是否有可能满足以下所有条件: 负载平衡请求针对SSL场,并有故障转移,所以多个SSL盒将成为可能(也许haproxy的sslcheck将有助于这一点)。 获取具有实际客户端IP地址的HTTP日志。 没有TProxy要求 如果所有这三个都不可能,我想知道什么是权衡。 现在我正在考虑类似下面的内容,但这可能会改变: Haproxy 443 TCP Proxy Frontend – > SSL代理(也许Nginx)在高端口 – > Haproxy HTTP前端 – > Web服务器 我意识到我可以跳过第二跳回haproxy,但HAproxy中的一切的单一视angular可能是好的。 另外如果我必须使用TProxy,也许回到haproxy从SSL农场将使路由更简单? 参考文献: http://haproxy.1wt.eu/download/1.5/doc/configuration.txt http://1wt.eu/articles/2006_lb/index_05.html

机架空间和centos的负载平衡器性能不佳

我负载testing负载平衡的不同选项,并从Nginx,haproxy和清漆得到的结果很差。 我在Rackspace有一个4GB的负载均衡器,击中4x1GB的应用服务器。 我打了一个名为“/慢”的url,在响应之前故意等待500毫秒。 如果我直接点击应用服务器,它可以处理每秒1600-1800的连接速度。 如果我点击Nginx负载平衡器,它只能处理大约2000个连接。 我希望更接近4×1600 = 6000.下面是我用来testing它的命令。 这是在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 这是我的nginxconfiguration: https : //gist.github.com/1299501 所以,这是奇怪的事情,不pipe我使用nginx,haproxy还是varnish,我都得到了大致相同的结果。 但是,我testing了Rackspace的新型云平衡器,并获得了更好的性能(在7000 / s时performance很好)。 既然nginx和其他的都运行在我设置的实例上,并且rackspace平衡器没有运行,我猜测这个系统有些问题。 我宁愿使用我控制的平衡器,所以我可以添加caching,gzip,ssl和其他东西。 我怎样才能找出瓶颈呢? 有什么我应该调整系统来获得更好的性能? 我需要超过4GB的RAM吗? (在testing中拉姆的使用率不高)。 任何其他的随机想法? 更新:我把平衡器的尺寸调整到了8GB,性能performance更好,达到6000-7000,或者与机架式平衡器相比。 这没有任何意义,因为它之前没有用完RAM。 更新:下面是一个httperf输出的例子,当我重载平衡器(在8GB的版本上,比以前更高,但错误是类似的): https ://gist.github.com/1299628

Haproxy:拒绝来自文件的用户代理的stream量

我试图通过使用haproxy ACL和-f选项来拒绝来自特定用户代理的连接(通过匹配user-agent头的子string)从文件读取。 然而,它不工作,它运行,如configuration被忽略。 有没有更好的经验与haproxy找出我失踪? 或者关于如何debugging这个haproxyconfiguration的一些提示? 我正在运行haproxy 1.4.18。 这是haproxy.cfg的摘录: listen http 0.0.0.0:80 acl abuser hdr_sub(user-agent) -f /etc/haproxy/abuser.lst tcp-request content reject if abuser mode http server www1 127.0.0.1:8080 maxconn 10000 这是abuser.lst文件的内容: # annoying bots annoyingbot1 annoyingbot2

Nginx应该位于HAProxy的前端还是相反?

我在网站基础架构devise方面没有经验。 我知道这可能是具体情况。 该网站应该: 1)需要某些页面(例如login页面)的HTTPS支持,而其他页面只是HTTP页面。 2)需要多个Web服务器,以便需要一些负载平衡。 3)需要HTTPcaching和压缩来提升性能。 4)一些请求(例如图像上传)应该被路由到专用的后端服务器。 所以,基于URL的平衡是必需的。 我知道Nginx和HAProxy都是很好的开源反向代理和/或负载平衡器。 由于HAProxy不支持SSL,而Nginx负载平衡不如HAProxy。 我将采取两个。 那么,我应该把Nginx(作为反向代理)放在HAProxy(作为负载平衡器)的前面,还是相反? 谢谢

从JDBC池连接时,HAProxy,客户端超时

我有一个Web应用程序(Tomcat的/hibernate/ DBCP 1.4),运行MySQL的查询,这对一定的负载工作正常,说50秒的查询。 当我通过HAProxy(仍然只使用一个数据库)传递相同的中等负载时,我得到一个失败,也许每500个查询就有一个失败。 我的应用报告: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 196,898 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. at sun.reflect.GeneratedConstructorAccessor210.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3567) … Caused by: java.io.EOFException: Can not read […]

HAproxy子域redirect

我拥有一个像xyz.com这样的域名,我试图用haproxyredirect其他IP地址的子域名。 我在服务器上使用tomcat,并使用haproxy将端口80上的传入请求redirect到端口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 为了做这个redirect,我该如何设置haproxy?