伙计们, 我将我们的一个SaaS应用程序从一个郊狼点硬件负载平衡器移到一个运行nginx + haproxy的虚拟机上,haproxy处理哈希持久性。 我遇到的问题是应用程序需要会话粘性到单个后端服务器(以原始请求为准),但是当我对haproxy.cfg进行更改并执行haproxy服务重新加载时,会重新启动haproxy作为新进程并杀死这是一个旧的进程,终止任何现有的连接到特定的后端服务器,这意味着任何用户立即注销应用程序。 以下是HA-Proxy版本1.5.4 2014/09/02的haproxy后端configuration backend webapp balance hdr(X-Real-IP) hash-type consistent mode http server server1 192.168.10.50:8080 check port 8080 server server2 192.168.10.53:8080 check port 8080 server server3 192.168.10.55:8080 check port 8080 server server4 192.168.10.62:8080 check port 8080 backup 这对我们来说是一个很大的问题,因为当我需要对特定的后端服务器执行维护时,或者从后端池中添加/删除更多服务器时,我不能在不影响客户端应用程序体验的情况下执行此操作。 我如何dynamic地更改后端的服务器而不终止现有会话到后端如果Haproxy不会正常重新载入,我不会改变?
现在我有一堆定义如下的服务器条目: server cn0136 10.33.125.17:8008 check server cn0137 10.33.136.20:8008 check server cn0138 10.33.124.23:8008 check server cn0139 10.33.135.13:8008 check server cn0140 10.33.137.23:8008 check server cn0141 10.33.132.30:8008 check 所有这些IP都在DNS中定义,我希望我的服务器列表在DNS更新时自动更新。 理想情况下,我在configs中的服务器规范可以简化为: servers cn_foo foo.bar.com:8000 check 基于我阅读文档和这个ServerFault问题的答案,看起来这是不可能的。 有没有人修补haproxy来处理这个? 还有什么其他的工作要比使用另一个模板系统在侧面的螺栓?
我处于一种情况,而显然我后端的东西是设置一个空白的Set-Cookie。 这只发生在Chrome上。 它可能也是某种扩展,但为了validation我想从后端响应中删除Set-Cookie头,如果它的结果为空,但我不知道我应该写作条件。 http-request del-header Set-Cookie if <condition>
我无法使我们的网站之一(IIS7)的代理工作。 我正在从haproxy日志中获取“无路由到主机”消息。 Server test_be/10.100.1.1:81 is DOWN, reason: Layer4 connection problem, info: "No route to host", check duration: 1000ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue. backend test_be has no server available! 这是我迄今为止发现的: 两台机器都没有防火墙。 ping,tracepath和telnet工作。 从haproxy机器curl是成功的,如: http ://10.100.1.1:81/test.html返回值 haproxy前端/后端configuration(不起作用): frontend test bind 10.100.2.2:80 mode http option httplog […]
我是HAproxy的新手,我已经阅读了Googlesearch的每一个可能的短语,但我不能让haproxy阅读我的testing页返回的内容。 这里的设置:单臂configuration – 1x CentOS 7 haproxy 1.5.14 – 2个Windows Server 2012r2 IIS 8.5 后端服务器configuration: backend mt-http balance roundrobin mode http option httpchk /check.aspx?appserver=dev-cluster.xxxx.com&databaseserver=test.xxxx.com&database=######dev http-check expect string 200\ OK server WebLB-test2 xx.xx.xx.xx:80 check server WebLB-test1 xx.xx.xx.xx:80 check check.aspx通过指定的应用程序服务器集群连接到特定的数据库,以确认从Web服务器到数据库的端到端连接。 如果testing成功,则检查在网页中以文本forms返回200 OK。 如果其中一个组件不可用,check.aspx会返回一个500错误。 成功: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> Mediatools Check </title></head> <body id="bodyID">200 OK</body> </html> 失败: […]
我正在尝试使用特定主机名在HAProxy中执行HTTP检查。 这里是我的后端configuration的一个片段: option httpchk HEAD / HTTP/1.1\r\nHost: example.com http-check expect rstatus (2)[0-9][0-9] 当我查看正在检查的服务器上的IIS日志时,主机名( cs-host )为空: #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken 2016-04-15 20:24:09 W3SVC3 123.123.123.123 HEAD / – 80 – 456.456.456.456 – – – 302 0 0 365 45 14 与来自浏览器的请求相比,主机名可见: […]
我想在haproxy 1.6中创build一个ACL,只有当它们同时出现时,它才允许特定的url和url参数。 例如: example.com/url/of/page3?foo=bar 我已经在我的haproxyconfiguration的前端部分这样做了: acl whitelist path /url/of/page1 acl whitelist path /url/of/page2 acl whitelist path_beg /url/of/page3 block unless whitelist 如何在我的acl中使用url_param和path ?
我有一个不寻常的问题(正如每个人在这个网站上做的那样)。 我有端口80和443上的HAProxy监听。我将SSLencryption卸载到HAproxy并将所有stream量传递到端口80上的Web服务器。在我的HAProxy服务器前面有一个防火墙,NAT规则指向我的内部监听IP地址HAProxy的。 我们正在通过端口443上的SSL获得一个不寻常的503消息,用于通过SSL的随机IP源地址。其他随机IP地址在SSL上正常工作。 我们的服务是一个API,大部分stream量都会通过,但是很小的比例会达到503。 这是一个HAProxy日志条目可以正常工作,而且不起作用: localhost haproxy[5404]: XXX.XXX.XXX.XXX:54787 [15/Jun/2016:22:46:57.592] https_in_ssl~ http_www2/web1 32/0/0/232/264 200 747 – – —- 5/4/0/1/0 0/0 "POST /webservices/ourService.asmx HTTP/1.1" 不工作: localhost haproxy[5404]: XXX.XXX.XXX.XXX:55494 [15/Jun/2016:22:46:39.514] https_in_ssl~ https_in_ssl/<NOSRV> -1/-1/-1/-1/227 503 212 – – SC– 3/2/0/0/0 0/0 "POST /webservices/ourService.asmx HTTP/1.0" 我注意到的一件事是在不工作的日志条目中,前端和后端是相同的。 这是我的configuration文件: peers prodHAproxypeers peer haproxylb1 10.0.0.145:1024 peer haproxylb2 10.0.0.146:1024 global log 127.0.0.1 local0 # […]
我有一个haproxy节点和3个应用程序服务器(tomcat)。 用户必须打开http://10.0.0.1 (通过IP地址),然后redirect到http://10.0.0.2/app或http://10.0.0.3/app或http://10.0.0.4/app 。 目前haproxyconfiguration: global log 127.0.0.1 local0 log 127.0.0.1 local1 notice chroot /var/lib/haproxy user haproxy group haproxy daemon maxconn 50000 defaults log global mode http option httplog option dontlognull # option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www retries 3 redispatch contimeout 1s clitimeout 2s srvtimeout 3s errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 […]
我只是使用Let's Encrypt生成一个新的SSL证书。 现在我正在尝试configurationHAProxy。 这些是文件夹和证书: 700 archive |——–> 755 company.cxx |————> 644 fullchain.pem |————> 644 cert.pem |————> 644 (etc.) 现在,这些是archive文件夹中证书的文件夹和软链接的权限: 700 live |——–> 755 company.cxx |————> 777 fullchain.pem |————> 777 cert.pem |————> 777 (etc.) HAProxyconfiguration如下: frontend public bind :80 bind :443 ssl crt /etc/letsencrypt/live/company.cxx/fullchain.pem 而错误是这样的: Proxy 'public': no SSL certificate specified for bind ':443' at [/etc/haproxy/haproxy.cfg:12] […]