我可以想象两个设置: 负载平衡然后caching +– Cache server #1 (varnish) — App server #1 / Load Balancer (haproxy)-+—- Cache server #2 (varnish) — App server #2 \ +– Cache server #3 (varnish) — App server #3 caching然后负载平衡 +– App server #1 / Cache Server (varnish) — Load Balancer (haproxy) –+—- App server #2 \ +– App server #3 […]
我正在使用HAProxy将子域上的请求发送到node.js应用程序。 我无法让WebSockets工作。 到目前为止,我只能够让客户端build立一个WebSocket连接,但之后会有一个断开连接。 我在Ubuntu上。 我一直在使用各种版本的socket.io和node-websocket-server 。 客户端是最新版本的Safari或Chrome。 HAProxy版本是1.4.8 这是我的HAProxy.cfg global maxconn 4096 pidfile /var/run/haproxy.pid daemon defaults mode http maxconn 2000 option http-server-close option http-pretend-keepalive contimeout 5000 clitimeout 50000 srvtimeout 50000 frontend HTTP_PROXY bind *:80 timeout client 86400000 #default server default_backend NGINX_SERVERS #node server acl host_node_sockettest hdr_beg(host) -i mysubdomain.mydomain use_backend NODE_SOCKETTEST_SERVERS if host_node_sockettest backend NGINX_SERVERS server […]
我们在亚马逊EC2上已经和HAProxy打了几天了, 迄今为止的经验已经非常好,但是我们却一直在阻碍软件负载平衡器的性能提升。 我们并不完全是Linuxnetworking专家(我们通常是一个.NET商店),但是我们迄今为止一直都在持有我们自己的产品,试图设置合适的限制,检查内核消息和tcpdump是否有任何违规行为。 到目前为止,我们已经达到了约1700个请求/秒的高峰,此时客户端超时(我们一直在使用和调整httperf为此目的)。 一位同事和我正在听最近的Stack Overflow播客,其中Reddit创始人指出,他们的整个网站都跑掉了一个HAProxy节点,而且到目前为止还没有成为一个瓶颈。 确认! 要么是没有看到那么多的并发请求,我们做了一些可怕的错误,或者EC2的共享特性限制了Ec2实例的networking堆栈(我们使用的是一个大的实例types)。 考虑到Joel和Reddit创始人都同意networking可能成为限制因素,这有可能是我们看到的限制吗? 任何想法,非常感谢! 编辑它看起来像实际问题不是,实际上,与负载平衡节点! 罪魁祸首实际上是运行httperf的节点,在这种情况下。 由于httperf为每个请求构build和拆分套接字,所以在内核中花费了大量的CPU时间。 当我们提高请求速率时,TCP FIN TTL(默认为60s)将套接字保持太长时间,对于这种使用情况,ip_local_port_range的默认值过低。 基本上,在客户端(httperf)节点持续创build和销毁新套接字几分钟之后,未使用的端口数量用完了,并且在此阶段后续的“请求”出错,产生低的请求/秒数和大量的错误。 我们也看过nginx,但是我们一直在和RighScale合作,他们已经有了HAProxy的插件脚本。 噢,当然,除非certificate是绝对必要的,否则我们的时间太紧了。 实际上,在AWS上允许我们使用nginx并行地(如果有保证的话)testing另一个设置,并在晚些时候进行切换。 这个页面很好地描述了每个sysctlvariables(在这种情况下,调整了ip_local_port_range和tcp_fin_timeout)。
使用SSL连接到HAProxy服务器时,出现随机出现的连接失败。 我已经确认这些故障发生在JDK版本1.7.0_21和1.7.0_25上,但是没有发生在1.7.0_04或1.6.0_38上。 例外是 Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397) at SSLTest2.main(SSLTest2.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 这些失败仅在使用TLS SSL上下文时发生,而不是在默认上下文中发生。 以下代码在循环中运行了一千次,在循环完成之前发生了故障(大约2%的连接失败): SSLContext sslcontext = SSLContext.getInstance("TLS"); sslcontext.init(null, null, null); SSLSocketFactory factory = sslcontext.getSocketFactory(); SSLSocket socket = (SSLSocket)factory.createSocket("myserver", 443); //socket.startHandshake(); SSLSession session = socket.getSession(); session.getPeerCertificates(); socket.close(); 但是,如果我以这种方式创buildSSL上下文,则在我提到的任何Java版本上都没有连接失败: SSLSocketFactory factory […]
我正在使用HAProxy进行负载平衡,只希望我的网站支持https。 因此,我想将端口80上的所有请求redirect到端口443。 我将如何做到这一点? 编辑:我们想在https上redirect到相同的url,保留查询参数。 因此, http://foo.com/bar会redirect到https://foo.com/bar
我有一个关于我的haproxyconfiguration的问题: #——————————————————————— # Global settings #——————————————————————— global log 127.0.0.1 syslog emerg maxconn 4000 quiet user haproxy group haproxy daemon #——————————————————————— # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #——————————————————————— defaults mode http log global option abortonclose option dontlognull option httpclose option httplog option forwardfor […]
所以根据haproxy作者,谁知道关于http: 发明了“保持活力”,以便在CPU速度降低100倍时降低服务器上的CPU使用率。 但是没有说的是,持久连接会消耗大量的内存,除了打开它们的客户端之外,任何人都不能使用它们。 今天在2009年,CPU的价格非常便宜,内存仍然限制在几千兆的架构或价格。 如果一个网站需要保持活力,那么确实存在一个问题。 高负载的网站通常禁用保持活动,以支持最大数量的同时客户端。 没有保持活力的真正缺点是获取对象的延迟稍微增加。 浏览器将非保持活动网站上的并发连接数加倍,以弥补这一点。 (来自http://haproxy.1wt.eu/ ) 这是否符合其他民族的经验? 即没有保持活力 – 是现在几乎不可知的结果? (它可能值得注意的是,使用websockets等 – 连接保持“打开”无论如何保持活着状态 – 对于响应速度非常快的应用程序)。 对于远离服务器的人来说效果会更好 – 或者在加载页面时从同一主机加载的工件数量很多? (我认为像CSS,图像和JS越来越多来自caching友好的CDN)。 思考? (不知道这是否是一个serverfault.com的事情,但我不会交,直到有人告诉我把它移到那里)。