Механизм балансировки нагрузки для прямого подключения бэкенда и клиентов - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь внедрить систему с использованием нескольких серверов, которые общаются с клиентами через TCP. Поскольку для обработки запросов клиентов будет использоваться несколько внутренних серверов, мне интересно, существует ли механизм балансировки нагрузки, который после того, как балансировщик нагрузки получает запрос клиента, соединяет клиента напрямую с внутренним сервером, чтобы они устанавливали двустороннее TCP-соединение и вся будущая связь между ними осуществляется непосредственно между ними, а не через балансировщик нагрузки.

1 Ответ

1 голос
/ 09 июля 2019

В общих чертах, нет, IP не позволяет этого, отдельные соединения не могут быть переданы другим машинам. Протокол не позволяет этого. В случае высокой доступности вы можете передать все соединения с одного компьютера на другой, но даже это своего рода хак и выполняется с помощью переключения MAC-адресов.

Вероятно, вам нужно что-то вроде HAProxy , который является балансировщиком нагрузки TCP / IP. Это достаточно быстро, чтобы быть в центре - не проблема, вы не почувствуете снижение производительности.

Альтернатива состоит в том, чтобы сделать что-то на уровне приложений, где ваш «балансировщик нагрузки» сообщает клиентам, к какому серверу подключаться, но на самом деле не выполняет подключение. Это делается клиентом во вторичном запросе. Иногда это делается через DNS, иногда через ограниченные по времени токены, чтобы клиенты уважали маршрутизацию.

...