Articles of haproxy

haproxy和持续的连接

我正在使用HAproxy在更多的Web服务器之间进行负载平衡。 这些Web服务器正在使用PHP和会话来保持会话打开。 现在,我认为当用户刷新页面时,会将其发送到其中一个服务器,但是如果他被发送到不同的服务器,他当然会放松会话,不是吗? 问题主要是:如何才能使客户端连接到相同的服务器? 这是我的后端configuration。 backend social_backend mode http option httplog option http-server-close option forceclose no option httpclose balance roundrobin option forwardfor timeout queue 5000 timeout server 86400000 timeout connect 86400000 timeout check 1s server socket1 10.10.10.1:81 weight 1 maxconn 1024 check server socket2 10.10.10.2:81 weight 1 maxconn 1024 check server socket3 10.10.10.3:81 weight 1 […]

为rabbitmqconfigurationHAProxy

我想使用HAProxy作为负载平衡器。 我想把两个rabbitmq服务器放在haproxy后面。 rabbitmq服务器都在EC2的不同实例上。 按照此参考configurationHAProxy服务器。 我的工作,但问题是消息不是发布在roundrobin模式。 消息只在一台服务器上发布。 我的要求是否有不同的configuration? 我在/etc/haproxy/haproxy.cfg中configuration listen rebbitmq *:5672 mode tcp balance roundrobin stats enable option forwardfor option tcpka server web2 46.XX.XX.XXX:5672 check inter 5000 backup server web1 176.XX.XX.XX:5672 check inter 5000 backup listen web-service *:80 mode http balance roundrobin option httpchk HEAD / HTTP/1.0 option httpclose option forwardfor option httpchk OPTIONS /health_check.html […]

HAProxy将HTTPSredirect到HTTP

我使用HAProxy作为负载平衡器,我想redirect到443(HTTPS)到80(HTTP)的任何stream量。 我的网站根本不支持HTTPS,我宁愿只redirect用户,而不是在浏览器中导致任何SSL警告。 所有我能find的是使用redirect location <to>语法,但据我所知,需要我硬编码的主机名。 负载平衡器接收各种主机名的连接,所以想保持相对的关系。

HAProxy + Percona XtraDB集群

我试图在一系列3个EC2实例上与Percona XtraDB集群一起设置HAproxy。 我在网上find了一些关于这个问题的教程,但是我有点卡住了。 Percona服务器和HAproxy服务器都运行Ubuntu 12.04。 HAProxy版本是1.4.18, 当我启动HAProxy时,出现以下错误:服务器pxc-back / db01已closures,原因:套接字错误,检查持续时间:2ms。 我不确定这个问题会是什么。 我已经validation了以下内容: EC2安全组端口是开放的 倒在我的configuration文件寻找问题。 我目前没有看到任何。 确保安装了xinetd 确保我正在使用mysql服务器的正确IP地址。 任何帮助,这是非常感谢。 这是我目前的configuration 负载平衡器 /etc/haproxy/haproxy.cfg global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy debug #quiet daemon defaults log global mode http option tcplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout […]

磅,HAproxy和HAproxy日志

我想弄清楚有关HAproxy日志logging的一件事。 基本上,我们在执行SSL终止的同一台主机上运行HAproxy前面的Pound,然后将请求传递给HAproxy。 我想弄清楚如何将客户端的IPlogging到HAproxy日志。 此刻,无论我做什么,我都得到以下login到HAproxy日志: Feb 27 19:37:00 localhost.localdomain haproxy[17365]: 127.0.0.1:44880 [27/Feb/2013:19:36:59.786] ssl_application ssl_application/app01 0/0/0/385/386 200 3470 – – —- 0/0/0/0/0 0/0 "GET / HTTP/1.1" 我知道127.0.0.1是磅代理请求到HAproxy的IP,但我想知道是否有任何方式如何获得login到HAproxy日志的实际客户端IP。 英镑configuration看起来像这样: User "www-data" Group "www-data" LogLevel 3 LogFacility local2 TimeOut 60 # poundctl control socket Control "/var/run/pound/poundctl.socket" ListenHTTPS Address 0.0.0.0 Port 443 Cert "/etc/pound/ssl/certificate.pem" # Allow PUT and DELETE also […]

HAProxy和stream媒体服务器的瓶颈问题

我正在研究HAProxy作为多个nginx服务器的负载平衡器。 每个服务器正在stream式传输一个静态文件(audio文件)。 Nginx将使用symfony2框架。 关于会话的亲和力/持久性,我将在nginx服务器上使用memcached。 我从一个有限的预算开始,所以我想尽可能灵活地扩展networkingscheme。 我会画出一个简单的问题: +—> nginx server 1 @ 1gbps | HAProxy <–+—> nginx server 2 @ 1gbps | +—> nginx server 3 @ 1gbps Ps:据我所知,我需要第二台haproxy服务器进行故障转移,但不幸的是,我现在买不起更多的服务器。 我主要关心的是如何用HAProxy完成“回复”。 根据我的理解,如果回复是通过HAProxy进行的,LB会成为一个瓶颈,因为它不能为端口容量提供更多的用户(假设它是一个stream量服务器,假设负载为95%)。 然而,我看到人们说HAProxy只做路由,但我不确定如果入站和出站stream量仍然通过HAProxy是什么意思。

haproxy / apache / tomcat – 没有结尾斜杠导致301redirect

我有这样的configuration: haproxy(80,443) – > httpd(8443) – > tomcat(8096) 转到https://websrv1/test将导致301redirect到haproxy应该代理请求的httpd端口。 所以用户被redirect到http://websrv1:8443/test 。 但是,如果用户转到https://websrv1/test/ – specifying a the trailing slash – 它工作得很好。 当用户不指定尾部斜线时,如何防止发生这种redirect? haproxyconfiguration? Apache的url重写? tomcat url重写?

debuggingHAProxy

我已经在本地testing/testing了一个服务器集群,而且没有任何问题。 我最近将服务器集群设置为进行实时testing,并且发现了问题,并且认为集群中的HAProxy可能会遇到一些问题。 首先,我将介绍一下集群的结构,也许我的设置有问题,也许我需要多个代理。 我有两个HAProxy平衡的服务器群集。 我们将它们称为SC1和SC2。 主集群是SC1,HAProxy的端口80上的任何内容都将被发送到SC1。 SC1会处理请求,并通过端口8080上的代理发送另一个请求到SC2。我不认为这会是一个问题,但我注意到我的服务器上我的日志往往说SC1无法连接到SC2,我相信这是因为我的HAProxy被超载。 我认为HAProxy被超载的原因是因为当我查看我的统计信息页面时,通常需要1秒才能做出响应。 因此,我决定看看HAProxy日志。 我注意到日志中有exception,我相信这可能与我的问题有关。 每隔一分钟左右(有时更多时候会less一些),我会得到以下消息: Oct 8 15:58:52 haproxy rsyslogd-2177: imuxsock begins to drop messages from pid 3922 due to rate-limiting Oct 8 15:58:52 haproxy kernel: [66958.500434] net_ratelimit: 2997 callbacks suppressed Oct 8 15:58:52 haproxy kernel: [66958.500436] nf_conntrack: table full, dropping packet 我想知道这是什么影响。 这是否会导致丢包,或者这也可能导致延迟? 我该如何解决这个问题? 我在Ubuntu 12.04LTS服务器上运行。 这是我的sysctl修改: fs.file-max […]

重载后HAproxy双重内存使用情况

由于高stream量和我们的应用程序的性质,以保持连接生活,我们haproxy进程消耗大量的RAM(通常30-40%的可用RAM)。 现在,当我们想添加/删除任何后端,我们必须重新加载haproxy。 在优雅重新加载期间(通过Ubuntu的默认init重新加载),一个新的haproxy进程被创build,它将服务于新的连接,现有的进程保持在那里,直到旧的连接被应用程序closures或由于超时等清理。这种行为是好的。 但是这两个进程几乎占用了所有可用的内存,事实上,如果第一个进程已经消耗了超过50%的RAM,那么任何重新加载都可能导致中断(还没有经历,但是增加的stream量将使其很快发生) 。 这迫使我们要么强行杀死旧的进程(丢失旧的连接),要么一直保持足够的(> 50%)RAM(浪费资源)。 我会很感激在这方面的任何帮助/指针。 我们使用haproxy 1.4.18在Ubuntu 12.04上。

如何检查Ubuntu 14.04内核是否有TPROXY

我正在使用Digital Ocean的Ubuntu 14.04映像,需要为TPROXY编译内核。 有没有办法来检查当前的内核是否支持TPROXY ?