目前,我正在CentOS 6上推出HAProxy,它将向某些Apache HTTPD服务器发送请求,并遇到性能问题。 在过去的几天中,我花了大量的search时间,在基准testing中仍然不能达到10k / sec以上的连接速度(有时候我也能达到30k / sec)。 我将内部和外部NICS的TX / RX队列的IRQ固定在独立的CPU内核上,并确保HAProxy固定在它自己的内核上。 我也对sysctl.conf进行了如下调整: # Max open file descriptors fs.file-max = 331287 # TCP Tuning net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65023 net.ipv4.tcp_max_syn_backlog = 10240 net.ipv4.tcp_max_tw_buckets = 400000 net.ipv4.tcp_max_orphans = 60000 net.ipv4.tcp_synack_retries = 3 net.core.somaxconn = 40000 net.ipv4.tcp_rmem = 4096 8192 16384 net.ipv4.tcp_wmem = 4096 8192 16384 […]
我的要求: 加权的RR负载均衡 不需要粘性会话支持 不需要SSL 不需要HTTP 1.1来后台 所以有效地,我只需要非常简单的HTTP负载balacing! 我的老板要求尝试HA代理,但我想知道,如果HA代理对我来说是过度杀手 ,我想知道什么是使用HA代理的好处,相比现有的nginx'HttpUpstreamModule 例如(现有的nginxconfiguration) upstream backend { server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; } 由于我以前不使用HAProxy ,因此我想听取您的意见。
我们的基础架构由运行HAProxy和Apache的负载均衡器组成,负责将stream量转发到仅运行Apache的应用服务器。 在过去的几天里,我们已经看到负载均衡器高兴地传递连接洪水,但连接迅速压倒我们的应用服务器。 他们变得没有反应,我们唯一的缓解策略是推出更多的应用服务器来维持洪水。 起初,我们无法确定为什么这些服务器会因为负载平衡器上没有真正的峰值stream量而停止运行,但经过一番调查后,我们发现Apache连接的数量已经超出了预期。 附上一些似乎是洪水唯一指标的图表。 我已经将每个后端服务器的HAProxy maxconn指令降低到了一个更合理的数字(之前的默认值是255),但是我担心新的合法连接将被延迟,直到洪水平息。 该服务似乎对于具有现有连接的用户来说是起作用的,但是由于HAProxy是速率限制而不考虑主机,所以它将出现在新的连接和外部监视服务中。 我们还有什么可以做的(HAProxy或Apache)来帮助我们维持负载,还是应该在networking之外进行过滤? 由于stream量非常小,我觉得还有更多的事情可以做,但是我对HAProxy的所有function并不了解。 我也有兴趣探讨HAProxy是否可以基于IP进行速率限制,但是我还没有发现任何东西。 编辑:我们审计了其中一个负载平衡器的访问日志,最高IP的请求数如下: 1070 69.64.*.* 1227 1.9.*.* 1235 64.71.*.* 1376 69.64.*.* 1459 12.189.*.* 1572 1.9.*.* 1678 208.106.*.* 1982 5.15.*.* 2630 23.22.*.* 3300 76.125.*.* (our office) 3543 216.38.*.* 因此,我们可以dynamic地禁止在一个小窗口内build立太多会话的IP,但是我们不能根据总的请求来阻塞,因为这也能吸引我们。 这条路线有道理吗? 我们应该在负载平衡器上的iptables级别上执行此操作吗? 任何意见非常感谢! 谢谢, 克里斯
我有一个网站,开始得到大量的stream量,就在前一天,我们的负载均衡器(haproxy)所在的数据中心出现networking中断。 这让我感到担心,尽pipe我尽全力使系统完全冗余,但我仍然无法使DNS冗余,我认为这不是一个简单的解决scheme。 只有我能够find的东西是从dnsme等地方注册DNS故障转移,但是他们花了太多的钱出现在初创公司。 即使他们的企业计划每个月也只会给你五千万个查询,我们在一个星期内使用它。 所以我的问题是,有没有任何自我托pipe的DNS我们可以做,如dnsme如何提供故障转移?
当我从1.4.12切换到1.5-dev12时,我遇到了HAProxy崩溃的问题,没有任何解释。 我正在切换的原因是SSL卸载。 我的configuration文件没有任何错误,这是相当简单的,它适用于1.4 – 但由于某些原因,当我运行1.5-dev12我看到日志logging,我已经设置了两个后端,然后当我碰到其中一个前端的时候,我在浏览器中得到一个HTTP 400,当我检查时突然HAProxy不再运行了。 我知道,缺乏对HAProxy的SSL支持的常见解决方法是使用Stud,我可能会这样做,因为我需要为我的服务提供SSL解决scheme,但是在我进入该世界之前,我想我可能会看到如果有人遇到同样的问题,并可能知道如何解决这个问题。 服务器是Ubuntu 10.04,我在Exceliance博客上按照上面的说明进行操作。 编辑:在凯尔·布兰特的build议下,我做了更多的调查。 我将gdb连接到haproxy进程,当发生崩溃时,我得到了: Program received signal SIGSEGV, Segmentation fault. 0x0804e5c2 in dequeue_all_listeners (list=0x9e1a418) at src/protocols.c:184 184 list_for_each_entry_safe(listener, l_back, list, wait_queue) { PS HAProxy太棒了,所以谢谢Exceliance为我们提供了如此有用的东西:)
我不知道如何解决这个问题。 我得到“503服务不可用”http错误所有“nginx上游”代理传递调用haproxy fast_thin和slow_thin(服务器127.0.0.1:3100和服务器127.0.0.1:3200),负载均衡6瘦服务器(127.0.0.1: 3000 .. 3005)。 像/博客等静态文件目前很好。 falldown是:在端口80上的nginx – 在3100和3200上的haproxy – 在3000 .. 3005上再单击Rails。 这里是/etc/nginx/nginx.conf: user nginx; worker_processes 2; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; tcp_nopush on; keepalive_timeout 65; tcp_nodelay on; include […]
我想负载平衡+故障转移备份多个vpsnetworking服务器托pipe在不同的供应商。 我听说HAProxy需要在同一个子网下有多台服务器,再加上负载均衡器之间的共享(虚拟)IP地址。 但在我的情况下是不可能的,因为每个VPS都在不同的节点/networking上。 有没有办法在这种设置中使用HAProxy? ( 请解释一下,我不想听到你的“是”的答案 ) 那么NginX呢? 是否有可能达到与Nginx相同的结果? (当服务器位于不同的networking上时) 我知道Round Rubin DNS,但是它不提供真正的故障转移解决scheme,既不是服务器之间的负载平衡。
我一直在使用这个命令重启haproxy成功: sudo haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) 但是,升级到最新版本的Haproxy 1.5之后,我注意到这并没有像预期的那样工作。 更具体地说,我结束了两个Haproxy进程运行(一个老的,另一个新的)。 有什么改变吗?
我一直在关注这个教程: http://www.exratione.com/2012/12/websockets-over-ssl–haproxy-nodejs-nginx/ …但我一直有问题通过HAProxy通过SSL连接到Nginx。 我得到Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error. 在Chrome之后的HTTP到HTTPSredirect和(Error code: ssl_error_rx_record_too_long)在Firefox中。 我认为这与文件串联来创build.pem文件有关。 我试过的东西: 禁用HAProxy并直接使用SSL来访问Nginx 在HAProxy上不使用SSL来访问Nginx,这也可以 按照以下步骤创build新的SSL证书: http : //wiki.nginx.org/HttpSslModule 检查SSL证书文件的权限 我的Nginxconfiguration: server { listen 8080 ssl; ## listen for ipv4; this line is default and implied root /usr/share/nginx/www; index index.html index.htm; server_name localhost; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; […]
如果互联网stream量通过SSL上的HAproxy负载均衡器传递给nginx Web服务器,那么如何logging客户端的IP地址? 我知道这样的方法: 我怎样才能使用HAproxy SSL和获得X-Forwarded-For头,并告诉PHP,SSL正在使用? 在请求到达HAproxy之前,您可以去掉ssl。 有没有反向login客户端IP地址,而无需剥离HAproxy之前的SSL? 我为http连接使用选项httpclose和选项forwardfor。 有没有这样的tcp连接相当于?