ระบบของฉันประกอบด้วย NGINX ที่กำหนดค่าเป็นตัวโหลดบาลานเซอร์ที่รอดาตาแกรม UDP
ไคลเอนต์เปิดซ็อกเก็ต UDP กำหนดพอร์ตต้นทางแบบสุ่ม และส่งคำขอ รอการตอบกลับ
บอกว่าคำขอดาตาแกรมต้นทาง/ปลายทางได้รับการกำหนดค่าเป็น SOURCE_IP,RANDOM_SOURCE_PORT -> NGINX_IP, NGINX_PORT.
NGINX กำหนดเส้นทางดาตาแกรมไปยังโหนดใดโหนดหนึ่ง แต่โดยการออกแบบ เพื่อใช้ HA เซิร์ฟเวอร์อื่นสามารถส่งการตอบกลับได้ โปรดทราบว่าโหนดทั้งสองถูกซิงโครไนซ์โดยใช้แคชที่เก็บ IP ต้นทางและพอร์ต (โหนด NGINX เนื่องจากทำหน้าที่เป็นพร็อกซี)
ตอนนี้ดาตาแกรมคำขอที่ได้รับจากเซิร์ฟเวอร์แรกคือ NGINX_IP, NGINX_RANDOM_SOURCE_PORT -> SERVER1_IP, SERVER_PORT.
เดตาแกรมการตอบสนองคือ SERVER2_IP, SERVER_PORT -> NGINX_IP, NGINX_RANDOM_SOURCE_PORT.
NGINX ดูเหมือนจะไม่กำหนดเส้นทางข้อความกลับไปยังไคลเอ็นต์
ฉันสามารถกำหนดค่า NGINX เพื่อกำหนดเส้นทางการตอบสนอง UDP datagram กลับไปยังต้นทางผ่าน NGINX โดยไม่สนใจ IP ต้นทางการตอบสนองและอาศัยเฉพาะพอร์ตปลายทาง (NGINX_RANDOM_SOURCE_PORT)? หรือฉันควรใช้ส่วนประกอบอื่นระหว่าง NGINX และโหนดแอปพลิเคชัน แนวคิดสถาปัตยกรรมที่ฉันขาดหายไปคืออะไร