Puncte:0

Gateway cloud Spring implementat în motorul de aplicații GCP flexibil provoacă o buclă de redirecționare infinită

drapel mx

Am două servicii care rulează în motorul de aplicații GCP; să spunem serviciul A și B și apoi am implementat un serviciu de gateway cloud de primăvară pentru a direcționa traficul extern către aceste două servicii pe baza predicatelor de cale. serviciile A și B sunt implementate în motorul de aplicații flexibil. inițial aveam gateway-ul implementat în motorul de aplicații flexibil și funcționa perfect. deoarece avem unele servicii batch care au un timp de răspuns mai mare de 10 minute (standardul motorului de aplicații are un timp de expirare maxim de răspuns de 10 minute), a trebuit să decidem să migrăm gateway-ul către motorul de aplicații flexibil.

Serviciul gateway este dockerizat și rulează în portul 8080. App.yaml meu arată astfel:

runtime: personalizat
env: flex

serviciu: beta-gateway

env_variables:
  SPRING_PROFILES_ACTIVE: „beta”

resurse:
  CPU: 1
  memorie_gb: 2

liveness_check:
  cale: „/actuator/sănătate”
  check_interval_sec: 30
  timeout_sec: 4
  prag_eșec: 2
  prag_succes: 2
  initial_delay_sec: 300

Readiness_check:
  cale: „/actuator/sănătate”
  check_interval_sec: 5
  timeout_sec: 4
  prag_defecțiune: 2
  prag_succes: 2
  app_start_timeout_sec: 300

Serviciul este implementat corect, punctele finale ale actuatorului funcționează perfect, sun eu /actuator/gateway/routes punctul final și configurația de rutare arată bine (Și o direcționez către serviciile A și B folosind appshot dns uri; nu cea mai bună abordare ar trebui să folosească un registru de servicii în viitor).

Problema: Problema este că pentru orice punct final, altul decât punctul final al actuatorului, cererea ajunge într-o buclă de redirecționare (302) și în cele din urmă eșuează.

Ce am incercat:

După cum am menționat mai sus, am invocat punctul final /actuator/gateway/routes și configurația de rutare arată bine. Am activat înregistrarea TRACE pentru gateway și văd că rutarea se potrivește corect cu adresa URL a appspot dns a serviciului A sau B. Aspectul arată astfel:

2022-06-02 16:10:22.030 PDT
spring.cloud.gateway.requests etichete: [tag(httpMethod=GET),tag(httpStatusCode=302),tag(outcome=REDIRECTION),tag(routeId=web_api_route),tag(routeUri=https://my-service- dot-my-project.appspot.com:443),tag(status=FOUND)]
2022-06-02 16:10:22.029 PDT
NettyWriteResponseFilter începe intrare: 2ad7457b, ieșire: [67187409-456]
2022-06-02 16:10:22.019 PDT
rută de ieșire: 2ad7457b, de intrare: [67187409-456]
2022-06-02 16:10:22.016 PDT
RouteToRequestUrlFilter începe
2022-06-02 16:10:22.016 PDT
GatewayFilterFactory sortate: [[GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.RemoveCachedBodyFilter@1e4d3ce5}, ordine = -2147483648], [GatewayFilterAdapter{delegate. comanda = -2147482648], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.NettyWriteResponseFilter@4b5189ac}, comanda = -1], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.NettyWriteResponseFilter. }, ordine = 0], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.GatewayMetricsFilter@1e81f160}, ordine = 0], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.Cloud.Routeway.Filter1e81f160} }, comanda = 10000], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.config.GatewayNoLoadBalancerClientAutoConfiguration$NoLoadBalancerClientFilter@1acaf3d}, comanda = 10150], [Adapter{Gateway. .filter.WebsocketRoutingFilter@404bbcbd}, comandă = 2147483646], GatewayFilterAdapter{delegate=org.company.gatewayapi.configs.FilterConfiguration$$Lambda$397/[email protected]. .NettyRoutingFilter@4f704591}, comanda = 2147483647], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ForwardRoutingFilter@704deff2}, comanda = 214748364]]
2022-06-02 16:10:22.016 PDT
[67187409-456] Mapat la org.springframework.cloud.gateway.handler.FilteringWebHandler@1f570ea9
2022-06-02 16:10:22.015 PDT
Maparea [Exchange: GET http://my-gateway-dot-my-project.uc.r.appspot.com/favicon.ico] la Route{id='web_api_route', uri=https://my-service- dot-my-project.appspot.com:443, ordine=0, predicat=Căi: [/**], potrivire slash final: true, gatewayFilters=[], metadate={}}
2022-06-02 16:10:22.015 PDT
Ruta potrivită: web_api_route
2022-06-02 16:10:22.015 PDT
Modelul „/**” se potrivește cu valoarea „/favicon.ico”
2022-06-02 16:10:22.015 PDT
Model „[/api/import-auphan/**, /api/import-speedline/**, /api/import-heartland/**, /api/import-clover/**, /api/import-toast/ **]" nu se potrivește cu valoarea "/favicon.ico"
2022-06-02 16:10:22.015 PDT
Modelul „[/api/cloudprint/**]” nu se potrivește cu valoarea „/favicon.ico”

2022-06-02 16:10:22.015 PDT
Modelul „[/api/jobs/**]” nu se potrivește cu valoarea „/favicon.ico”
2022-06-02 16:10:22.014 PDT
Modelul „[/api/webhooks/**]” nu se potrivește cu valoarea „/favicon.ico”

Nu sunt foarte sigur dacă este relevant, dar inițial am făcut o implementare cu setarea de rețea care specifică legarea portului

reţea:
  nume: implicit
  forwarded_ports:
    - 80:8080

Apoi am învățat că legarea la 8080 este gata să fie implicită și am eliminat-o.

Orice sfat va fi foarte apreciat. Mulțumesc!

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.