Sistemul meu este compus dintr-un NGINX configurat ca echilibrator de încărcare care așteaptă datagramele UDP.
Clientul deschide un socket UDP, atribuind un port sursă aleatoriu și trimite o solicitare, așteptând un răspuns.
Să spunem că sursa/destinația datagramei de solicitare este configurată ca SOURCE_IP, RANDOM_SOURCE_PORT -> NGINX_IP, NGINX_PORT.
NGINX direcționează datagrama către unul dintre noduri, dar, prin proiectare, pentru a implementa HA, celălalt server ar putea trimite răspunsul. Rețineți că cele două noduri sunt sincronizate folosind un cache care stochează IP-ul și portul sursă (cele NGINX, deoarece acționează ca un proxy).
Acum datagrama de solicitare primită de primul server este NGINX_IP, NGINX_RANDOM_SOURCE_PORT -> SERVER1_IP, SERVER_PORT.
Datagrama răspunsului este SERVER2_IP, SERVER_PORT -> NGINX_IP, NGINX_RANDOM_SOURCE_PORT.
NGINX nu pare să direcționeze mesajul înapoi către client.
Pot configura NGINX pentru a ruta datagrama UDP de răspuns înapoi la sursă prin NGINX ignorând IP-ul sursei de răspuns și bazându-mă numai pe portul de destinație (NGINX_RANDOM_SOURCE_PORT)? Sau ar trebui să folosesc o altă componentă între NGINX și nodurile aplicației? Care este conceptul de arhitectură care îmi lipsește?