Службы терминалов балансировки нагрузки: все, что вы хотели знать, но боялись спросить (часть 1)

Опубликовано: 24 Апреля, 2023

Опять же, как и в большинстве моих статей, я просто хочу отметить, что эта была написана для всех парней, которые сейчас думают о расширении своей среды с одним сервером или даже пытаются выяснить, могут ли они улучшить то, как они в настоящее время балансируют нагрузку. многосерверная среда. В этой статье не ставится цель подробно рассказать о том, как вы на самом деле настраиваете/используете каждую из упомянутых здесь опций. Мы хотим, чтобы наши читатели просто лучше понимали, что такое балансировка нагрузки, наиболее распространенные функции, которые вам следует искать, и какие у вас есть варианты (со всеми их плюсами и минусами). Это так просто.

Введение

По мере того, как службы терминалов становятся массовым явлением (благодаря Microsoft за то, что они сделали их частью ОС Windows Server), почти каждая компания, большая или малая, знает, что такое службы терминалов, и они, вероятно, немного поиграли с ними. После того, как они запустили свой первый сервер, первый вопрос, который приходит им в голову: «Если наш сервер TS выйдет из строя, что произойдет? Как мы можем предотвратить это?». Ответ, в некотором смысле, прост и прямолинеен: просто добавьте еще один сервер с теми же приложениями, и вы получите избыточность.

Но ответ не так прост. Если у вас теперь есть несколько серверов, как вы сообщаете своим пользователям, к какому серверу им следует подключаться? В идеале он должен быть полностью прозрачным. Вот когда на сцену выходит балансировка нагрузки.

Так что же это за балансировка нагрузки?

Балансировка нагрузки означает прозрачное для пользователей распределение входящих подключений к серверу терминалов на два или более серверов терминалов. Это может быть реализовано с помощью аппаратного, программного обеспечения или их комбинации.

Хорошо, я понял идею. Балансировка нагрузки будет выполняться чем-то, программным или аппаратным. Хороший. Но как это будет работать для моих пользователей? Идеальное решение очень простое с точки зрения пользователя: ваши пользователи запустят клиент Microsoft RDP, введут IP-адрес «балансировщика нагрузки» (или его полное доменное имя — FQDN) и после нажатия Enter увидят Экран входа в службы терминалов. Балансировщик нагрузки подключит их к любому из ваших доступных серверов. Но как он решает, какой TS является лучшим? Ну некоторые варианты не пойдут на лучший ТС. Вас просто отправят к ТС. ?

Вот почему вы должны понимать, как каждая опция выбирает следующий TS, чтобы принять новый запрос сеанса. Некоторые умны; некоторые нет. Давайте рассмотрим варианты!

Ваши варианты

Как сказано выше, мы должны разделить их на две категории: программное и аппаратное обеспечение (и, конечно, их комбинацию). Под программным балансировщиком нагрузки я подразумеваю приложение, которое вы устанавливаете на аппаратное обеспечение ПК (серверного класса или нет) под управлением какой-либо известной ОС; Под аппаратным балансировщиком нагрузки я подразумеваю внешнее, часто проприетарное, аппаратное обеспечение (например, устройство), которое будет находиться в вашей сети.

Программного обеспечения

Для балансировки нагрузки программного обеспечения доступно множество вариантов. Как вы, возможно, знаете, некоторые из них могут представлять то, что мы называем SPOF (единая точка отказа), или вообще могут быть несовместимы со всеми платформами! Давайте кратко рассмотрим каждый вариант и их плюсы и минусы.

Циклический перебор DNS

Да, самая старая вещь, доступная с незапамятных времен. Если вы не знакомы с циклическим перебором DNS, это просто метод, при котором определенное полное доменное имя (FQDN), такое как mypc.mycompany.com, последовательно разрешается в несколько IP-адресов. DNS-сервер будет возвращать (по схеме ротации) другой IP-адрес (вам придется настроить это на своем DNS-сервере) каждый раз, когда машина пытается разрешить это конкретное полное доменное имя. Например, вы настраиваете mypc.mycompany.com для разрешения 192.168.1.1 и 192.168.1.2. Когда первая машина пытается разрешить этот адрес, DNS-сервер возвращает 192.168.1.1; в следующий раз, когда машина попытается разрешить его, она вернет следующий известный IP-адрес, в данном случае 192.168.1.2.

PRO

  • Дешевый
  • Простота настройки. (Это может быть не так, если вы не отвечаете за свои DNS-серверы; некоторые сетевые администраторы, которые могут не иметь никакого отношения к вашей реализации служб терминалов, могут затруднить вам внедрение/изменение чего-либо на их конце!).
  • Работает с любым клиентом. Это просто означает, что если ваши клиенты будут использовать терминалы на базе Windows (CE, XPe и т. д.), терминалы на базе Linux или любое другое устройство с любой ОС, они смогут подключиться к вашим TS.

Минусы

  • Не на основе ресурсов. Еще один термин, который я должен определить. Балансировка нагрузки на основе ресурсов означает, что решение, используемое для балансировки нагрузки, знает о состоянии ваших серверов; он знает, как работают ваши серверы (процессор, память, количество пользователей и т. д.) в любой момент времени. Это важно, потому что вы не хотите, чтобы пользователь был отправлен на сервер, на котором есть 100 пользователей и который почти мертв, вместо того, чтобы отправить его на другой сервер с 5 пользователями! Возобновление: на основе ресурсов означает знание того, как серверы работают в любое время, и на основе этих знаний решение, какой сервер лучше всего подходит для обработки следующего пользователя, пытающегося подключиться.
  • Нет повторного подключения. Это снова мы. ? Повторное подключение просто для понимания. Если я пользователь, работающий на сервере server1, и по какой-то причине мое сетевое соединение обрывается (например, сбой подключения к Интернету), после того, как моя проблема с сетью будет решена, и я попытаюсь повторно подключиться к своим терминальным серверам, в идеале я хотел бы снова подключиться к сервер, в который я вошел, поэтому я могу возобновить свою работу точно с того места, где я был в момент отключения. Таким образом, решение для балансировки нагрузки должно знать обо всех сеансах (именах пользователей, серверах, на которых они находятся, и т. д.), чтобы иметь возможность повторно подключить вас к тому месту, где вы были. Вероятно, это одна из наиболее востребованных функций при балансировке нагрузки серверов терминалов.
  • Если сервер не работает, он все равно будет отправлять пользователей на этот сервер.

Балансировка сетевой нагрузки Майкрософт (NLB)

Когда Microsoft выпустила Windows 2000 Server, они представили нечто под названием Network Load Balancing, доступное только в версии Enterprise. В NLB вы в основном создаете ферму (или кластер) машин и назначаете ей виртуальный IP-адрес. После этого все машины, принадлежащие этой ферме, будут последовательно отвечать на запросы к любому указанному вами порту (например, RDP, TCP 3389) на этом виртуальном IP-адресе. Основное отличие от циклического перебора DNS заключается в том, что NLB фактически знает, не работает ли сервер, и поэтому НЕ отправляет пользователей на мертвый сервер (как это делает циклический перебор DNS). Теперь в Windows 2003 NLB является частью серверной версии, поэтому вам не нужно платить дополнительную сумму, если все, что вам нужно, — это NLB.

PRO

  • Встроен в Windows 2003 Server.
  • Умнее, чем Round Robin (поскольку он знает, не работает сервер или нет).
  • Работает с любым клиентом.
  • Бесплатно (если вы используете Windows 2003; дополнительные $$$, если вы используете Windows 2000 Server).

Минусы

  • Не на основе ресурсов.
  • Нет повторного подключения.
  • Непредсказуемое поведение. То, что я имею в виду, просто основано на обширном исследовании, которое я провел со МНОГИМИ, я имею в виду МНОГИМИ, клиентами и компаниями, использующими NLB. Учитывая то, как работает NLB (подробно об этом можно прочитать здесь), некоторым маршрутизаторам/коммутаторам это не очень нравится, и это может привести к непредсказуемому поведению. Я знаю несколько компаний, у которых в одном месте работает отлично, а в другом перестает работать через пару дней! Итак, суть в том, что это может отлично работать для вас, но может не работать в зависимости от дня месяца, фазы луны и так далее…
  • Ограничено до 32 серверов.
  • Все серверы должны находиться в одной подсети.
  • Некоторые люди считают, что это PITA для реализации. Опять же, как я упоминал выше, для некоторых людей это не только легко реализовать, но и работает с первой попытки. Но для многих других это не работает, конфигурация кажется странной и так далее. Попробуйте сами и дайте мне знать, что вы думаете. ?
  • Если вы все еще используете Windows 2000…

Это все для части 1 в серии. Во второй части я расскажу об остальных доступных опциях программного обеспечения, обсужу доступные аппаратные опции и в заключение дам несколько полезных советов. Тогда увидимся!