Я пытаюсь построить свой собственный балансировщик нагрузки на C++. Но не уверен, все ли пакеты (и запросы, и ответы) между клиентом и сервером должны пройти через балансировщик нагрузки.

  1. Должно ли это просто помочь найти сервер для клиента, а затем оставить его напрямую связываться друг с другом?
  2. Или это должен быть «полный дуплекс», где через него проходят не только запросы, но и ответы?

1 ответ1

0

Это зависит от настройки, в большинстве случаев весь трафик проходит через балансировщик нагрузки в обоих направлениях, так как это самая "безопасная" и самая простая конфигурация. POV для сетевой безопасности также имеет преимущества, так как вы можете лучше изолировать серверы от конечных пользователей.

Для работы tcp-сессии исходные и целевые IP-адреса и порты должны быть согласованы для каждого tcp-потока. Несмотря на то, что несколько систем могут отвечать по одному и тому же IP, вы просите о боли и трудностях, когда что-то идет не так.

Если вы хотите сделать это без наличия балансировщика нагрузки на критическом пути, вы можете сделать это на уровне DNS, а не на уровне балансировки нагрузки.

Возвращаясь к далекому прошлому, я вспоминаю LVS (http://www.linuxvirtualserver.org/how.html), который имеет 3 различных механизма для балансировки нагрузки и был бы полезен для чтения. Я не использовал это в течение очень долгого времени, и я не уверен, что это лучше, чем Apache или эквивалентные решения для балансировки нагрузки. [Интернет продвинулся, и этому документу 30 лет. Глубокая фильтрация выходов и безопасность - это не то, что нужно, и компьютеры работали намного медленнее. Кроме того, вы не можете использовать его для удаления https -> http, очень полезно сегодня]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .