ฉันมีบริการสองอย่างที่ทำงานอยู่ในเอ็นจิ้นแอป 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 เสร็จสิ้นแล้วเป็นค่าเริ่มต้นและลบออก
คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างสูง ขอขอบคุณ!