Am un server HAProxy pe care îl folosesc ca echilibrator de încărcare L7 pentru nodurile mele k8s. Clusterul meu este istio activat și am un serviciu istio-ingressgateway expus prin NodePort
NUME TIP CLUSTER-IP EXTERN-IP PORT(E) Vârsta
istio-ingressgateway NodePort 10.11.140.167 <niciunul> 15021:30301/TCP,80:31916/TCP,443:31517/TCP,15012:30768/TCP,15443:320210/TCP
De pe serverul HAProxy, încerc să efectuez verificări de sănătate /healthz/gata
punct final. Folosesc HAProxy 1.8 și my haproxy.cfg
este după cum urmează:
global
log /dev/log local0
log /dev/log local1 notificare
chroot /var/lib/haproxy
pidfile /var/run/rh-haproxy18-haproxy.pid
utilizator haproxy
haproxy de grup
demonul
socket statistici /run/haproxy/admin.sock mod 660 nivel de administrare expose-fd ascultători
controale de răspândire 21
# Locații implicite ale materialelor SSL
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Cifruri implicite de utilizat pe prizele de ascultare compatibile SSL.
# Pentru mai multe informații, consultați ciphers(1SSL). Aceasta lista este de la:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# O listă alternativă cu directive suplimentare poate fi obținută de la
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
implicite
modul http
jurnal global
opțiunea httplog
opțiunea dontlognull
opțiunea http-server-close
reexpedierea opțiunii
reîncercări 3
timeout http-request 10s
timeout coada 1m
timeout connect 10s
timeout client 1m
server timeout 1m
timeout http-keep-alive 10s
verificare timeout 10s
maxconn 10000
echilibru roundrobin
frontend http-80
lega *:80
modul http
opțiunea httplog
default_backend www-80
backend www-80
echilibru roundrobin
modul http
opțiunea httpchk /healthz/ready HTTP/1.1
http-check aștept starea 200
server backendnode1 155.13.200.29:31916 verificați portul 30301 căderea 3 creșterea 2 inter 1597
server backendnode2 155.13.200.28:31916 verificați portul 30301 căderea 3 creșterea 2 inter 1597
server backendnode3 155.13.200.27:31916 verificați portul 30301 căderea 3 creșterea 2 inter 1597
sănătatea frontend-80
lega*:8080
acl backend_dead nbsrv(www-80) lt 1
monitor-uri /haproxy_status
monitor eșuează dacă backend_dead
statistici de ascultare # Definiți o secțiune de ascultare numită „statistici”
bind :9000 # Ascultă pe localhost:9000
modul http
statistici activate # Enable stats page
statistici hide-version # Ascunde versiunea HAProxy
domeniul statisticilor Haproxy\ Statistici # Textul titlului pentru fereastra pop-up
URI statistici /haproxy_stats # URI statistici
statistici auth haproxy:passwd
eu folosesc HTTP/1.1
pentru verificarea sănătății backend deoarece istio-ingressgateway
nu acceptă HTTP/1.0
solicitări, rezultă un cod de eroare 426
.
Atingerea backend-ului de la serverul HAProxy are succes:
curl -I http://155.13.200.29:31916/healthz/ready
HTTP/1.1 200 OK
data: vineri, 11 iunie 2021 07:21:09 GMT
x-envoy-upstream-service-time: 0
server: trimis
codificare de transfer: fragmentat
Cu toate acestea, verificarea de sănătate HAProxy încă nu va trece. Primesc următoarele erori:
11 iunie 07:18:22 hap-server01 haproxy[12348]: Serverul www-80/backendnode2 este DOWN, motiv: stare greșită Layer7, cod: 400, informații: „Verificarea stării HTTP a returnat codul <3C>400<3E>” , durata verificării: 2 ms. Au rămas 1 server activ și 0 de rezervă. 0 sesiuni active, 0 în coadă, 0 rămase în coadă.
11 iunie 07:18:22 hap-server01 haproxy[12348]: Serverul www-80/backendnode2 este DOWN, motiv: stare greșită Layer7, cod: 400, informații: „Verificarea stării HTTP a returnat codul <3C>400<3E>” , durata verificării: 2 ms. Au rămas 1 server activ și 0 de rezervă. 0 sesiuni active, 0 în coadă, 0 rămase în coadă.
11 iunie 07:18:22 hap-server01 haproxy[11795]: [AVERTISMENT] 161/071821 (11795) : Fostul lucrător 11798 a ieșit cu codul 0
11 iunie 07:18:22 hap-server01 haproxy[12348]: Serverul www-80/backendnode3 este DOWN, motiv: stare greșită Layer7, cod: 400, informații: „Verificarea stării HTTP a returnat codul <3C>400<3E>” , durata verificării: 3 ms. Au rămas 0 servere active și 0 de rezervă. 0 sesiuni active, 0 în coadă, 0 rămase în coadă.
11 iunie 07:18:22 hap-server01 haproxy[12348]: Serverul www-80/backendnode3 este DOWN, motiv: stare greșită Layer7, cod: 400, informații: „Verificarea stării HTTP a returnat codul <3C>400<3E>” , durata verificării: 3 ms. Au rămas 0 servere active și 0 de rezervă. 0 sesiuni active, 0 în coadă, 0 rămase în coadă.
Înțeleg acel cod de stare 400
apare pentru cereri proaste. Există ceva miss configurat în mine haproxy.cfg
? Simt că așa încerc să trimit HTTP/1.1
cerere de control de sănătate. Dar, nu sunt sigur ce altceva să adaug sau ce să modific în configurație.