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.