Недавно я задал вопрос о моих вариантах балансировки нагрузки на нескольких серверах (TCP-трафик без HTTP, очень длительные соединения с очень стабильной пропускной способностью): Балансировка нагрузки долго работающие TCP-соединения
В этом посте я был направлен на LVS и просто попробовал. Установка была простой, и она в значительной степени сработала сразу, с моей единственной проблемой, что я могу использовать только LVS-NAT (настоящие серверы - это окна, и я не хочу менять их конфигурацию). Проблема в том, что он перезаписывает исходный IP-адрес, поэтому, если клиент входит в систему, я вижу только IP-адрес с NAT, а не его исходный исходный IP-адрес. Это создает для нас проблему с точки зрения нормативных требований, поскольку мне нужно регистрировать реальный IP-адрес источника для каждого клиента, который входит в систему.
Как другие решают эту проблему?
Спасибо,
Том
Вы можете пересмотреть свою конфигурацию Windows. Я успешно использовал прямую маршрутизацию с LVS в Windows. Согласно документации a член моей команды написал:
First install the Windows Loopback Adapter. Start > hdwwiz.exe Click Next then "Install the hardware that I manually select from a
список (Дополнительно)
Scroll Down and click "Network Adapters" Choose Microsoft, then Microsoft Loopback Adapter Finish the Wizzard Go to Control Panel\Network and Internet\Network Connections. Rename
переходники на их описательные имена. Щелкните правой кнопкой мыши адаптер обратной связи и вручную назначьте ему LVS VIP.
Go to Start > cmd.exe (right click and choose run as administrator) Run these Commands. netsh interface ipv4 set interface "Name of Adapter that holds the real
хост IP "weakhostreceive = включен интерфейс netsh ipv4 set interface" loopback "weakhostreceive = включен интерфейс netsh ipv4 set interface" loopback "weakhostsend = включен
Это был сервер Windows 2008, который изначально был настроен с использованием этого интернет сайт для руководства.
Что касается ведения журнала, часто единственным решением будет использование журнала в точке, в которой реальный IP-адрес клиента все еще находится в маршруте.
С веб-трафиком X_FORWARDED_FOR
можно использовать переменную окружения. Дело в том, что после определенного момента сетевой уровень не может полагаться на эту информацию. В этом случае вам нужно продвинуться дальше по стеку для потенциальных решений.
Когда LVS находится в режиме NAT, LVS-блок должен быть шлюзом по умолчанию для трафика с реальных серверов именно потому, что трафик имеет реальный IP-адрес источника клиентов. Я не знаю, как вы могли заставить LVS изменить исходный IP-адрес в режиме NAT. У вас должен быть LVS-бокс с двумя сетевыми картами (конфигурация с двумя руками), VIP находится во внешней подсети, а шлюз по умолчанию для реальных серверов находится во внутренней подсети. По умолчанию трафик трансформируется в прозрачный NAT, то есть когда он появляется на реальном сервере, он будет выглядеть так, как если бы он пришел непосредственно с исходного IP-адреса клиента. Можете показать мне дамп ipvsadm -Ln? Также после того, как вы установили соединение с VIP-дампом, ipvsadm -Lnc точно покажет вам, что происходит. Вы уверены, что видите в журналах не только записи «Проверка работоспособности»? Они будут поступать с IP-адреса балансировщиков нагрузки, если вы используете ldirectord или keepalive для проверки работоспособности?
Да, прямая маршрутизация - отличное решение, но почему у вас возникла проблема с режимом NAT? LVS в режиме NAT с внутренними и внешними подсетями по умолчанию прозрачен, то есть серверы могут видеть исходный IP-адрес клиентов, как если бы это было прямое соединение (как брандмауэр). Краткое описание LVS в режиме NAT на нашем сайте: методы балансировки нагрузки (режим NAT). Кстати, вы даже можете выполнить NAT с помощью одной руки, если вы возитесь с таблицей маршрутизации Windows ...