Score:0

Spring cloud gateway ที่ปรับใช้ใน GCP App engine ที่ยืดหยุ่นทำให้เกิดการวนซ้ำไม่สิ้นสุด

ธง mx

ฉันมีบริการสองอย่างที่ทำงานอยู่ในเอ็นจิ้นแอป GCP; สมมติว่าบริการ A และ B จากนั้นฉันก็ใช้บริการสปริงคลาวด์เกตเวย์เพื่อกำหนดเส้นทางการรับส่งข้อมูลภายนอกไปยังบริการทั้งสองนี้ตามเพรดิเคตพาธ บริการ A และ B ถูกปรับใช้ในเครื่องมือแอพที่ยืดหยุ่น ในตอนแรกฉันได้ปรับใช้เกตเวย์ในเอ็นจิ้นแอพที่ยืดหยุ่นและมันทำงานได้ดีอย่างสมบูรณ์ เนื่องจากเรามีบริการแบทช์บางอย่างซึ่งมีเวลาตอบสนองมากกว่า 10 นาที (มาตรฐานโปรแกรมจัดการแอปมีเวลาตอบสนองสูงสุด 10 นาที) เราจึงต้องตัดสินใจย้ายเกตเวย์ไปยังโปรแกรมจัดการแอปที่ยืดหยุ่น

บริการเกตเวย์เชื่อมต่อและทำงานในพอร์ต 8080 app.yaml ของฉันมีลักษณะดังนี้:

รันไทม์: กำหนดเอง
env: ยืดหยุ่น

บริการ: เบต้าเกตเวย์

env_variables:
  SPRING_PROFILES_ACTIVE: "เบต้า"

ทรัพยากร:
  ซีพียู: 1
  memory_gb: 2

liveness_check:
  เส้นทาง: "/ตัวกระตุ้น/สุขภาพ"
  check_interval_sec: 30
  หมดเวลา_วินาที: 4
  เกณฑ์ความล้มเหลว: 2
  เกณฑ์สำเร็จ: 2
  initial_delay_sec: 300

ความพร้อม_ตรวจสอบ:
  เส้นทาง: "/ตัวกระตุ้น/สุขภาพ"
  check_interval_sec: 5
  หมดเวลา_วินาที: 4
  เกณฑ์ความล้มเหลว: 2
  เกณฑ์สำเร็จ: 2
  app_start_timeout_sec: 300

บริการได้รับการปรับใช้อย่างถูกต้อง จุดสิ้นสุดของแอคชูเอเตอร์ทำงานได้อย่างสมบูรณ์ ฉันขอเรียก /ตัวกระตุ้น/เกตเวย์/เส้นทาง จุดสิ้นสุดและการกำหนดค่าการกำหนดเส้นทางดูดี (และฉันกำหนดเส้นทางไปยังบริการ A และ B โดยใช้ appshot dns uri ไม่ใช่วิธีที่ดีที่สุดที่ควรใช้การลงทะเบียนบริการในอนาคต)

ปัญหา: ปัญหาคือว่าสำหรับจุดสิ้นสุดอื่น ๆ ที่จุดสิ้นสุดของแอคทูเอเตอร์ คำขอจะเข้าสู่ลูปการเปลี่ยนเส้นทาง (302) และล้มเหลวในที่สุด

สิ่งที่ฉันพยายาม:

ตามที่กล่าวไว้ข้างต้น ฉันเรียกใช้จุดสิ้นสุด /actuator/gateway/routes และการกำหนดค่าการกำหนดเส้นทางก็ดูดี ฉันเปิดใช้งานการบันทึก TRACE สำหรับเกตเวย์ และฉันเห็นว่าการกำหนดเส้นทางได้รับการจับคู่อย่างถูกต้องกับบริการ apppot dns url ของ A หรือ B หน้าตาจะเป็นดังนี้:

2022-06-02 16:10:22.030 PDT
แท็ก spring.cloud.gateway.requests: [แท็ก(httpMethod=GET),แท็ก(httpStatusCode=302),แท็ก(outcome=REDIRECTION),แท็ก(routeId=web_api_route),แท็ก(routeUri=https://my-service- dot-my-project.appspot.com:443),แท็ก(สถานะ=พบ)]
2022-06-02 16:10:22.029 PDT
NettyWriteResponseFilter เริ่มต้นขาเข้า: 2ad7457b, ขาออก: [67187409-456]
2022-06-02 16:10:22.019 PDT
เส้นทางขาออก: 2ad7457b, ขาเข้า: [67187409-456]
2022-06-02 16:10:22.016 PDT
เริ่มต้น RouteToRequestUrlFilter
2022-06-02 16:10:22.016 PDT
เกตเวย์ที่เรียงลำดับFilterFactories: [[GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.RemoveCachedBodyFilter@1e4d3ce5}, order = -2147483648], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.AdaptCachedBodyGlobalFilter@21d03963}, คำสั่ง = -2147482648], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.NettyWriteResponseFilter@4b5189ac}, คำสั่ง = -1], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ForwardPathFilter@379614be }, สั่งซื้อ = 0], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.GatewayMetricsFilter@1e81f160}, สั่งซื้อ = 0], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter@3ddc6915 } คำสั่งซื้อ = 10,000], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.config.GatewayNoLoadBalancerClientAutoConfiguration$NoLoadBalancerClientFilter@1acaf3d} คำสั่งซื้อ = 10150], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway .filter.WebsocketRoutingFilter@404bbcbd}, คำสั่งซื้อ = 2147483646], GatewayFilterAdapter{delegate=org.company.gatewayapi.configs.FilterConfiguration$$Lambda$397/503642634@27508c5d}, [GatewayFilterAdapter{delegate=org.springframeworkter.cloud.gateway .NettyRoutingFilter@4f704591} คำสั่งซื้อ = 2147483647], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ForwardRoutingFilter@704deff2} คำสั่งซื้อ = 2147483647]]
2022-06-02 16:10:22.016 PDT
[67187409-456] แมปกับ org.springframework.cloud.gateway.handler.FilteringWebHandler@1f570ea9
2022-06-02 16:10:22.015 PDT
การทำแผนที่ [การแลกเปลี่ยน: GET http://my-gateway-dot-my-project.uc.r.appspot.com/favicon.ico] ไปยังเส้นทาง{id='web_api_route', uri=https://my-service- dot-my-project.appspot.com:443, order=0, เพรดิเคต=เส้นทาง: [/**], จับคู่เครื่องหมายทับท้าย: จริง, gatewayFilters=[], ข้อมูลเมตา={}}
2022-06-02 16:10:22.015 PDT
เส้นทางที่ตรงกัน: web_api_route
2022-06-02 16:10:22.015 PDT
รูปแบบ "/**" ตรงกับค่า "/favicon.ico"
2022-06-02 16:10:22.015 PDT
รูปแบบ "[/api/import-auphan/**, /api/import-speedline/**, /api/import-heartland/**, /api/import-clover/**, /api/import-toast/ **]" ไม่ตรงกับค่า "/favicon.ico"
2022-06-02 16:10:22.015 PDT
รูปแบบ "[/api/cloudprint/**]" ไม่ตรงกับค่า "/favicon.ico"

2022-06-02 16:10:22.015 PDT
รูปแบบ "[/api/jobs/**]" ไม่ตรงกับค่า "/favicon.ico"
2022-06-02 16:10:22.014 PDT
รูปแบบ "[/api/webhooks/**]" ไม่ตรงกับค่า "/favicon.ico"

ฉันไม่ค่อยแน่ใจว่ามันเกี่ยวข้องกันหรือไม่ แต่ในตอนแรกฉันได้ปรับใช้กับการตั้งค่าเครือข่ายที่ระบุการรวมพอร์ต

เครือข่าย:
  ชื่อ: ค่าเริ่มต้น
  forwarded_ports:
    - 80:8080

จากนั้นฉันได้เรียนรู้ว่าการผูกกับ 8080 เสร็จสิ้นแล้วเป็นค่าเริ่มต้นและลบออก

คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างสูง ขอขอบคุณ!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา