Рейтинг:0

UDP-серверы High Availability допускают случайный ответ IP-адреса источника

флаг jp

Моя система состоит из NGINX, настроенного как балансировщик нагрузки, ожидающий дейтаграмм UDP.

Клиент открывает сокет UDP, назначает случайный порт источника и отправляет запрос, ожидая ответа.

Скажем, источник/назначение дейтаграммы запроса настроен как SOURCE_IP, RANDOM_SOURCE_PORT -> NGINX_IP, NGINX_PORT.

NGINX направляет дейтаграмму на один из узлов, но по замыслу, чтобы реализовать высокую доступность, другой сервер может отправить ответ. Имейте в виду, что два узла синхронизируются с использованием кеша, в котором хранятся исходный 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-датаграммы ответа обратно в источник через NGINX, игнорируя IP-адрес источника ответа и полагаясь только на порт назначения (NGINX_RANDOM_SOURCE_PORT)? Или мне следует использовать другой компонент между NGINX и узлами приложения? Какую архитектурную концепцию мне не хватает?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.