Puncte:1

Aplicația funcționează local, dar nu reușește cu 502 în rularea în cloud - „eroare de conectare în amonte sau deconectare/resetare înainte de anteturi. motivul resetare: eroare de protocol”

drapel cn

Am o aplicație construită ca o imagine Docker care funcționează corect la nivel local, dar eșuează în Google Cloud Run cu „eroare de conectare în amonte sau deconectare/resetare înainte de anteturi. motivul resetare: eroare de protocol”

Aplicația ascultă pe 0.0.0.0:8080 și nu necesită autentificare.Îl rulez în Docker local cu

docker run --rm --name myapp -p 8080:8080 myapp:1.0

Cu curl local, primesc un răspuns de succes pe /

$ curl -v localhost:8080
* Încerc ::1...
* TCP_NODELAY setat
* Conectat la portul localhost (::1) 8080 (#0)
> GET / HTTP/1.1
> Gazdă: localhost:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Variază: Origine
< Data: sâmbătă, 24 iulie 2021 13:54:11 GMT
< Lungimea conținutului: 2
<
* Conexiunea #0 la gazda localhost a rămas intactă
OK* Închiderea conexiunii 0

Am implementat acest lucru în Google Cloud Run ca serviciu și, când fac prima solicitare, văd jurnalul de ieșire din aplicația mea în jurnalele de rulare în cloud care arată că a pornit și ascultă pe portul 8080.

Cu toate acestea, o cerere eșuează

„Eroare de conectare în amonte sau deconectare/resetare înainte de anteturi. Motivul resetare: eroare de protocol”

Ieșire completă din curl -v https://cloudrun-srv-stuff.a.run.app/ este după cum urmează

* Se încearcă 216.239.36.53...
* TCP_NODELAY setat
* Conectat la cloudrun-srv-lz5wvvl32a-ez.a.run.app (216.239.36.53) portul 443 (#0)
* ALPN, oferind h2
* ALPN, oferind http/1.1
* setați cu succes locațiile de verificare a certificatelor:
* CAfile: /etc/ssl/cert.pem
  CApath: niciunul
* TLSv1.2 (OUT), strângere de mână TLS, salut client (1):
* TLSv1.2 (IN), strângere de mână TLS, salut server (2):
* TLSv1.2 (IN), strângere de mână TLS, Certificat (11):
* TLSv1.2 (IN), strângere de mână TLS, schimb de chei de server (12):
* TLSv1.2 (IN), TLS handshake, Server terminat (14):
* TLSv1.2 (OUT), TLS handshake, Schimb cheie client (16):
* TLSv1.2 (OUT), TLS schimbă cifra, Schimbă specificația cifrului (1):
* TLSv1.2 (OUT), TLS handshake, Terminat (20):
* TLSv1.2 (IN), schimbarea cifrului TLS, modificarea specificației cifrului (1):
* TLSv1.2 (IN), strângere de mână TLS, Terminat (20):
* Conexiune SSL folosind TLSv1.2 / ECDHE-ECDSA-CHACHA20-POLY1305
* ALPN, server acceptat să utilizeze h2
* Certificat de server:
* subiect: C=US; ST=California; L=Vedere la munte; O=Google LLC; CN=*.a.run.app
* data începerii: 28 iunie 01:08:46 2021 GMT
* data expirării: 20 septembrie 01:08:45 2021 GMT
* subjectAltName: gazda „cloudrun-srv-stuff.a.run.app” a corespuns certificatului „*.a.run.app”
* emitent: C=US; O=Servicii de încredere Google; CN=GTS CA 1O1
* Verificare certificat SSL ok.
* Utilizând HTTP2, serverul acceptă utilizarea multiplă
* Starea conexiunii a fost schimbată (HTTP/2 confirmat)
* Copierea datelor HTTP/2 din bufferul de flux în bufferul de conexiune după actualizare: len=0
* Folosind ID-ul fluxului: 1 (mâner ușor 0x7f83b4810a00)
> GET / HTTP/2
> Gazdă: cloudrun-srv-stuff.a.run.app
> User-Agent: curl/7.64.1
> Accept: */*
>
* Starea conexiunii a fost schimbată (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 502
< lungimea conținutului: 87
< tipul de conținut: text/plain
< data: sâmbătă, 24 iulie 2021 13:58:13 GMT
< server: Google Frontend
< x-cloud-trace-context: 1370fab1a02839b367048f855593cbef/5890123523738625787;o=1
< alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
<

Care sunt următorii pași în depanarea acestui lucru?

John Hanley avatar
drapel cn
1) Ai activat Cloud Run **end-to-end** http2? 2) Afișați comanda gcloud deploy. 3) Afișați codul care configurează ascultătorul aplicației. 4) Verificați jurnalele Cloud Run pentru acest serviciu. 5) Adăugați opțiunea curl de linie de comandă **--http1.1** și testați din nou.
drapel cn
Răspunsul lui John de mai sus a fost problema - http2 cap la cap a fost activat, dar codul meu Go nu acceptă H2C.
Puncte:5
drapel cn

John Hanely's response to my question identified the issue. https://cloud.google.com/run/docs/configuring/http2#console allowed me to disable http/2 end-to-end, and this resolved the issue.

drapel za
Consola GCP descrie această opțiune ca fiind simplu „Activați conexiunile http/2: conexiunile HTTP/2 la această versiune vor fi activate”. Nu spune că este de la capăt la capăt și mă întreb câți oameni s-au confruntat și cu această problemă din cauza asta.
Reza avatar
drapel pk
Am aceeași problemă, schimbarea acestei opțiuni și redistribuirea nu rezolvă problema

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.