Компьютерщик на все руки: Масштабирование при помощи шаблонов
Хорошо разработанный шаблон можно использовать снова и снова. Вы можете повторно развертывать целые среды всего несколькими щелчками мышью. Исключительно хорошо разработанные шаблоны также могут масштабировать службы быстрым развертыванием новых серверов. Шаблоны служб System Center 2012 Virtual Machine Manager (VMM) обеспечивают вам восходящий подход к построению и предоставлению ИТ-служб.
Несмотря на свой чудовищный потенциал автоматизации, шаблоны служб VMM 2012 страдают из-за неверного к себе отношения. Просмотрите текущий веб-контент, и у вас сложится впечатление, что эти шаблоны предназначены исключительно для веб-служб и веб-разработчиков. Но это не так.
Если захотите, вы можете превратить любую ИТ-службу, включая серверы, приложения и конфигурации, в шаблон службы VMM 2012. Одной из таких ИТ-служб, которую вы можете превратить в шаблон, является служба удаленных рабочих столов (Remote Desktop Services, RDS).
Пока лишь обычные пользователи службы Windows Server входят в систему непосредственно, кажется, что вы всегда должны перестраивать свои RDS-сервер. Поскольку вам приходится делать это регулярно, функциональность автоматического масштабирования VMM 2012 могла бы идеально подойти для быстрого развертывания дополнительных серверов Remote Desktop Session Host (RDSH). Нам всем нужен лучший способ развертывания RDS-серверов. Благодаря VMM 2012 мы получили инструменты для решения этой задачи.
Три уровня, которые вы уже виделиКопните интерфейс VMM 2012, и вы обнаружите безобидную кнопку Scale Out. На первый взгляд, нажатие на эту кнопку всего лишь добавляет новый сервер в машинный уровень развертывания службы. Вы можете щелкать ей все, что захотите. Если нажимать ее без соответствующей подготовки, далеко не уедешь.
Гораздо проще объяснить последнее утверждение на примере. На рис. 1 показан шаблон службы для прототипа трехуровневой веб-службы, который вы, наверняка, уже видели.
Рис. 1. Прототип шаблона трехуровневой службы VMM 2012
Эта веб-служба содержит по одному машинному уровню для веб-сервера, сервера приложений и сервера баз данных. Она также включает в себя шаблон виртуального IP (virtual IP, VIP) Microsoft Network Load Balancing (NLB) для балансировки нагрузки входящего веб-трафика для серверов на веб-уровне шаблона службы.
Не каждая служба или уровень машины является хорошим кандидатом для масштабирования. В этом примере наиболее вероятным уровнем для масштабирования будет Web Tier. Для масштабирования IIS 7 или IIS 8 веб-сервера требуется чуть больше, чем создание нового сервера: установка необходимых служб ролей IIS, затем указание IIS сетевого расположения его веб-страниц.
Сравните эту простоту с первоначальными усилиями, необходимыми для масштабирования других уровней. Из-за того, что они содержат приложения и данные, другим уровням, как правило, требуется намного более сложная настройка, если предполагается их автоматически масштабировать. Урок с этим примером требует вновь повторить: не каждая служба или уровень является хорошим кандидатом для масштабирования.
RDSH-серверы: никогда не бывает достаточноТот же урок справедлив для RDS. Основное RDS-развертывание устанавливает на один сервер три службы ролей: Remote Desktop Web Access (RDWA), Remote Desktop Connection Broker (RDCB) и RDSH. Из них наиболее вероятным кандидатом на масштабирование является RDSH.
Чтобы упростить реализацию, Microsoft ввела заметные коррективы в RDS в Windows Server 2012. Одной их таких корректив является предположение, что все RDSH-серверы в развертывании и коллекции настроены одинаково. Предполагается, что каждый RDSH-сервер в Windows Server 2012 RDS-развертывании и коллекции содержит те же приложения и конфигурации, что и последующий.
Хотя поначалу это требование может показаться ограничивающим, оно значительно упрощает автоматизацию развертывания. Чем больше одновременно работающих пользователей RDS, тем больше сеансов RDSH. В какой-то момент вам понадобятся дополнительные RDSH-серверы, чтобы поддержать возросшую пользовательскую нагрузку. Поскольку каждый RDSH-сервер должен быть похож на предыдущий, новый сервер может начать свою жизнь с общего шаблона виртуальной машины (ВМ).
Это хорошая новость. Плохая новость в том, что вы не можете просто нажать кнопку Scale Out в VMM 2012 (справа на рис. 2) и ожидать, что новый сервер автоматически начнет обслуживать сеансы. Вам придется добавить вновь предоставленные RDSH-серверы в существующее RDS-развертывание и коллекцию. В прежних версиях Windows этот шаг требовал ручного вмешательства. В Windows Server 2012 вы можете автоматизировать его с помощью нескольких командлетов Windows PowerShell.
Рис. 2. Кнопка Scale Out в VMM 2012
Шаг 1. Создайте шаблон ВМНиже представлен пошаговый процесс, который вы можете реализовать, чтобы построить свой собственный повторно используемый — и масштабируемый — шаблон RDS-службы в VMM 2012. Первый шаг, пожалуй, самый простой, потому что вы, наверняка, делали его раньше. Создайте шаблон ВМ в VMM 2012. Это одно из фундаментальных действий в VMM, описанное в статье TechNet Library «Creating Virtual Machine Templates in VMM».
При создании шаблона ВМ, очевидно, требуется немного технического искусства. Вы будете использовать его для быстрого развертывания RDSH-серверов в последующих шагах. Это означает, что ваш шаблон должен быть готов к автоматическому развертыванию. Вы можете установить приложения непосредственно в шаблон или предоставлять их по требованию с помощью автоматизированного решения, такого как System Center Configuration Manager или App-V.
Этот шаблон ВМ становится отправной точкой для всех ВМ, которые вы будете предоставлять своей RDS-службе. Не забудьте настроить аппаратный профиль шаблона и гостевой профиль операционной системы, чтобы они соответствовали любой конфигурации любого развертываемого позже RDSH-сервера.
Шаг 2. Создайте односерверный шаблон RDS-службыЭтот шаблон ВМ является базисом для шаблона службы VMM. Этот шаблон службы будет содержать два уровня: начальный уровень хоста (Initial Host Tier) и второй, масштабируемый уровень (Scale-Out Tier). Это разделение очень важно, поскольку шаблону службы необходимо лишь масштабировать службу RDSH-роли. Остальные службы ролей (и первый экземпляр RDSH) остаются расположенными в Initial Server Tier.
Щелкните правой кнопкой мыши Service Templates в окне VMM 2012 Library, чтобы создать новый шаблон службы. Задайте этому шаблону имя и выберите пустой образец. Будет создано пустое рабочее пространство для создания шаблона RDS-службы.
В Service Template Designer нажмите кнопку Add Machine Tier. Запустится мастер Create Machine Tier Template Wizard (рис. 3). Выберите вариант «Customize a copy of an existing VM template» (Настроить копию существующего шаблона ВМ) и нажмите кнопку Browse, чтобы указать шаблон ВМ, созданный на шаге 1.
Рис. 3. Мастер для создания шаблона на уровне машины
Назовите этот первый уровень Initial Host Tier на странице Additional Properties мастера. Оставьте другие параметры страницы без изменений. Выберите аппаратный профиль на странице Configure Hardware мастера, а затем гостевой профиль операционной системы на странице Configure Operating System.
На минуту задержитесь на странице Configure Operating System и посмотрите значение Identity Information. Это значение определяет имя компьютера развертываемой ВМ. По умолчанию используется шаблон подстановки (“*”). Он указывает VMM 2012 создавать уникальное случайное имя для развертываемой ВМ. Однако позже командлетам Windows PowerShell потребуется знать имя компьютера. Поэтому мы должны задать его в конфигурации развертывания, настроив в виде переменной шаблона службы.
VMM 2012 решает эту задачу, окружая имя переменной символом “@” (рис. 4). Здесь имя компьютера задается в переменной @RDSFirstServerHostname@. Такое использование переменных в шаблонах служб VMM является ключевым элементом поддержки высокой автоматизации. Подобные переменные получают свои значения как службы и настраиваются во время развертывания.
Рис. 4. Назначение имени компьютера в виде переменной с использованием символа “@”
Вы также хотите, чтобы выбрать услуги RDS роли должны быть установлены на страницу «Операционные системы настройки». Установите только следующие флажки для Roles: Remote Desktop Services, Remote Desktop Connection Broker, Remote Desktop Session Host и Remote Desktop Web Access (рис. 5). Таким образом вы указываете VMM установить эти роли и необходимые для них компоненты в процессе подготовки ВМ.
Рис. 5. Роли, которые вам понадобятся
Здесь нужно еще раз сделать паузу. Вспомните, что RDS — особый случай в Windows Server 2012. Установка его служб ролей мало значит, пока они не собраны в развертывание и коллекцию. Обычно это выполняется в графическом пользовательском интерфейсе Server Manager, но может быть выполнено набором командлетов Windows PowerShell.
Вы создадите развертывание и коллекцию RDS на странице Configure Applications мастера, используя ряд сценариев Pre-Install. Microsoft немного таинственно называет их Generic Command Executions (GCEs). Это могут быть сценарии VBScript, Windows PowerShell или пакетные сценарии, выполняемые в ВМ, или отдельные команды, выполняемые в Deployment Order.
Вам понадобится пять отдельных сценариев Pre-Install. Первые два заставляют ВМ перезагрузиться … дважды. Да, вам потребуется перезагрузить компьютер дважды, чтобы полностью установить службы ролей RDS перед созданием развертывания и коллекции.
Третий сценарий Pre-Install устанавливает для политики выполнения Windows PowerShell режим обхода. Этот немного хакерский прием обеспечивает безмолвное выполнение четвертой и пятой команд. Четвертая команда (рис. 6) запускает Windows PowerShell с ключом -command для выполнения особо настроенного командлета New-RDSessionDeployment. Пятая и последняя команда снова запускает Windows PowerShell для выполнения команды New-RDSessionCollection.
Рис. 6. Настройка Windows PowerShell для RDS
В следующем списке приведены характеристики Pre-Install GCE, которые вам понадобятся для самостоятельного построения. Эти пять команд необходимо запускать в указанном порядке и со следующими настройками для успешного развертывания RDS:
- Pre-Install 1:
- Исполняемая программа: cmd.exe
- Параметры: /q /c shutdown /r /t 0
- Исполняемая программа: cmd.exe
- Параметры: /q /c shutdown /r /t 0
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command set-executionpolicy bypass -force
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command New-RDSessionDeployment -ConnectionBroker @ComputerName@ -WebAccessServer @ComputerName@ -SessionHost @ComputerName@ -verbose
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command New-RDSessionCollection -CollectionName @CollectionName@ -SessionHost @ComputerName@ -ConnectionBroker @ComputerName@ -verbose
Вы также можете включить несколько дополнительных настроек в Pre-Install GCE. Сначала настройте каждый сценарий Pre-Install с учетной записью VMM Run As с правами администратора домена. Вам это понадобится для командлета New-RDSessionDeployment. Увеличьте значение тайм-аута каждого сценария до 3600 секунд. Наконец, нажмите кнопку Advanced в первых двух сценариях и установите Restart Policy в «Always restart after the script has finished running» (Всегда перезагружать после завершения работы сценария). Это обеспечит выполнение перезагрузки без генерации ошибки.
Вы увидите, что в этих командлетах Windows PowerShell используется много переменных (тоже окруженных символом “@”). Эти переменные предоставляют командам необходимую информацию, например, имя компьютера (@ComputerName@) и имя коллекции (@CollectionName@). Вам предложат ввести значение @CollectionName@ в конфигурации развертывания. Значение @ComputerName@ является встроенной переменной, которая автоматически переводится в полное доменное имя (fully qualified domain name, FQDN) сервера.
Завершите работу мастера. Теперь вы построили шаблон односерверной RDS-службы, который можно использовать для тестирования развертывания. Для этого нажмите кнопку Configure Deployment в конструкторе и выполните инструкции мастера развертывания (рис. 7). Обратите внимание на значения CollectionName и RDSFirstServerName, которые требуется установить на вкладке Settings, прежде чем развернуть службу.
Рис. 7. Мастер развертывания для настройки развертываний
Шаг 3. Добавьте масштабирующий уровеньШаблон службы VMM 2012 предназначен для развертывания функционирующей службы одним нажатием кнопки. Для реализации этого трюка нужно заполнить шаблон службы всеми настройками, которые требуются для успешного и безмолвного выполнения развертывания. Вот почему тут придется приложить кое-какие усилия. Это особенно важно, если вы собираетесь позже добавить автоматизацию посредством System Center Operations Manager и System Center Orchestrator.
Шаблон службы VMM, который вы только что создали, поддерживает лишь конфигурацию с одним сервером, но вы хотите масштабировать решение для RDSH. Для этого вам потребуется второй машинный уровень. Начните с удаления всех развернутых служб, связанных с вашим шаблоном службы RDS. Вы также могли бы сделать копию того первоначального шаблона службы.
Выполните щелчок правой кнопкой мыши, чтобы открыть шаблон в конструкторе. Затем нажмите кнопку Add Machine Tier. В первом экране мастера Create Machine Tier Template Wizard выберите настройку копии существующего шаблона ВМ и укажите шаблон ВМ, созданный на Шаге 1.
На этот раз страница Additional Properties мастера требует чуть больше внимания (рис. 8). Для этого второго уровня потребуется задать параметрам «Preferred deployment order» и «Preferred servicing order» значение 2. Это гарантирует, что подготовка виртуальных машин на этом уровне будет выполняться после подготовки на первом уровне. Кроме того, этот уровень должен быть настроен на масштабирование с числом экземпляров по умолчанию равным единице и максимальным количеством экземпляров равным пяти (или сколько вам потребуется).
Рис. 8. Можно задать значения дополнительных свойств для масштабирующего уровня
Такая настройка уровня указывает VMM настроить одну ВМ во время начального развертывания и позволяет добавить до пяти ВМ в будущем. Доступность, обеспеченная для этого уровня, поможет при последующих обновлениях ВМ на этом уровне.
На страницах Configure Hardware и Configure Operating System мастера вы будете использовать настройки аналогичные изначальному уровню за некоторым исключением. Первое исключение — установка значения идентификационной информации в RDSH## (рис. 9). Масштабирование требует, чтобы вы использовали при именовании шаблоны подстановки, которые задаются с помощью оператора “#”. Здесь настройка означает, что каждой новой ВМ на этом уровне присваивается следующий доступный номер от 1 до 99.
Рис. 9. Установка идентификационной информации на масштабирующем уровне
Второе исключение — на этом уровне вы выбираете только службы ролей RDS и RDSH. Как говорилось ранее, этот уровень поддерживает только масштабирование для RDSH. Другие службы ролей RDS применять не нужно.
Сценарии GCE, которые вы настроите на странице Configure Applications этого уровня, тоже немного отличаются. В отличие от первого уровня, где вы создавали новые развертывание и коллекцию RDS, на этот раз вы просто добавляете новый сервер. Для этого нужны немного иные командлеты. Выполнить по порядку следующие командлеты с их переменными, чтобы успешно добавить хост:
- Pre-Install 1:
- Исполняемая программа: cmd.exe
- Параметры: /q /c shutdown /r /t 0
- Исполняемая программа: cmd.exe
- Параметры: /q /c shutdown /r /t 0
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command set-executionpolicy bypass -force
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command Add-RDServer -Server @ComputerName@ -ConnectionBroker @RDSFirstServerHostname@.company.pri -Role RDS-RD-SERVER -verbose
- Исполняемая программа: %WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe
- Параметры: -command Add-RDSessionHost -CollectionName @CollectionName@ -SessionHost @ComputerName@ -ConnectionBroker @RDSFirstServerHostname@.company.pri -verbose
Как и раньше, увеличьте тайм-аут сценария в каждой команде до 3600 секунд и скорректируйте политику перезагрузки в первых двух. Пройдите по остальным страницам мастера, чтобы завершить настройку уровня масштабирования.
Шаг 4. Разверните и масштабируйте свой шаблонВаш шаблон службы должен теперь выглядеть так, как показано на рис. 10. Вы видите Initial Host Tier вместе с новым Scale Out Tier. Нажмите кнопку Configure Deployment в конструкторе, чтобы приступить к развертыванию этой службы в своем кластере или группе хостов Hyper-V.
Рис. 10. Ваш шаблон мультисерверной службы RDS с возможностью масштабирования
Развертывание уровня, состоящего из двух серверов, может занять какое-то время, до 30 минут на некоторых компьютерах. По окончании развертывания протестируйте свою работу, открыв окно VMM 2012 VMs and Services, чтобы проверить службу, которую вы только что создали (рис. 11). Обратите внимание на кнопку Scale Out в панели инструментов. Теперь вы можете нажать эту кнопку, чтобы развернуть новый RDSH-хост в свое развертывание и коллекцию RDS.
Рис. 11. Вот как должна выглядеть развернутая вами RDS-служба
Далее в программе: масштабируем с помощью OrchestratorЗдесь много предварительной работы, но она окупается безмолвным развертыванием и возможностью быстро перестраивать и масштабировать службу, когда захотите. Теперь вы можете удалять и воссоздавать эту службу — обычная деятельность во многих ИТ-мастерских — всего парой щелчков мышью в интерфейсе VMM. Вы также можете легко обновлять свои службы. Просто внести изменения в шаблон ВМ, а затем повторно разверните службу. Еще никогда не было так легко управлять RDS.
В следующий раз я покажу вам, как свернуть ту же самую службу. У вас будет возможность интегрировать этот процесс с Operations Manager и Orchestrator, чтобы еще больше автоматизировать свою среду RDS.