|
При количестве терминальных серверов больше одного, становится актуальным вопрос распределения нагрузки между ними.
Способов решения этой задачи существует несколько. Наиболее распространенные из них:
Вручную
Самый примитивный способ. У каждого клиента создается два ярлыка на рабочем столе: "Основной сервер"
и "Резервный сервер". При этом у половины клиентов ярлык "Основной сервер" указывает на "Сервер 1",
"Резервный сервер" - на "Cервер 2", а у другой половины - наоборот. Таким образом достигается определенное
разделение нагрузки между серверами, а также, при недоступности одного из серверов, пользователи в ручном
режиме могут подключиться к работающему серверу и продолжить работу.
Round-robin DNS
На DNS сервере создается несколько записей типа Host(A) c одинаковым именем (например terminal.domain.local)
и разными IP адресами. Устанавливая соединение, клиенты обращаются к terminal.domain.local, а DNS сервер на
первый запрос выдает IP адрес первого сервера, на второй - второго и так далее по кругу. Этот способ распределения
нагрузки - более правильный чем предыдущий, однако он имеет ряд недостатков:
Клиенты распределяются между серверами по очереди вне зависимости от загруженности серверов
Если какой-то из серверов не доступен, к нему всё равно будут пытаться подключаться
Если сессия пользователя уже создана на одном из серверов, вовсе не обязательно, что при повторном
подключении он попадет на тот же сервер, в результате чего создаётся много не активных сессий на разных серверах
Microsoft Session Directory
Решение от Microsoft, предназначенное для балансировки нагрузки терминальных серверов.
Не поддерживается на Windows Server Standard Edition (только Enterprise и Datacenter)
Показателем загрузки сервера является нагрузка сетевого интерфейса, а не процессора, памяти,
дисковой подсистемы, количество сессий и т.п.
2X LoadBalancer
Пожалуй, одно из лучших решений для балансировки нагрузки Microsoft Terminal Services и Citrix XenApp
(Presentation Server), существующих на сегодняшний день. Все клиенты подключаются к одному IP адресу LoadBalancer-а,
который распределяет нагрузку между терминальными серверами. При этом:
Пользователи подключаются к своим существующим сессиям если таковые есть
Нагрузка распределяется исходя из фактической загруженности серверов (загрузка процессоров, объем
занятой/свободной памяти, количество сессий)
Подключение происходит полностью "прозрачно" для пользователей при помощи стандартных клиентских программ
Используя клиент 2X LoadBalancer Client, есть возможность организовать туннель (через порт 80, например),
по которому будет передаваться весь трафик между клиентом и LoadBalancer-ом. При необходимости весь трафик в туннеле
может шифроваться используя SSL (поддерживаются ключи 1024, 2048 и 4096 бит)
|