Пишу балансировщик нагрузки сети, возник вопрос по поводу работы сети в целом.
Есть два коммутатора, сервер балансировки, клиенты и серверы (допустим, что все серверы идентичны).
Подключено это следующим образом: клиенты подключены к первому коммутатору, сервер балансировки подключен и к первому и ко второму коммутатору (две сетевые карты), серверы подключены ко второму коммутатору.
Сервер балансировки, имея данные о загруженности серверов, изменяет адрес назначения пакета от клиента, пересчитывает контрольную сумму, и отправляет в интерфейс, который смотрит в сторону серверов (второй коммутатор).
Изначально я хотел обрабатывать весь трафик, проходящий к/через сервер балансировки, но после тестов понял, что не хватит мощности сервера для такой работы.
Вопросы:
Возможно ли такое: клиент обращается к серверу балансировки, к примеру обычный tcp-клиент, я изменяю адрес назначения на свободный сервер, далее клиент, получив ответ от сервера, уже общается с сервером напрямую. (я не уверен что так будет работать).
Как ещё можно заставить клиента общаться напрямую с нужным мне сервером?
Ответ
например, можно отослать клиенту icmp-пакет redirect с кодом 1 — redirect for host
Комментариев нет:
Отправить комментарий