Hi Paul, List,
Op 24-1-2018 om 17:21 schreef Paul Lockaby:
Sorry, I know this list is super busy and that there are a number of other more
important issues that need to be worked through but I'm hoping one of the
maintainers has been able to confirm this bug?
I can reproduce it indeed with your config on 1.8.3, cpu usage go's 100%
and stats stops responding when the alive.txt is removed.
When a backend go's down completely the track works as intended though
(stats shows both server marked down).
Hope this and below added info / smaller config helps someone track the
issue down further in the code.
Thanks,
-Paul
On Jan 17, 2018, at 10:27 AM, Paul Lockaby <plock...@uw.edu> wrote:
Ok I've tracked this problem down specifically to the usage of check tracking.
That is to say, the backend "example-api" is set to track the backend
"example-http". When that tracking is enabled and one of the servers in the backend goes
down then all of haproxy goes down and never recovers.
So this works:
server myhost myhost.example.com:8445 ssl ca-file
/usr/local/ssl/certs/cacerts.cert
But this does not:
server myhost myhost.example.com:8445 track example-http/myhost ssl ca-file
/usr/local/ssl/certs/cacerts.cert
This is definitely a regression from 1.7 because I used this feature in 1.7
without issue.
It seems a combination of 3 combined features to trigger this issue:
option httpchk GET /alive.txt + http-check disable-on-404 + track
Backtrace keeps showing this:
(gdb) bt
#0 0x000000000046b59f in srv_set_stopping ()
#1 0x00000000004a3057 in ?? ()
#2 0x00000000004f0eaf in process_runnable_tasks ()
#3 0x00000000004aa13c in ?? ()
#4 0x00000000004a9a16 in main ()
I could reduce the config to this:
frontend stats-frontend
bind *:2999
mode http
log global
stats enable
stats uri /haproxy
frontend stats-frontend
bind *:2999
mode http
log global
stats enable
stats uri /haproxy
frontend secured
bind *:8080
mode http
acl request_api hdr_beg(Host) -i api.
use_backend example-api if request_api
default_backend example-http
backend example-http
mode http
option httpchk GET /haproxy/alive.txt
http-check disable-on-404
server myhost vhost1.pfs.local:302 check
backend example-api
mode http
option httpchk GET /haproxy/alive.txt
http-check disable-on-404
server myhost vhost1.pfs.local:303 track example-http/myhost
Regards,
PiBa-NL / Pieter