Hi all

i was hoping for some help with see if this is a bug or a mis config

i have a config which works fine in 1.7.9 and 1.7.11, but when running it
1.8.13 is seems to fail to respond to the client

I've simplified down and anonymised the config, but basically it's being
used to do A/B failiover at haproxy so it uses nested frontend and backends
with unix sockets to achieve this

The config is

------
global
    pidfile     /var/run/haproxy.pid
    stats socket /var/run/haproxy.sock mode 600 level admin
    stats timeout 2m
    maxconn     4000
    unix-bind user root mode 666
    daemon

defaults
    timeout connect         15s
    timeout server          1m
    timeout http-request    15s
    timeout check           15s

frontend frontend1
    bind 127.0.0.1:8080
    mode http
    timeout client          1m
    default_backend api

frontend api-A
    bind /var/run/haproxy/api-A.sock
    mode http
    default_backend api-A

frontend api-B
    bind /var/run/haproxy/api-B.sock
    mode http
    default_backend api-B

backend api
    mode http
    balance roundrobin
    server api-A /var/run/haproxy/api-A.sock disabled
    server api-B /var/run/haproxy/api-B.sock

backend api-A
    mode http
    balance roundrobin
    option forwardfor
    server server-1-A <redacted>
    server server-2-B <redacted>

backend api-B
    mode http
    balance roundrobin
    option forwardfor
    server server-1-B <redacted>
    server server-2-B <redacted>
---------

When running with 1.7.11, its all nice and quick

curl http://10.2.74.41:8443 -vvv
* Rebuilt URL to: http://10.2.74.41:8443/
*   Trying 10.2.74.41...
* TCP_NODELAY set
* Connected to 10.2.74.41 (10.2.74.41) port 8443 (#0)
> GET / HTTP/1.1
> Host: 10.2.74.41:8443
> User-Agent: curl/7.61.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: application/problem+json; charset=utf-8
< Date: Tue, 11 Sep 2018 07:50:54 GMT
< Content-Length: 27
<
* Connection #0 to host 10.2.74.41 left intact

00000004:frontend1.accept(0005)=0008 from [10.2.74.41:44161]
00000004:frontend1.clireq[0008:ffffffff]: GET / HTTP/1.1
00000004:frontend1.clihdr[0008:ffffffff]: Host: 10.2.74.41:8443
00000004:frontend1.clihdr[0008:ffffffff]: User-Agent: curl/7.61.0
00000004:frontend1.clihdr[0008:ffffffff]: Accept: */*
00000005:api-B.accept(0007)=000a from [unix:1]
00000005:api-B.clireq[000a:ffffffff]: GET / HTTP/1.1
00000005:api-B.clihdr[000a:ffffffff]: Host: 10.2.74.41:8443
00000005:api-B.clihdr[000a:ffffffff]: User-Agent: curl/7.61.0
00000005:api-B.clihdr[000a:ffffffff]: Accept: */*
00000005:api-B.srvrep[000a:000b]: HTTP/1.1 404 Not Found
00000005:api-B.srvhdr[000a:000b]: Content-Type: application/problem+json;
charset=utf-8
00000005:api-B.srvhdr[000a:000b]: Date: Tue, 11 Sep 2018 07:51:22 GMT
00000005:api-B.srvhdr[000a:000b]: Content-Length: 27
00000004:api.srvrep[0008:0009]: HTTP/1.1 404 Not Found
00000004:api.srvhdr[0008:0009]: Content-Type: application/problem+json;
charset=utf-8
00000004:api.srvhdr[0008:0009]: Date: Tue, 11 Sep 2018 07:51:22 GMT
00000004:api.srvhdr[0008:0009]: Content-Length: 27
00000007:frontend1.clicls[0008:0009]
00000007:frontend1.closed[0008:0009]
00000006:api-B.clicls[000a:000b]
00000006:api-B.closed[000a:000b]


however with 1.8.13 the client doesn't  gets the response and ends up with
a 504, however the haproxy debug log shows the response is reviced by
haproxy, but never passed to the client

curl http://10.2.74.41:8443 -vvv
* Rebuilt URL to: http://10.2.74.41:8443/
*   Trying 10.2.74.41...
* TCP_NODELAY set
* Connected to 10.2.74.41 (10.2.74.41) port 8443 (#0)
> GET / HTTP/1.1
> Host: 10.2.74.41:8443
> User-Agent: curl/7.61.0
> Accept: */*
>
*** HANGS HERE TILL 504 ****

from haproxy
00000000:frontend1.accept(0006)=000b from [10.2.74.41:57043] ALPN=<none>
00000000:frontend1.clireq[000b:ffffffff]: GET / HTTP/1.1
00000000:frontend1.clihdr[000b:ffffffff]: Host: 10.2.74.41:8443
00000000:frontend1.clihdr[000b:ffffffff]: User-Agent: curl/7.61.0
00000000:frontend1.clihdr[000b:ffffffff]: Accept: */*
00000001:api-A.accept(0007)=000d from [unix:1] ALPN=<none>
00000001:api-A.clireq[000d:ffffffff]: GET / HTTP/1.1
00000001:api-A.clihdr[000d:ffffffff]: Host: 10.2.74.41:8443
00000001:api-A.clihdr[000d:ffffffff]: User-Agent: curl/7.61.0
00000001:api-A.clihdr[000d:ffffffff]: Accept: */*
00000001:api-A.srvrep[000d:000e]: HTTP/1.1 404 Not Found
00000001:api-A.srvhdr[000d:000e]: Content-Type: application/problem+json;
charset=utf-8
00000001:api-A.srvhdr[000d:000e]: Date: Tue, 11 Sep 2018 07:48:39 GMT
00000001:api-A.srvhdr[000d:000e]: Content-Length: 27
** 5 seconds
00000002:api-A.clicls[adfd:ffffffff]
00000002:api-A.closed[adfd:ffffffff]
** 15 seconds
00000000:api.srvcls[000b:adfd]
00000000:api.clicls[adfd:adfd]
00000000:api.closed[adfd:adfd]



any idea why this happens? sorry for long post!

Dave

Reply via email to