Puncte:1

Websocket de la un backend HAProxy la altul eșuează

drapel cn

Am două backend-uri (b1, b2) în spatele aceluiași frontend (f1) în HAProxy, rutare bazată pe numele gazdei. Pot stabili websocket atât la b1, cât și la b2 de pe laptop, totuși, dacă încerc să stabilesc websocket la b2 de la b1 (prin f1) primesc eroarea 1006 (anormalitate închisă - EOF neașteptat). Pingul b2 de la b1 reușește. Iată configurația mea:

frontend f1
    bind 192.168.1.1:443 nume 192.168.1.1:443 ssl crt-list /var/etc/haproxy/ReverseProxyHTTP.crt_list  
    modul http
    jurnal global
    opțiunea httplog
    opțiunea http-keep-alive
    opțiune forwardfor

    http-request set-header X-Forwarded-Proto http dacă !https
    http-request set-header X-Forwarded-Proto https dacă https
    timeout client 30000
    acl b1 var(txn.txnhost) -m beg -i b1
    acl b2 var(txn.txnhost) -m beg -i b2
    acl hdr_connection_upgrade hdr(Conexiune) -i upgrade
    acl hdr_upgrade_websocket hdr(Upgrade) -i websocket

    use_backend b1ws if b1 hdr_connection_upgrade hdr_upgrade_websocket 
    use_backend b1 dacă b1 
    use_backend b2 dacă b2
backend b1ws
    modul http
    id 119
    jurnal global
    tip stick-table ip dimensiune 50k expiră 30m
    stick pe src
    sursa de echilibru
    timeout connect 30000
    server timeout 30000
    reîncercări 3
    server s1 192.168.1.2:443 id 101 ssl verifica niciun rezolutori globalresolvers 

backend b1
    modul http
    id 117
    jurnal global
    tip stick-table ip dimensiune 50k expiră 30m
    stick pe src
    sursa de echilibru
    timeout connect 30000
    server timeout 30000
    reîncercări 3
    server s1 192.168.1.2:443 id 101 ssl verifica nici unul rezolutori globalresolvers alpn h2,http/1.1 

backend b2
    modul http
    id 120
    jurnal global
    tip stick-table ip dimensiune 50k expiră 30m
    stick pe src
    sursa de echilibru
    timeout connect 30000
    server timeout 30000
    reîncercări 3
    tunelul timeout 3600s
    server s2 192.168.1.3:443 id 101 ssl verifică niciun rezolutori globalresolvers 

Notă: b1 și b1ws indică același server și port, deși b1 preferă http2 pentru grpc. Dacă este prezent antetul websocket, va fi folosit b1ws.

drapel cn
Încercați să vă conectați de la B2 -> F1 -> B1? Ești sigur că HAProxy nu va direcționa conexiunea înapoi la B2? De ce să nu te conectezi direct de la B2 -> B1 fără a trece prin LB?
Ryan avatar
drapel cn
@shearn89 B1 -> F1 -> B2; haproxy nu a direcționat conexiunea înapoi la B1, deoarece dacă fac un simplu http ajunge la B2 (prin F1) reușește. LB realizează o rescrie URL din motive de compatibilitate, pe lângă toate celelalte motive tipice pentru a utiliza un echilibrator de încărcare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.