我有一个运行HAProxy 1.5.x的RHEL 7盒子。 我希望能够正常closures,以便keepalived可以故障转移到集群上的另一个节点,并获得VIP。 我可以做到这一点,如果我手动杀死systemd以外的进程 kill -USR1 $myPid 不过,我想从systemd做到这一点。 就像是 systemctl kill haproxy –signal=USR1 但是当我执行它杀死“haproxy-systemd-wrapper”以及haproxy实例。 有反正告诉它只发送信号到haproxy实例? 我尝试join–kill-who = control,但subprocess显然不是控制进程,所以只是出错。
我们有几个应用程序服务器和2个负载平衡器(HAProxy)。 云与SaltStack实施。 当需要禁用某些应用程序服务器时,我们login到salt master并运行: for i in {1..20}; do salt '*.lb-app' haproxy.disable_server 1.app app; done 由于haproxy与nbproc 4一起运行,只有一个呼叫不会切换stream量。 所以通过调用20次,所有4个进程都会禁用给定的服务器的可能性很大。 我想知道是否有更优雅的解决scheme。
我如何立即返回一个特定的HTTP响应请求超过速度限制会议,而不是请求块,并进入积压? 我有这个当前的设置: frontend badtest bind 127.0.0.1:8811 acl is_bad path_reg -i ^\/services\/1.0\/test\/.+\/bad use_backend throttle_bad if is_bad default_backend servers_bend backend throttle_bad server throttleBAD 127.0.0.1:8812 frontend throttle_bad_backend bind 127.0.0.1:8812 rate-limit sessions 45 acl too_fast fe_sess_rate ge 45 use_backend er_toofast if too_fast default_backend servers_bend backend er_toofast errorfile 503 /var/lib/haproxy/503.http 通过上面的设置,当请求太多时,我会看到throttle_bad_backend的状态为FULL。 什么doe status = FULL是什么意思?
我有一堆haproxy重写规则为特定的后端,有没有办法将完整的URLlogin到haproxy日志中的后端? 这里是我的configuration文件中的示例.. reqirep ^([^ \] )\ / myservice / api / v6 / offers /(。 )\ 1 \ / new / v1 / offerdetailpage / offers / \ 2 对于haproxy日志中的请求http://example.com/myservice/api/v6/offers/1234 ,我能够看到后端名称和实际的传入请求URL,我想要看到/ new / v1 / offerdetailpage / offers / 1234以及haproxy logs ..有可能吗? 你能告诉我哪个日志字段应该configuration得到代理请求path吗?
我已经使用Galera安装了3个集群mariaDB,用于使用haproxy进行负载平衡的Web服务。 群集工作很好,互相同步,但是当我的网站上的访问者达到3000个以上的用户时,每个节点的CPU都是峰到高。 top – 09:19:03 up 17:36, 1 user, load average: 3.58, 3.82, 3.85 Tasks: 169 total, 1 running, 168 sleeping, 0 stopped, 0 zombie %Cpu(s): 17.8 us, 3.5 sy, 0.0 ni, 77.5 id, 0.3 wa, 0.0 hi, 0.5 si, 0.6 st KiB Mem : 12300340 total, 9661112 free, 551008 used, 2088220 buff/cache KiB Swap: […]
我试图通过添加[req.ssl_sni]来扩展自定义的haproxy日志格式。 在Ubuntu上使用的haproxy版本是1.6.3。 前端configuration如下: bind *:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } tcp-request content reject log-format […]{%[req.ssl_sni]} 凡表示其他日志选项工作正常。 前端以TCP模式运行,转发TLS会话而不解密。 对于有效的TLS会话,预期的日志输出将类似于{my.server.com} 。 我看到的日志输出始终是{-} (破折号而不是服务器名称),即使TLS会话由后端服务器成功处理。 我需要更改什么来查看日志中的实际SNI值?
在Haproxy的前端规则中,当客户端通过IP地址到达haproxy而不是域名时,我想select一个后端。 基本上,如果用户使用1.2.3.4而不是mysite.com来使用Haproxy,我将在一个特定的后端redirect。 我尝试了以下但acl不匹配: acl nodomain hdr(host) -i 1.2.3.4 use_backend backendnodomain if nodomain
我正在尝试构build一个负载平衡的SMTP群集。 邮件服务器已经存在并运行Exim 4.最初,我考虑使用Nginx来进行负载均衡,但是在testing系统上,所有的邮件服务器都会将来自负载均衡器IP的入站连接看作是来自负载平衡器IP而不是实际的远程发件人知识产权,广泛谷歌search之后似乎没有任何方法。 因为这有效地将邮件集群变成一个开放的中继,这显然是一个非首创,这是一个可惜的Nginx的工作很好,否则。 所以我正在寻找使用HAProxy,因为我从更进一步的Googlesearch中得知它能够将原始源IP的连接完好无缺地传递,因此系统中继允许列表和ACL将正确运行。 但是,根据几个在线示例设置HAProxy,我得到“SMTP同步错误”(和一个500系列错误,所以邮件将反弹),连接立即下降,或只是连接下降,没有SMTP信息。 这里是使用的haproxy.conf: global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user nobody group nobody daemon stats socket /var/lib/haproxy/stats defaults log global option redispatch retries 3 timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s maxconn 3000 listen smtp bind 0.0.0.0:25 mode tcp […]
我们使用HAProxy在我们的网站上进行负载平衡。 该网站高度依赖于caching的数据; 当我们把这个网站拿下来进行维护的时候,大部分的caching都是陈旧的。 当我们重新打开网站,用户再次开始访问网站时,我们最终会发生踩踏事件。 数百名请求caching的用户将被重新生成。 尽pipe我们已经通过多种方式(其他踩踏预防技术,预热脚本)来减轻这一负担,但我们也认为这将有助于遏制可以访问我们网站的用户数量。 但是,单个页面加载是由多个单独的请求组成的,所以我们不希望仅限制连接的数量。 相反,我们想限制可以发出请求的唯一IP地址的数量。 我们所要做的是类似于这个问题 ,但是我希望5年后,可能会有更好的解决办法。 有没有办法做这种基于IP的HAProxy节stream?
我有一个haproxy服务器,我需要它来重写URL。 例如,我有一个这样的url: http://myserver.com/UserName/signalr/connect… 我需要删除用户名,所以当haproxy转发到服务器的URL变成: http://myserver.com/signalr/connect… 如果我知道用户名,那么这个工程: reqrep ^([^\ ]*\ /)UserName[/]?(.*) \1\2 我的问题是,UserName不是一个静态的,但总是在URL的相同的地方,直接在域。 任何帮助赞赏。