Сценарий Windows PowerShell для настройки регулирования на нескольких компьютерах
В данном примере демонстрируются действия, которые необходимо выполнить, чтобы использовать сценарий Windows PowerShell для настройки параметров регулирования службы по умолчанию для нескольких компьютеров, являющихся частью фермы. Данный пример можно легко настроить на изменение любого другого параметра, доступного AppFabric.
При использовании фермы из нескольких серверов может оказаться неудобным подключаться к каждому компьютеру по отдельности и изменять один параметр. Эта проблема становится серьезной, когда в ферме присутствует большое число компьютеров или необходимо очень часто вносить описанные изменения. С введением в Windows Server AppFabric компонентов сохраняемости и наблюдения появился простой способ извлечения сведений об активных компьютерах в ферме непосредственно из базы данных и использования их для выполнения команд Windows PowerShell на этих компьютерах.
В данном примере показано, как извлечь сведения о компьютерах в составе фермы и как запускать командлеты Windows PowerShell на активных компьютерах в ферме.
Этот пример будет работать с любым приложением. Рекомендуется использовать пример типичного приложения AppFabric, который был создан для использования с примерами AppFabric. Это приложение находится в папке <примеры>\SampleApplication\OrderApplication, где <примеры> — это путь установки примеров AppFabric.
Примечание
Примеры предназначены только для образовательных целей. Они не предназначены для использования в рабочей среде и не тестировались в ней. Корпорация Майкрософт не предоставляет техническую поддержку для этих примеров.
Необходимые условия
Данный пример можно запускать на отдельном компьютере, а также на нескольких компьютерах, которые удовлетворяют следующим предварительным требованиям. Если планируется запустить пример на отдельном компьютере, пропустите пункты, относящиеся к ситуации с несколькими компьютерами.
Необходимо установить AppFabric на всех компьютерах, которые будут участвовать в запуске примера, кроме того, все компьютеры должны использовать общую базу данных для сохраняемости и наблюдения.
Чтобы запустить сценарии (как указано), необходимо обладать привилегиями администратора на компьютере, где запускается пример. В зависимости от внесенных изменений могут потребоваться права администратора и на всех остальных компьютерах.
Все участвующие компьютеры должны быть объединены в один домен, и на всех них должна быть установлена служба удаленного управления Windows (WinRM) версии 2.0. WinRM 2.0 CTP3 для платформ раннего уровня можно загрузить на странице Загрузки WinRM 2.0 (https://go.microsoft.com/fwlink/?LinkId=194424). Этот пример можно изменить для запуска в недоменной среде. См. ответ на вопрос «МОЖНО ЛИ ПРОВЕРИТЬ УДАЛЕННУЮ РАБОТУ НА ОДНОМ КОМПЬЮТЕРЕ (А НЕ В ДОМЕНЕ)?» в вопросах и ответах об удаленной работе с Windows PowerShell на странице about_Remote_FAQ (https://go.microsoft.com/fwlink/?LinkId=194425).
Необходимо настроить Windows PowerShell на удаленное выполнение. Для этого можно выполнить команду Enable-PSRemoting -force после выполнения двух предыдущих условий. Для получения дополнительных сведений об удаленной работе с Windows PowerShell введите команду help about_remote.
Все компьютеры для примера должны быть частью фермы (на них должны быть установлены одинаковые приложения и службы). Кроме того, они должны были хотя бы один раз сохранить данные наблюдения или отправить их в виде отчета в общую базу данных.
На узле, где запускается пример, должен быть установлен клиентский доступ SQL и оснастка SQL Server для Windows PowerShell.
Файлы примеров
Сценарий Get-ASActiveMachine.ps1 (в папке Code)
Файл сведений
Установка и запуск этого примера
Запустите узел Windows PowerShell (как консоль в Windows PowerShell 2.0) с правами администратора. При запуске узла обязательно выберите параметр «Запуск от имени администратора», если только не используется встроенная учетная запись «Администратор».
Примечание
Чтобы запустить этот пример, необходимо разрешить на компьютере выполнение неподписанных сценариев. Как это сделать, описано далее.
Выполните на узле следующую команду: Set-ExecutionPolicy Unrestricted. Это позволяет запустить неподписанный пример сценария. Обязательно отмените это значение после завершения работы с примером. Если оценка проводится путем запуска одинаковых сценариев в рабочей среде, рекомендуется подписать данный сценарий. Дополнительные сведения о подписывании сценариев см. на странице about_Signing (https://go.microsoft.com/fwlink/?LinkID=194426).
Удаление примера
- Чтобы удалить данный пример, верните политику выполнения на предыдущий уровень или уровень по умолчанию Windows PowerShell с помощью следующей команды: Set-ExecutionPolicy Default.
Демонстрации
Этот пример поделен на две части. В первой части поясняется, как запускать командлеты (в частности, командлеты AppFabric) на наборе компьютеров. Вторая часть представляет собой командлет сценария, который используется для получения списка активных компьютеров в ферме. После этого пример демонстрирует, как использовать обе части.
Удаленная настройка
Если выполнены все описанные выше условия, то запуск командлетов на компьютерах выполняется очень просто. Нужный командлет называется Invoke-Command; он принимает перечень всех компьютеров, на которых его необходимо выполнить, с указанием сценария, который необходимо выполнить на указанных компьютерах.
Важно!
При запуске данного примера значение максимального количества одновременных вызовов по умолчанию будет изменено для всех служб на компьютерах, где запускается пример. В рабочих средах это может привести к нежелательным последствиям, так как серверы становятся уязвимы к атакам типа «отказ в обслуживании» или могут отказывать в доступе при заведомо надежных вызовах. Не следует выполнять описанные ниже действия в рабочей среде без предварительного резервного копирования систем и настройки необходимых значений для среды. Если вы не уверены, какое значение следует задать для MaxConcurrentCalls, обратитесь к разработчику архитектуры программного обеспечения или к документации WCF, касающейся свойства MaxConcurrentCalls (https://go.microsoft.com/fwlink/?LinkId=194427).
Предположим, например, что необходимо выполнить следующую команду AppFabric:
Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200
Чтобы выполнить эту команду на двух компьютерах с именами «Dublin001» и «Dublin002», необходимо ввести следующую команду:
Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Обратите внимание на то, что первой в определении блока сценария (текст между фигурными скобками) стоит команда Import-Module ApplicationServer. Этим обеспечивается доступность для удаленной среды, созданной с использованием Invoke-Command, всех нужных командлетов AppFabric.
Запрос базы данных для активных компьютеров
Чтобы выполнить предыдущую команду на всех компьютерах в ферме, необходимо вести список всех компьютеров и использовать его для задания аргументов в параметре ComputerName в предыдущей команде. Можно также использовать представленный в примере командлет сценария.
Этот командлет сценария называется Get-ASActiveMachine. Он использует оснастку SQL Server для Windows PowerShell для того, чтобы извлечь список активных компьютеров из данных наблюдения AppFabric; затем он использует встроенные командлеты AppFabric для получения списка активных компьютеров из данных сохраняемости. Потом он объединяет два результирующих набора и возвращает конечный результат вызывающему объекту.
Чтобы установить этот командлет, запустите следующую команду в любой среде Windows PowerShell (например, в консоли Windows PowerShell 2.0):
Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1
Где <samples> — это путь установки примеров AppFabric.
После этого можно запустить следующий командлет, который возвращает список активных компьютеров в ферме:
Get-ASActiveMachine
Примечание
Ниже приведен список всех параметров, которые принимает данный командлет, и описывается их использование для случая, если SQL Server не установлен на локальном компьютере в качестве экземпляра по умолчанию и когда название базы данных наблюдения AppFabric отличается от «ApplicationServerMonitoring».
Возвращенный список выглядит следующим образом:
Dublin001
Dublin002
Чтобы объединить многокомпьютерную конфигурацию с данным командлетом, выполните следующую команду:
Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Параметры Get-ASActiveMachine
-Server |
Обязательный параметр. При использовании экспресс-выпуска SQL Server установите для этого параметра значение «<имя_сервера>\SQLExpress». При использовании SQL Server Enterprise установите для этого параметра значение «<имя_сервера>». |
-Database |
Обязательный параметр. Строка, указывающая базу данных наблюдения. |
-SiteName |
Необязательный параметр. Параметр фильтра строк, при использовании которого командлет возвращает только активные компьютеры для заданного сайта. |
-VirtualPath |
Необязательный параметр. Параметр фильтра строк, при использовании которого командлет возвращает только активные компьютеры для виртуального пути. Данную строку можно использовать совместно с параметром -SiteName, чтобы указать, что командлет должен возвратить только компьютеры, которые используются для балансировки нагрузки определенной службы. |
-ActiveSince |
Необязательный параметр. Объект DateTime, который можно использовать для фильтрации только тех компьютеров, которые сохранили данные наблюдения или отправили их в виде отчета за определенный период времени. Например, чтобы возвратить данные за последние 24 часа, введите: Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24). |
-ApplicationObject |
Необязательный параметр. Объект Microsoft.ApplicationServer.Management.Data.ApplicationInfo, который можно использовать для фильтрации только тех компьютеров, которые сохранили данные наблюдения для определенного приложения или отправили их в виде отчета. Лучше всего использовать его при конвейеризации, например: Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine. |
Другие ресурсы
Дополнительные сведения об удаленном выполнении командлетов Windows PowerShell см. в статье about_Remote (https://go.microsoft.com/fwlink/?LinkId=194428); также можно ввести команду help about_remote в среде Windows PowerShell.
2011-12-05