Медленный вход на Terminal Server 2008 со сбалансированной нагрузкой за сервером шлюза

У меня есть небольшая ферма Terminal Server 2008 с балансировкой нагрузки (с помощью Session Broker) за сервером шлюза, доступ к которому осуществляется через Интернет. У меня проблема в том, что с задержкой 20-30 секунд, если посредник сеанса переключает пользователя на другой сервер во время входа в систему. Я думаю, что это связано с тем, что я заставляю уровень безопасности быть RDP, а не SSL.
http://www.lytzen.name/blogimages/tsstructure.png

Фон
Сервер шлюза имеет открытые маршрутизируемые IP-адреса и DNS-имя, поэтому к нему можно получить доступ из Интернета, и все пользователи заходят по этому маршруту (система используется для предоставления доступа к размещенным приложениям внешним клиентам). Фактические терминальные серверы имеют только внутренние IP-адреса. Это работает очень хорошо, за исключением того, что с клиентом Vista или Windows 7 клиент удаленного рабочего стола будет согласовывать с сервером использование SSL для уровня безопасности. Это тогда выставляет автоматически сгенерированный сертификат, который имеет TS1 или TS2 - но так как они являются внутренними, автоматически сгенерированными сертификатами, клиент получит строгое предупреждение, что сертификат недействителен. Я не могу дать серверам должным образом авторизованный сертификат, поскольку у серверов нет общедоступного IP-адреса или DNS-имени. Вместо этого я использую групповую политику, чтобы заставить соединения быть поверх RDP вместо SSL.

\Computer Configuration\Policies\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Security\Require use of specific security layer for remote (RDP) connections  

Пользователь Windows 7 теперь получает гораздо менее строгое предупреждение о том, что "идентичность сервера не может быть подтверждена", с чем я могу жить.
У меня недостаточно контроля над компьютерами конечных пользователей, чтобы попросить их установить новый корневой сертификат.

TS1 и TS2 также сбалансированы по нагрузке с помощью Session Broker, который установлен на сервере шлюза. Я использую циклический DNS, поэтому первоначальное подключение пользователя будет проходить через шлюз1 к TS1 или TS2. TS1/TS2 будет затем общаться с посредником сеансов и может передать пользователя на другой сервер. Т.е. пользователь может подключиться к TS2, но после разговора с посредником сеанса пользователь может быть передан в TS1, где они будут запускать свой сеанс.

Когда происходит такое переключение серверов, в моей настройке экран сидит со словом "Добро пожаловать" в течение 20-30 секунд, после чего он мигает, снова отображается "Добро пожаловать", а затем мигает через обычные экраны входа в систему (т. Е. "Ждать менеджера профилей пользователей"). " так далее). Проведя некоторое исследование, я думаю, что происходит то, что пользователь полностью вошел в TS2 (пока отображается "Добро пожаловать"), прежде чем он будет передан в TS1, где они затем снова войдут в систему. Интересно, что обычно, когда вы видите слово "приветствия", маленький кружок влево вращается, однако он не вращается во время этой задержки - экран выглядит просто замороженным.

Этот пост в блоге заставляет меня думать, что это потому, что CredSSP не используется, возможно потому, что я запрещаю SSL и форсирую RDP.

Что я пробовал

  • Я снова включил SSL, который удаляет задержку "Добро пожаловать". Тем не менее, кажется, что вводит новую задержку гораздо раньше в этом процессе. В частности, когда клиент RDP говорит "инициализация соединения" - это теперь намного медленнее. Помимо того, что проблема с сертификатом не позволяет мне использовать это решение без особых трудностей.

  • Я попытался отключить балансировку нагрузки (просто удалите серверы из фермы посредника сеансов), и соединения не имеют никакой задержки.

  • Проблема также является периодической в ​​том смысле, что это происходит только тогда, когда пользователь сталкивается с одного сервера на другой. Я проверил это, пытаясь подключиться напрямую к TS1 (через шлюз, конечно) и затем проверить, к какому серверу я подключился.

  • Просто чтобы быть уверенным, я также обошел обходной DNS, чтобы посмотреть, оказал ли он какое-либо влияние, и нет. Настройка в основном соответствует рекомендациям MS здесь: Пошаговое руководство по балансировке нагрузки TS Session Broker

  • Я попытался перейти на использование специального перенаправителя. По сути, вместо использования циклического DNS я направил свой DNS на сервер шлюза и настроил его в качестве выделенного перенаправителя (запретить вход в систему, добавить его в ферму). Та же проблема, увы.

Любые идеи или предложения с благодарностью принимаются.

4 ответа

Решение

Sort-оф-ан-ответ;

  1. Когда мы начали запускать эту настройку в рабочей среде, проблема, казалось, уменьшилась или ушла, поэтому, похоже, это происходит только при небольшой пользовательской нагрузке. Это имеет смысл.

  2. В самом клиенте RDP на вкладке "Дополнительно" в настройках "Подключаться из любого места" есть небольшая безобидная галочка под названием "Обход сервера шлюза RD для локальных адресов", которая отмечена по умолчанию. Теперь в моей настройке я просто указал "хостинг" в качестве имени сервера, чтобы попытаться подключиться, поэтому RDP-клиент пытается найти этот сервер локально, прежде чем пытаться подключиться через сервер шлюза, что вызывает длительную задержку. Простое снятие отметки с этого поля значительно ускорило соединение, по крайней мере, до того, как вы на самом деле подключитесь к серверу шлюза.

Для внешнего доступа rdweb к шлюзу используйте сертификат с зарегистрированными внешними DNS и внутренними дружественными именами. Таким образом, его можно использовать как на сервере шлюза, так и на серверах терминалов в ферме. в моем сценарии мы зарегистрировали внешний адрес rdweb для шлюза. который затем указывает на брокера соединения. внутренний доступ осуществляется через внутренне зарегистрированный псевдоним dns xyzrdweb, который регистрируется на обоих терминальных серверах в ферме, по сути, использование xyzrdweb возвращает то, какая запись будет получена первой через dns. Внутренние пользователи обходят шлюз. К сожалению, внешние пользователи в этом сценарии имеют начальное медленное соединение за 1 1/2 минуты до полной аутентификации, но после полной аутентификации приложения запускаются мгновенно, а для запуска таких приложений, как Adobe Photoshop и т. Д., Требуется около 3 - 4 секунд.

По сути, у вас есть два механизма балансировки нагрузки, конкурирующие друг с другом. Вы описали проблему именно так, как я ее вижу. DNS Round Robin отправляет входящее соединение на один сервер, а затем посредник сеансов отправляет его на другой сервер, вызывая задержку в установлении сеанса.

Я предлагаю использовать DNS Round Robin или Session Broker, но не оба одновременно.

Лично я бы использовал Session Broker. Я хотел бы создать одну общедоступную DNS-запись, которая указывает на сервер Session Broker и позволяет ему обрабатывать балансировку нагрузки входящих соединений между TS1 и TS2.

Возможно, немного поздно для другого рода ответа, но я все равно добавлю его сюда. У меня также есть еще одна ошибка в моей настройке.

Я просто столкнулся с точно такой же проблемой и следил за крошками журналов на всех четырех серверах (rdgw, ts01, ts02 и rdbroker). Я также использую самостоятельно выданные сертификаты на всех серверах, но RDGW и строгие предупреждения фактически дают возможность оценить, где задержка отличается от просмотра журналов. Мой сценарий как оригинальный плакат, что существует огромная задержка в случае перенаправления. Запросы сертификатов показывают, что клиент быстро подключается к исходному TS/ перенаправителю. Если это TS, где находится сеанс, все в порядке. Если клиент получает перенаправление, подключение к правильному TS занимает ровно 23 секунды. Каждый раз!

Рассматривая пошаговое объяснение от Microsoft ( http://technet.microsoft.com/en-us/library/cc772418%28WS.10%29.aspx) на шаге 6, первоначальное подключение TS выдает команду перенаправления клиенту и поставляет IP-адрес правильного ТС. В этом и заключается проблема, как я ее вижу. Начальное соединение через RDGW выполняется с использованием внутреннего FQDN исходного TS/ перенаправителя. Перенаправленное соединение выполняется с использованием внутреннего IP-адреса правильного TS, а не FQDN. Я действительно могу воспроизвести эту задержку, используя внутренний IP-адрес исходного TS/ перенаправителя. Или любой другой автономный TS в моем домене и дочерних доменах. В этом случае я получаю задержку в 23 секунды при первоначальном подключении.

Мой взгляд на этот вопрос заключается в том, что

  1. Перенаправление осуществляется по IP-адресу, а не по FQDN
  2. RDGW или клиентская реализация имеет проблему задержки, используя IP-адрес
  3. Гоча: RDP-клиент Windows 8.1 (6.3.9600) вообще не может подключиться к перенаправленному серверу. События входа в систему не регистрируются на TS, где находится пользовательский сеанс. RDP клиент просто зависает навсегда, пытаясь соединиться - даже не истекает время ожидания.

редактировать; Но да, "Обход сервера шлюза RD для локальных адресов" сделал свое дело. Вид глупости, так как возвращенный IP-адрес почти не находится ни в одной локальной подсети на моих клиентах. К счастью, я генерирую RDP-файлы со сценарием для своих клиентов, поэтому я смогу довольно легко обойти эту проблему.

Другие вопросы по тегам