Рейтинг:0

Зеркалирование трафика с помощью Nginx (для повышения доступности и уменьшения задержки)

флаг in

Мне нужно дублировать/отражать трафик, поступающий на мой сервер.

Я имею в виду, что у меня есть N внутренних серверов A1 A2 ... An(n>=2) и nginx в качестве обратного прокси-сервера и балансировщика нагрузки.

Весь трафик, поступающий на Nginx, перенаправляется как на Ax, так и на Ay(x!=y) в параллельно, если один из серверов не работает (тайм-аут или 5xx), то ответ другого сервера можно использовать немедленно и вернуть результат клиенту.

Зеркалируя трафик (не повторяя но отправлять дублированные запросы параллельно), я могу создать избыточность, это означает, что более одного внутреннего сервера могут обрабатывать один запрос одновременно.

Мне нужно ответить клиенту в течение 30 мс, если установить повторы = 1, тайм-аут должен быть установлен на 15 мс (сложно архивировать), поэтому зеркалирование трафика может быть решением.

Является ли это возможным?

Рейтинг:0
флаг np

Ваш вопрос почти имеет сам ответ в целом. То, что вы описываете, - это просто балансировка нагрузки с проверками работоспособности. Это определенно возможно с nginx, и такая настройка описана в их документах: http://nginx.org/en/docs/http/load_balancing.html

флаг in
на самом деле я хочу создать некоторую избыточность, бэкэнд Java часто молодой GC (10 мс-200 мс), но мой клиент требует ответов моего приложения в течение 30 мс. поэтому дублировать трафик - лучшее решение.

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

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