Articles of haproxy

在物理负载均衡器后面运行带有clientcertificateauthentication的冗余haproxy

我知道有基于KeepaliveD和EBS的设置,但是我工作的公司是思科客户,因此我们必须使用物理负载均衡器。 我打算使用没有ssl卸载的物理负载均衡器,并简单地将基于leastconnalgorithm的stream量平衡到两个将要设置的haproxy实例(基于v1.7.9)。 这些haproxy实例将是相同的双胞胎(组态),并执行ssl卸载和基于客户端证书的身份validation。 对后者的需要是我不使用带有ssl的物理负载均衡器的原因,因为它有一个(确认的)执行错误。 我的概念问题是,我不知道如何在物理负载均衡器上configuration粘性。 我的假设是,为了不经常执行客户端证书处理,我应该创build一个会话,在该会话中,haproxy只需要一次证书,将其绑定到会话并使用证书信息进行未来连接(只要会话没有时间出) 我是否必须在物理负载均衡器上configuration会话粘性? 或者有可能在haproxy实例之间同步收集的证书信息(我知道这适用于粘贴表)?

转发HTTPS请求到不同的地址

我想转发请求 – https://a.com/a/a1到https://b.com/a1 。 (想要/ uri剥离,其余转发到后端)我有一个haproxy设置的a.com域,我试着把这个configurationhaproxy: acl a_redirect path_beg /a use_backend be-a if a_redirect backend be-a reqrep ^([^\ ]*\ /)a[/]?(.*) \1\2 server a b.com:443 ssl verify none 但我没有看到前进的事情发生。 你们能改正我的configuration吗?

HAProxy重装很慢(差不多3分钟)

我们正在使用HAProxy 1.6.3来负载均衡,并将HTTPstream量路由到数百个后端服务器。 我们经常重新加载configuration(一天几次),当服务器出现故障时自动重新加载configuration,并且由于pipe理原因而手动configuration。 问题是在我们的HAProxy服务器(Ubuntu 16.04)上运行reload命令最多需要3分钟。 服务器是否有stream量似乎并不重要。 在具有相同版本的OS和HAProxy的其他服务器上,无论负载如何,重新加载都需要1-5秒。 我们有一堆长时间运行的请求,但正如我所说,服务器是否有stream量似乎并不重要。 我们可以看到一个新的过程被产生了,但是在它开始接受stream量之前需要几分钟的时间(或者至less在新stream程的CPU使用率超过0%之前)。 问题是:什么会导致HAProxy花费这么长时间来重新加载? 这么久在做什么? 我怎样才能find(例如,我需要启用什么级别的日志logging,以及我在日志中查找什么?) 我们运行以下命令重新加载: haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf $(cat /var/run/haproxy.pid) 我们的configuration文件如下所示: global log 127.0.0.1 local0 notice maxconn 20000 user haproxy group haproxy tune.ssl.default-dh-param 2048 defaults log global mode http option httplog option dontlognull option http-keep-alive option forwardfor retries 3 option redispatch timeout connect […]

haproxy ssl密码保护私钥

用法:Haproxy作为SSL终止 要求:我们的私钥受密码保护,我们不允许删除私钥的密码 问题:如果我运行以下命令haproxy -f /pathtoconf将显示密码提示,一旦提供密码haproxy启动 为了克服这个问题,我使用了expect脚本,它自动提供密码 脚本自动填充密码 #!/usr/bin/expect -f set timeout 20 spawn nohup haproxy -f /opt/reverse-proxies/demo.cfg expect "Enter PEM pass phrase:" send "password\r" expect_background expect eof exit 我打算使用ansible-playbook将其自动化,但我的问题是有没有提供私钥密码的干净方式,我做了一些search,但找不到相同的configuration。 haproxy团队发表了一些声明:计划提供一个干净的方法,但是不能在1.6版本中实现,并计划在1.7版本中这样做。 我查看了1.7版本的发行说明,但是在这个话题上找不到太多内容。 有没有什么configurationhaproxy提供私钥密码或者如果有任何人已经实施了一个很好的解决scheme来克服这个问题,请你指导我在这个方向。 我的示例configuration global log 127.0.0.1 local2 debug defaults timeout connect 5000 timeout client 50000 timeout server 50000 #——————————————————————— # main frontend which proxys to […]

Apache2 / fastcgi / php fastcgi / haproxy – 平稳重启问题改变configuration设置

我有一个Apache2与PHP fastcgi设置; 我想在没有客户端注意的情况下进行configuration更改(所以没有丢失/失败的请求),所以我把haproxy放在它前面; 所以我有两个Apache2服务器运行在同一台服务器上的不同IP上,并在它们前面运行Haproxy负载平衡/故障转移。 Apache和Haproxy都有Keepalive。 当我在运行时运行/etc/init.d/apache2_1 restart或apache2ctl -k graceful -f /etc/apache2_1/apache2.conf时, 看-n 1 lynx -dump -source http:// server /test.php(里面有echo rand(1,100000);在里面) 它仍然下降一个坏网关请求。 我怎样才能防止发生? 基本上,如果我可以告诉Haproxy完成所有连接(完成意味着让他们运行)到server1,但发送所有新的server2在给定的时间点,它会工作。 另外注意; 我需要php-cgi; 与mod_php的事情更容易。 编辑; 我试过了 但是请求不会传递给备份,所以有些客户端仍然收到坏的网关。 回答本的评论; 随着cgi的优雅似乎启动所有正在进行的连接; 与mod_php曼妙工作正常; 没有停机。 Haproxy在apache出现故障时会看到(在统计屏幕中变成黄色),但是fastcgi只是在空中切断脚本; (通讯错误),通过调用exit()终止,返回代码:0(注意:mod_fcgid:process /var/www/gui/wsapi.php(13987) [2009年8月15日星期六19:00:55] [注意] mod_fcgid:进程14012进行正常关机,发送SIGTERM [2009年8月15日星期六19:00:56] [注意] mod_fcgid:process /var/www/gui/index.php(13999)退出(通讯错误),通过调用exit()终止,返回码:0 很多客户也越来越多; [2009年8月15日星期六19:05:42] [错误] [客户端xxx.xxx.xxx.xxx]脚本头过早结束:index.php 另一个迹象表明,关机没有任何优雅之处。

如何处理100或1000的虚拟主机

我很好奇知道如何heroku服务如何pipe理1000年的虚拟主机 – 即如果你创build一个网站/应用程序,并把它放在这些服务,你得到自己的虚拟主机名 – foo.heroku.com等同样适用于许多其他有虚荣URL的网站)。 我知道在各种networking服务器和代理服务器上,你可以根据自己的需要configuration尽可能多的虚拟主机,但是一定要有一些上限呢? 他们是否以编程方式添加虚拟主机 – 也许传播负载? 还是有其他解决scheme。

haproxy与后端redirect

我有一个haproxy前端,基本上是redirect到多个后端。 决定使用哪个后端的逻辑现在不在haproxy的控制范围之内。 但是,我想要做什么(如果haproxy会支持的话)是这样的: frontend main localhost:4443 default_backend be backend be server be1 10.10.10.10:443 让10.10.10.10.10的侦听服务器发出302redirect,将请求转发到正确的服务器上。 但是,我不希望访问前端的人看到这一点。 我希望后端将302发回haproxy,并haproxy击中新的URL并将其转发回前端。 caching这也将是很好的。 haproxy可行吗? 我无法从configuration中知道这是否可行。

使用HAProxy进行负载平衡SQL Server 2008

使用HAProxy来平衡三台SQL Server 2008数据库服务器是否可行/合理? 以下是我们的情况:我们有两台在Amazon EC2上负载均衡的Web服务器。 我们目前正在使用一个生产SQL Server 2008数据库服务器。 该服务器开始被重载,所以我们想要添加两个数据库服务器,并实现一个负载平衡解决scheme。 在Amazon EC2中,我们无法使用虚拟IP地址,这使我们无法使用Windowsnetworking负载平衡(NLB)或任何其他需要VIP的负载平衡方法。 我们的应用程序是重读的,但是我们无法将读取与写入分开,因此负载平衡解决scheme需要对此进行解释。 我们正在计划使用SQL Server的内置复制function来保持所有三个数据库的最新状态(我们知道会有一些滞后时间,但这是可以接受的)。 欢迎任何想法或build议,并提前感谢您的帮助。

对HAProxy的粘性连接和HTTPS支持

我们有2个HTTP负载平衡器HAproxy和心跳。 在这个集群中有4个apache节点。 它正在循环负载平衡。 HTTP群集工作正常。 我们的门户网站存在问题,因为它使用SSO。 我们需要在我们的HAproxy中提供粘性连接支持。 另外我们需要对HTTPSstream量进行负载平衡。 这是我们的HAproxy conf文件。 global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events […]

高请求时间

我有很高的HTTP请求执行时间(例如13s中的42KB)。 我正在使用haproxy来平衡stream量。 静态文件是由varnish加速器后面的lighttpd服务器。 所以……应该在光速以下服务:P http://img580.imageshack.us/g/34411388.png/ 长DNS查找:pic1 长时间接收:pic2 模拟下载:pic3 我使用GoogleDNS。 这些服务器在美国。 首先,我添加了IP到/ etc / hosts来省略DNS查询。 其次,我将静态移植到单独的机器上,省略了haproxy。 就这样,它直接连接到清漆。 交通不是很大,因为这只是发展,也是在生产中发生的。 http://img580.imageshack.us/g/34411388.png/ 更改后:pic4 这个好一点,但还是很慢