-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
rhel-8.9.0
-
No
-
Moderate
-
rhel-sst-high-availability
-
ssg_filesystems_storage_and_HA
-
None
-
False
-
-
None
-
None
-
None
-
None
-
None
What were you trying to do that didn't work?
'http-reuse always' does not work in HAProxy v1.8.27
What is the impact of this issue to you?
customer unable to find tune their host resources
Please provide the package NVR for which the bug is seen:
haproxy-1.8.27-5.el8.x86_64
How reproducible is this bug?:
Always
Steps to reproduce
1. Configure haproxy for http-reuse. I am using below configuration for backend server:
+++
frontend lb1
mode http
bind 192.168.124.85:8080
default_backend app
backend app
option http-keep-alive
http-reuse always
timeout http-keep-alive 4500
server server1 192.168.124.233:80 inter 50s check
+++
and using below curl command to send multiple requests
for i in {1..3}; do curl http://192.168.124.85:8080; done
The tcpdump shows separate connections are made from haproxy to backend in RHEL 8.8 for above curl command:
+++
18:33:17.524669 IP 192.168.124.85.44122 > 192.168.124.233.80: Flags [S], seq 2963253802, win 29200, options [mss 1460,sackOK,TS val 1766200874 ecr 0,nop,wscale 7], length 0
18:33:17.524778 IP 192.168.124.233.80 > 192.168.124.85.44122: Flags [S.], seq 670808624, ack 2963253803, win 28960, options [mss 1460,sackOK,TS val 6615536 ecr 1766200874,nop,wscale 7], length 0
18:33:17.524894 IP 192.168.124.85.44122 > 192.168.124.233.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 1766200874 ecr 6615536], length 0
18:33:17.524918 IP 192.168.124.85.44122 > 192.168.124.233.80: Flags [P.], seq 1:115, ack 1, win 229, options [nop,nop,TS val 1766200874 ecr 6615536], length 114: HTTP: GET / HTTP/1.1
18:33:17.525056 IP 192.168.124.233.80 > 192.168.124.85.44122: Flags [.], ack 115, win 227, options [nop,nop,TS val 6615536 ecr 1766200874], length 0
18:33:17.525412 IP 192.168.124.233.80 > 192.168.124.85.44122: Flags [P.], seq 1:310, ack 115, win 227, options [nop,nop,TS val 6615537 ecr 1766200874], length 309: HTTP: HTTP/1.1 200 OK
18:33:17.525484 IP 192.168.124.85.44122 > 192.168.124.233.80: Flags [.], ack 310, win 237, options [nop,nop,TS val 1766200874 ecr 6615537], length 0
18:33:17.525798 IP 192.168.124.85.44122 > 192.168.124.233.80: Flags [R.], seq 115, ack 310, win 237, options [nop,nop,TS val 1766200875 ecr 6615537], length 0
18:33:17.534788 IP 192.168.124.85.44132 > 192.168.124.233.80: Flags [S], seq 807228304, win 29200, options [mss 1460,sackOK,TS val 1766200884 ecr 0,nop,wscale 7], length 0
18:33:17.535051 IP 192.168.124.233.80 > 192.168.124.85.44132: Flags [S.], seq 3751471069, ack 807228305, win 28960, options [mss 1460,sackOK,TS val 6615546 ecr 1766200884,nop,wscale 7], length 0
18:33:17.535181 IP 192.168.124.85.44132 > 192.168.124.233.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 1766200884 ecr 6615546], length 0
18:33:17.535270 IP 192.168.124.85.44132 > 192.168.124.233.80: Flags [P.], seq 1:115, ack 1, win 229, options [nop,nop,TS val 1766200884 ecr 6615546], length 114: HTTP: GET / HTTP/1.1
18:33:17.535436 IP 192.168.124.233.80 > 192.168.124.85.44132: Flags [.], ack 115, win 227, options [nop,nop,TS val 6615547 ecr 1766200884], length 0
18:33:17.536091 IP 192.168.124.233.80 > 192.168.124.85.44132: Flags [P.], seq 1:310, ack 115, win 227, options [nop,nop,TS val 6615547 ecr 1766200884], length 309: HTTP: HTTP/1.1 200 OK
18:33:17.536133 IP 192.168.124.85.44132 > 192.168.124.233.80: Flags [.], ack 310, win 237, options [nop,nop,TS val 1766200885 ecr 6615547], length 0
18:33:17.536406 IP 192.168.124.85.44132 > 192.168.124.233.80: Flags [R.], seq 115, ack 310, win 237, options [nop,nop,TS val 1766200885 ecr 6615547], length 0
18:33:17.539166 IP 192.168.124.85.44138 > 192.168.124.233.80: Flags [S], seq 4221728930, win 29200, options [mss 1460,sackOK,TS val 1766200888 ecr 0,nop,wscale 7], length 0
18:33:17.539334 IP 192.168.124.233.80 > 192.168.124.85.44138: Flags [S.], seq 3853565679, ack 4221728931, win 28960, options [mss 1460,sackOK,TS val 6615551 ecr 1766200888,nop,wscale 7], length 0
18:33:17.539362 IP 192.168.124.85.44138 > 192.168.124.233.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 1766200888 ecr 6615551], length 0
18:33:17.539402 IP 192.168.124.85.44138 > 192.168.124.233.80: Flags [P.], seq 1:115, ack 1, win 229, options [nop,nop,TS val 1766200888 ecr 6615551], length 114: HTTP: GET / HTTP/1.1
18:33:17.539446 IP 192.168.124.233.80 > 192.168.124.85.44138: Flags [.], ack 115, win 227, options [nop,nop,TS val 6615551 ecr 1766200888], length 0
18:33:17.539655 IP 192.168.124.233.80 > 192.168.124.85.44138: Flags [P.], seq 1:310, ack 115, win 227, options [nop,nop,TS val 6615551 ecr 1766200888], length 309: HTTP: HTTP/1.1 200 OK
18:33:17.539681 IP 192.168.124.85.44138 > 192.168.124.233.80: Flags [.], ack 310, win 237, options [nop,nop,TS val 1766200889 ecr 6615551], length 0
18:33:17.540007 IP 192.168.124.85.44138 > 192.168.124.233.80: Flags [R.], seq 115, ack 310, win 237, options [nop,nop,TS val 1766200889 ecr 6615551], length 0
18:33:20.228747 IP 192.168.124.85.44142 > 192.168.124.233.80: Flags [S], seq 1034147465, win 29200, options [mss 1460,sackOK,TS val 1766203578 ecr 0,nop,wscale 7], length 0
18:33:20.229287 IP 192.168.124.233.80 > 192.168.124.85.44142: Flags [S.], seq 490351401, ack 1034147466, win 28960, options [mss 1460,sackOK,TS val 6618240 ecr 1766203578,nop,wscale 7], length 0
18:33:20.229772 IP 192.168.124.85.44142 > 192.168.124.233.80: Flags [R.], seq 1, ack 1, win 229, options [nop,nop,TS val 1766203579 ecr 6618240], length 0
18:33:20.375336 IP 192.168.124.28.54926 > 192.168.124.233.80: Flags [S], seq 3145326290, win 64240, options [mss 1460,sackOK,TS val 1996838851 ecr 0,nop,wscale 7], length 0
18:33:20.375803 IP 192.168.124.233.80 > 192.168.124.28.54926: Flags [S.], seq 1545524402, ack 3145326291, win 28960, options [mss 1460,sackOK,TS val 6618387 ecr 1996838851,nop,wscale 7], length 0
18:33:20.376237 IP 192.168.124.28.54926 > 192.168.124.233.80: Flags [R.], seq 1, ack 1, win 502, options [nop,nop,TS val 1996838852 ecr 6618387], length 0
+++
whereas in RHEL9 (haproxy 2.4.7-2.el9_0), we could see connection reuse:
+++
18:32:36.123248 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [S], seq 1612858360, win 64240, options [mss 1460,sackOK,TS val 1996794599 ecr 0,nop,wscale 7], length 0
18:32:36.123393 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [S.], seq 3622112014, ack 1612858361, win 28960, options [mss 1460,sackOK,TS val 6574135 ecr 1996794599,nop,wscale 7], length 0
18:32:36.123415 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [.], ack 1, win 502, options [nop,nop,TS val 1996794599 ecr 6574135], length 0
18:32:36.123427 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [P.], seq 1:115, ack 1, win 502, options [nop,nop,TS val 1996794599 ecr 6574135], length 114: HTTP: GET / HTTP/1.1
18:32:36.123478 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [.], ack 115, win 227, options [nop,nop,TS val 6574135 ecr 1996794599], length 0
18:32:36.124560 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [P.], seq 1:310, ack 115, win 227, options [nop,nop,TS val 6574136 ecr 1996794599], length 309: HTTP: HTTP/1.1 200 OK
18:32:36.124616 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [.], ack 310, win 501, options [nop,nop,TS val 1996794600 ecr 6574136], length 0
18:32:36.127533 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [P.], seq 115:229, ack 310, win 501, options [nop,nop,TS val 1996794603 ecr 6574136], length 114: HTTP: GET / HTTP/1.1
18:32:36.127666 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [P.], seq 310:619, ack 229, win 227, options [nop,nop,TS val 6574139 ecr 1996794603], length 309: HTTP: HTTP/1.1 200 OK
18:32:36.130728 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [P.], seq 229:343, ack 619, win 501, options [nop,nop,TS val 1996794606 ecr 6574139], length 114: HTTP: GET / HTTP/1.1
18:32:36.130855 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [P.], seq 619:928, ack 343, win 227, options [nop,nop,TS val 6574142 ecr 1996794606], length 309: HTTP: HTTP/1.1 200 OK
18:32:36.171183 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [.], ack 928, win 501, options [nop,nop,TS val 1996794647 ecr 6574142], length 0
18:32:41.136184 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [F.], seq 928, ack 343, win 227, options [nop,nop,TS val 6579147 ecr 1996794647], length 0
18:32:41.136709 IP 192.168.124.28.35124 > 192.168.124.233.80: Flags [F.], seq 343, ack 929, win 501, options [nop,nop,TS val 1996799612 ecr 6579147], length 0
18:32:41.137059 IP 192.168.124.233.80 > 192.168.124.28.35124: Flags [.], ack 344, win 227, options [nop,nop,TS val 6579148 ecr 1996799612], length 0
+++
Customer is looking for backporting the features for RHEL8. I tried to identify few commits, but the backport is not success as I see lot of changes between v1.8 and v2.4.
Can we get this fixed in RHEL8 ?