我在ubuntu 14.04上通过apt-get安装haproxy 1.5,通过ppa:vbernat/haproxy-1.5 http://haproxy.debian.net/ 问题是它logging到/var/log/syslog而不是/var/log/haproxy.log 设置基本上是默认的: /etc/haproxy/haproxy.cfg global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see […]
我只在两台后端服务器前面设置了一个HAProxy,并configuration了一个特定的configuration:任何请求都应该到达服务器A; 但是,如果服务器A返回一个5xx错误代码,则所有的请求都应该到达一个备份服务器B.当A返回“up”时,所有的请求都将转到A. 我正在尝试这个configuration: backend example_cluster balance roundrobin option httpclose option forwardfor option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com http-check disable-on-404 default-server error-limit 1 on-error mark-down redirect scheme https if !{ ssl_fc } server node1 1.2.3.4:80 check observe layer7 server node_back 5.6.7.8:443 backup ssl verify none 但是这不起作用有两个原因: 即使node1(A)启动,所有的请求都被路由到服务器node_back(B)。 似乎没有HTTP服务器对服务器A执行; 或更好,在系统日志我没有看到关于服务器Aclosures任何错误。 如果我删除“选项httpchk”行,并在下面的两行; 我也删除服务器A中的“观察层7”; HAProxy通过将所有请求路由到节点A工作。但显然,当服务器A返回500时,HAProxy不会切换到B.所以,我假设问题可能出在httpchkconfiguration选项中。
有没有办法根据HAProxy 1.5 SSL ID值设置一个标题键? 我们希望将SSL ID用作不支持Cookie的客户端的会话ID。
我目前正在使用1.5dev-17重新configurationHAProxy。 我想要做的是在没有后端用于特定请求时返回404错误。 我们当前的configuration使用default_backend来路由到我们的django应用服务器,但是当有大量的探测请求(比如钢笔testing)与其他configuration的后端都不匹配时,我们的django服务器在尝试中停顿为这些无效请求服务,最终返回404。 我想从HAProxy服务404而不是委托给Django后端。 我目前正在用黑客实现这一点: frontend www … default_backend nomatch backend nomatch errorfile 503 /var/www/http/404.http 在404.http文件中,我在头文件中设置了404状态码。 这工作,但感觉非常错误。 用HAProxy有没有更好的方法来实现这一点? 或者我应该使用一个常规的后端,让这个句柄响应404?
我把这个脚本从各个地方放在一起。 我所希望的是,一旦运行,它将执行以下操作: 暂停端口80和443的所有“新”HTTPstream量 – 只是“暂停”他们,不要给出任何错误 当所有“进行中”请求完成时,优雅地重新启动haproxy 暂停httpstream量并像往常一样继续业务。 这是如何运行? 我错过了什么? 我们有数千个基于ip的acl规则,存储在一个haproxy引用的文件中,我们需要每分钟重新加载几次。 #!/bin/sh # hold/pause new requests iptables -I INPUT -p tcp –dport 80 –syn -j DROP iptables -I INPUT -p tcp –dport 443 –syn -j DROP sleep 1 # gracefully restart haproxy /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) # allow new requests to come […]
我试图更多地了解Haproxy的时机。 以下是Haproxy手册的时间片段: Tq:获取客户端请求的总时间(仅HTTP模式)… Tw:在等待连接插槽的队列中花费的总时间… Tc:build立到服务器的TCP连接的总时间…. Tr:服务器响应时间(仅限HTTP模式)… Tt:总会话持续时间,从代理接受它到两端closures的时刻之间。 资料来源: http : //cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.4 我试图绘制一些时间,但是我的图很可能是不正确的 , 肯定是不完整的 (没有FIN等): 问题:完整的时序图是什么样的,包括所有的时序测量(Tq,Tw,Tc,Tr,Tt)以及所有的TCP / IP通信?
我们正试图devise一个能够处理超过64k的websocket的架构。 我们首先尝试与亚马逊ELB,但其devise不允许意外的交通高峰或websocket。 (TCP模式意外地超时了websockets) 使用HAProxy,这些限制不适用,但我们将被限制在HA和后端服务器之间维护的约64k个WebSockets。 想到多种解决scheme: 多个HAProxy实例,负载平衡与DNS(Route53有一个加权选项) 两个HAProxy实例Keepalived,多个内部IP地址(不知道它是否可行) 有没有更好的方法来做到这一点?
在haproxy中有没有像Apache“拒绝从IP”?
当第一个文件丢失时,如何使HAProxy重写到不同的后端? 我需要的是errorloc但重写而不是redirect,所以客户端不知道redirect。 我们已经开发了一个Nginx的应用程序,这个应用程序既是负载均衡反向代理,也是静态文件的Web服务器。 应用程序基于Opa框架,该框架需要基于cookie的粘性会话(由NginX和HAproxy支持)。 我们遇到的应用程序function是dynamic内容生成。 它可以根据需要生成图像,但生成后会保存在磁盘上,并可以通过确定性path静态访问。 Nginx很容易解决这个问题 – 只有当文件丢失(还没有生成)时,它才会尝试读取本地文件并使用负载平衡的后端。 server { server_name wkaliszu.pl; location /thumb { root /path_on_disk/to_cached_content; expires 7d; # try to access already generated content try_files $uri @wkaliszu; } location / { # reverse proxy to the application […] } location @wkaliszu { # reverse proxy to the application […] } } 服务器已迁移,现在使用HAPproxy进行负载平衡,这不是Web服务器,并且不支持此function。 […]
我有一个通过cookie进行负载均衡的系统,但我想使用一个URL参数作为替代。 (具体来说,我有一个不支持cookie的前端应用程序)。 我的设置有点复杂 – 我有一个多人游戏系统,我用这个cookie来保证不同的人玩同一个游戏去同一个服务器。 这很好,除了URL参数似乎没有做任何事情。 这一切都与haproxy 1.5dev17 我的相关后端是: defaults log global mode http option httplog option dontlognull retries 3 option redispatch option http-server-close maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 backend simulate option httpchk OPTIONS /simulate/api/status stick-table type string len 40 size 5M expire 30m stick store-response set-cookie(SIMULATE_STICKY_SESSION) table simulate stick on cookie(SIMULATE_STICKY_SESSION) […]