Один из вопросов, возникающих при распределении нагрузки, состоит в том, что делать с разъединенными сеансами. Как мы обсуждали в главе 2, администраторы могут настроить на терминальных серверах тайм-ауты для холостых и разъединенных сеансов. Вы можете либо указать эти тайм-ауты очень низкими, давая возможность пользователю повторно соединиться с того же клиентского устройства и адресом IP в случае сбоя в сети, или вы можете установить большой тайм-аут, чтобы пользователи могли отключиться от сеанса, оставив приложение работать, а затем воссоединиться с ним позже.
Эти настройки хорошо работают в среде с одним сервером. При повторном подключении пользователя, Session Manager подключает его к существующему сеансу. Однако, в случае кластера с распределением нагрузки, Session Manager ничего не знает о сеансах на других серверах. Поэтому Microsoft ввела понятие Каталога Сеансов (Session Directory).
Каталог Сеансов поддерживает динамическую базу данных, которая хранит соответствия имен пользователей и открытых сеансов на всех терминальных серверах кластера. Это позволяет пользователям подключаться к своим сеансам на любом сервере в кластере, независимо от того, на какой сервер его изначально направила служба NLB.
Настройка каталога сеансов
Чтобы получить преимущества каталога сеансов, все терминальные серверы в кластере должны иметь редакцию Enterprise или Datacenter. Session Directory может использовать любую редакцию WS2K3. Вы даже можете создать Session Directory на одном терминальном сервере в кластере, хотя это не рекомендуется, поскольку остановка этого сервера для обслуживания или установки ПО может затронуть весь кластер.
Для настройки Каталога Сеансов, начните с сервера, на котором будет храниться база данных сеансов. На этом сервере откройте Computer Management or Services для доступа к Terminal Services Session Directory. Откройте свойства службы, настройте ее на автоматический запуск и запустите ее.
При первом запуске службы Session Directory она создает новую локальную группу Session Directory Computers. Чтобы терминальные серверы информировали сервер каталога сеансов о своих сеансах или запрашивали каталог сеансов с других серверов, терминальный сервер должен быть членом этой группы. Вы можете добавить в эту группу индивидуальные компьютеры в кластере или создать доменную группу, содержащую терминальные серверы, и добавить эту группу в Session Directory Computers.
После того, как вы создали сервер каталога сеансов, необходимо настроить терминальные серверы. Вы можете использовать либо утилиту Terminal Services Configuration, либо редактор групповых политик. В редакциях WS2K3 Enterprise или Datacenter, узел Server Settings в Terminal Services Configuration имеет дополнительную опцию - Session Directory.
Здесь вы вводите имя кластера NLB, к которому принадлежит терминальный сервер, и имя хоста или адрес IP сервера каталога сеансов. Если терминальный сервер имеет несколько сетевых адаптеров, вы должны выбрать один из них для направления на него клиентов. Вы также должны указать, следует ли подключать клиента к уникальному адресу IP этого сервера , выбрав редирект адреса IP, или использовать редирект маркеров маршрутизации, если адрес сервера невидим клиентам.
При использовании Microsoft NLB вы должны выбрать редирект адреса IP, поскольку NLB не поддерживает маркеры маршрутизации.
Если вы решили использовать Terminal Services Configuration, то вам необходимо сделать эти настройки вручную на всех терминальных серверах. Если вы используете Active Directory, то используйте групповые политики. Для этого создайте или отредактируйте GPO и примените их ко всем серверам кластера. Затем откройте редактор групповых политик, найдите Computer Configuration, Administrative Templates, Windows Components, Terminal Services, Session Directory. Там содержатся все настройки, доступные в Terminal Services Configuration. Разрешите все четыре параметра и введите необходимую информацию. При следующем обновлении политик все серверы кластера будут использовать каталог сеансов.
При использовании Session Directory, сервер, содержащий базу данных, становится критическим для функционирования терминальных серверов. Вы можете использовать кластеры Windows, чтобы сделать каталог сеансов отказоустойчивым. Microsoft написала инструкции для этого в статье “Session Directory and Load Balancing Using Terminal Server”
Как работает каталог сеансов
Здесь приведен пример работы каталога сеансов. Утром пользователь Joe User использует клиента Remote Desktop Connection для подключения к TSCluster.Domain.Com. Служба NLB направляет это соединение на сервер TServer02, наименее загруженный сервер в это время. Джо регистрируется на TServer02, и поскольку он еще не имеет существующего сеанса на TServer02, сервер запрашивает службу Session Directory на предмет существующих сеансов, принадлежащих Joe User на любом сервере в кластере. Joe не имеет никаких других сеансов, поэтому TServer02 принимает соединение и Джо начинает работу.
В 3:00, Джо решает поехать домой и продолжить работу оттуда. Он уже напечатал половину документа и открыл три окна веб-браузера со справочным материалом, поэтому от отключился, но не завершил сеанс, чтобы продолжить работу с того места, где он ее оставил. Когда Джо отключается от сеанса, TServer02 информирует сервер каталога сеансов о разъединенном сеансе. Сервер каталога сеансов создает запись в своей базе данных, включая имя пользователя и домен для Джо, имя сервера, время создания и отключения сеанса, а также разрешение и глубину цвета сеанса.
Придя домой, Joe устанавливает соединение VPN с корпоративной сетью. Он запускает на своем домашнем компьютере клиента Remote Desktop Connection и указывает имя TSCluster.Domain.Com. Служба NLB направляет соединение на уникальный адрес IP сервера с наименьшим числом соединений - на этот раз это TServer01. Джо вводит свое имя и пароль для TServer01.
TServer01 сначала проверяет свои разъединенные сеансы Джо. Если таковых не найдено, он запрашивает базу данных каталога сеансов. База данных находит сеанс Джо на сервере TServer02 и сообщает клиенту Remote Desktop Connection адрес IP сервера TServer02, а также шифрованные имя и пароль Джо. Клиент Remote Desktop Connection автоматически подключается к TServer02 и посылает учетные данные. TServer02 находит существующий сеанс Джо и подключает к нему Джо, который начинает продолжать работу над своим документом.