Portál AbcLinuxu, 1. listopadu 2024 00:17


Dotaz: haproxy s haproxy protokolem a readiness check

12.8.2021 17:52 vlanav | skóre: 24 | blog: Dlouhý den
haproxy s haproxy protokolem a readiness check
Přečteno: 470×
Odpovědět | Admin
Mám haproxy 2.0.7 v TCP módu + haproxy-protocol a za ní NGINX (terminace TLS) a za NGINXem aplikace, která poskytuje readiness.

Aktuálně haproxy používá tcp check na port, ale chtěl bych aby se řídila obsahem readiness na /-/readiness

Tohleto taky nefunguje (není to readiness a koukám, že za GETem asi chybí \r\n)
tcp-check connect port 443
tcp-check send PROXY\ UNKNOWN
tcp-check connect port 443 ssl
tcp-check send GET\ /\ HTTP/1.0\r\n
tcp-check send Host:\ my.service.example.com\r\n
tcp-check send \r\n
tcp-check expect rstring (2..|3..)

server node1 backend1.service.example.com:443 check check-send-proxy send-proxy-v2-ssl verify none
Ale každopádně to NGINX odmítne už na tom druhém connectu.

Zkoušel jsem i něco jako
option httpchk GET / HTTP/1.1\r\nHost:\ my.service.example.com/
Nejlepší výsledek byl error 400 od NGINXu, protože to bylo bez šifrování.

External checku se chci pokud možno vyhnout.

Díky za rady.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.8.2021 09:58 MP
Rozbalit Rozbalit vše Re: haproxy s haproxy protokolem a readiness check
Odpovědět | | Sbalit | Link | Blokovat | Admin
TCP mod ani proxy protokol nepouzivam, tak neporadim. Kazdopadne, pokud ten nginx bezi (presmerovava) na https, tak bych se vubec checkem na 80 nezabyval, posilal bych to rovnou na 443.

Pro HTTP mod bez proxy protokolu, ssl backend verze:
option httpchk
http-check send hdr host somedomain.tld meth GET uri /
http-check expect status 200
6.9.2021 19:34 vlanav | skóre: 24 | blog: Dlouhý den
Rozbalit Rozbalit vše Re: haproxy s haproxy protokolem a readiness check
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prozatím mi začlo fungovat toto na haproxy ve verzi 2.1.2
ssl-server-verify none

option tcp-check
tcp-check connect port 443 send-proxy ssl
tcp-check send GET\ /-/readiness?all=1\r\n
tcp-check expect rstring ^\{\"status\"\:\"ok\" (zkráceno)

server node1 backend1.example.com:443 check send-proxy-v2-ssl
server node2 backend2.example.com:443 check send-proxy-v2-ssl
Řešení 1× (vlanav (tazatel))
9.9.2021 21:55 vlanav | skóre: 24 | blog: Dlouhý den
Rozbalit Rozbalit vše Re: haproxy s haproxy protokolem a readiness check
A už mi to ověřuje i certifikát, v ca.pem je kompletní řetězec certifikátů (v mém případě intermediate + root)
option tcp-check
tcp-check connect port 443 send-proxy ssl
tcp-check send GET\ /-/readiness?all=1\r\n
tcp-check expect rstring ^\{\"status\"\:\"ok\" (zkráceno)

server node1 backend1.example.com:443 check send-proxy-v2-ssl ca-file /etc/haproxy/ca.pem verify required verifyhost www.example.com
server node2 backend2.example.com:443 check send-proxy-v2-ssl ca-file /etc/haproxy/ca.pem verify required verifyhost www.example.com

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.