Script do Windows PowerShell para configurar limitação em vários computadores
Esse exemplo demonstra as etapas necessárias para usar um script do Windows PowerShell para configurar os padrões da limitação de serviços para vários computadores que fazem parte de um farm. Esse exemplo pode ser facilmente modificado para alterar qualquer outra configuração acessível pelo AppFabric.
Ao manter um farm de servidores de vários computadores, pode ser entediante conectar cada computador individualmente e alterar um único parâmetro. Esse problema se torna exagerado quando há muitos computadores no farm, ou quando essas mudanças ocorrem com muita frequência. Com a introdução dos recursos de persistência e monitoramento do Windows Server AppFabric, não há uma maneira fácil de extrair diretamente do banco de dados as informações sobre os computadores ativos no farm e usar essas informações para executar comandos do Windows PowerShell nesses computadores.
Esse exemplo mostra como extrair as informações de farm dos computadores em um farm e como executar cmdlets do Windows PowerShell em todos os computadores ativos no farm.
Esse exemplo funcionará com qualquer aplicativo. Recomendamos o Aplicativo comum de exemplo do AppFabric, que foi criado para ser usado com exemplos do AppFabric. Para encontrar esse aplicativo, navegue até a pasta <exemplos>\SampleApplication\OrderApplication, onde <exemplos> é o caminho no qual você instalou os exemplos do AppFabric.
Observação
Os exemplos são fornecidos apenas para fins educacionais. Eles não devem ser usados em um ambiente de produção e não foram testados em um ambiente de produção. A Microsoft não oferece suporte técnico para esses exemplos.
Pré-requisitos
Esse exemplo pode ser executado em um único computador, bem como em vários computadores que atendam aos seguintes pré-requisitos. Se você pretende executar o exemplo em um único computador, ignore as referências a vários computadores.
Você deve instalar o AppFabric em todos os computadores que participarão do exemplo, e todos os computadores devem usar um banco de dados compartilhado para persistência e/ou monitoramento.
Para executar os scripts (conforme previsto), você precisará de privilégios administrativos no computador em que estiver executando o exemplo. Dependendo das alterações que pretende fazer, ode ser necessário ter privilégios administrativos em todos os outros computadores.
Todos os computadores participantes devem estar associados a um único domínio e o Gerenciamento Remoto do Windows (WinRM) 2.0 deve estar instalado em todos eles. Você pode baixar o WinRM 2.0 CTP3 para plataforma de nível inferior em Downloads de WinRM 2.0 (a página pode estar em inglês) (https://go.microsoft.com/fwlink/?LinkId=194424). Esse exemplo pode ser modificado para ser executado em um ambiente sem domínio. Veja a resposta à pergunta “POSSO TESTAR A COMUNICAÇÃO REMOTA EM UM ÚNICO COMPUTADOR (E NÃO EM UM DOMÍNIO)?” nas Perguntas Frequentes sobre a comunicação remota do Windows PowerShell em about_Remote_FAQ (a página pode estar em inglês) (https://go.microsoft.com/fwlink/?LinkId=194425).
O Windows PowerShell deve estar habilitado para execução remota. Isso pode ser feito executando o Enable-PSRemoting -force após cumprir os dois pré-requisitos anteriores. Para ler mais sobre a comunicação remota no Windows PowerShell, digite help about_remote.
Todos os computadores do exemplo devem fazer parte do farm (ou seja, os mesmos aplicativos e os mesmos serviços devem ser instalados em todos eles). Eles também devem ter dados de monitoramento persistidos ou comunicados pelo menos uma vez no banco de dados comum.
A conectividade com o cliente SQL e o snap-in SQL Server do Windows PowerShell devem estar instalados no host que executará esse exemplo.
Arquivos de exemplo
Script Get-ASActiveMachine.ps1 (na pasta Code)
Um documento leiame
Configurando e executando esse exemplo
Execute um host do Windows PowerShell (como o console que acompanha o Windows PowerShell 2.0) como um administrador. Selecione "Executar como Administrador" quando estiver executando o host, se não estiver operando com a conta interna de "Administrador".
Observação
Para executar esse exemplo, você precisa permitir que scripts não assinados sejam executados no computador. Estas etapas demonstram como fazer isso.
No host, execute este comando: Set-ExecutionPolicy Unrestricted. Isso permite que você execute o script de exemplo não assinado. Não deixe de reverter essa configuração depois que tiver concluído o exemplo. Se estiver avaliando a execução de scripts semelhantes no seu ambiente de produção, recomendamos que você assine o script. Você pode ler mais sobre scripts de assinatura em about_Signing (a página pode estar em inglês) (https://go.microsoft.com/fwlink/?LinkID=194426).
Removendo esse exemplo
- Para remover esse exemplo, reverta sua diretiva de execução para o nível anterior ou ao padrão do Windows PowerShell com o seguinte comando: Set-ExecutionPolicy Default.
Demonstra
Esse exemplo se divide em duas partes. A primeira parte explica como executar qualquer cmdlet (e especificamente cmdlets do AppFabric) em um conjunto de computadores. A segunda parte é um cmdlet de script, usado para obter a lista de computadores ativos em um farm. Depois, um exemplo mostra como usar ambas as partes.
Configuração remota
Se todos os pré-requisitos descritos acima forem cumpridos, será fácil executar os cmdlets em computadores remotos. O cmdlet a ser usado se chama Invoke-Command e leva os parâmetros para todos os computadores em que será executado e o script que deverá ser executado nesses computadores.
Importante
Executando as etapas nesse exemplo, você alterará o valor padrão "máx chamadas simultâneas" de todos os serviços nos computadores onde irá executá-lo. Isso pode afetar negativamente os ambientes de produção, seja expondo seus servidores a ataques de negação de serviço (DoS) ou negando o acesso a chamadores legítimos. Você não deve executar as seguintes etapas em ambientes de produção sem antes fazer o backup dos seus sistemas e selecionar um valor apropriado para seu ambiente. Se você souber ao certo qual deve ser o valor de MaxConcurrentCalls, entre em contato com o arquiteto de software ou consulte a documentação do produto WCF em Propriedade MaxConcurrentCalls (a página deve estar em inglês) (https://go.microsoft.com/fwlink/?LinkId=194427).
Por exemplo, suponha que você deseje executar o seguinte comando do AppFabric:
Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200
Para executar o comando em um conjunto de dois computadores chamados “Dublin001” e “Dublin002”, digite um comando como este:
Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Perceba que, na definição do bloco de script (o texto entre chaves), o primeiro comando é Import-Module ApplicationServer. Isso garante que o ambiente remoto criado por Invoke-Command tenha todos os cmdlets AppFabric necessários.
Consulta de computadores ativos no banco de dados
Para executar o comando anterior em todos os computadores de um farm, você deve manter uma lista de todos os computadores e usá-la para fornecer os argumentos ao parâmetro ComputerName no exemplo anterior. Também é possível usar um cmdlet de script fornecido com esse exemplo.
Esse cmdlet de script é chamado Get-ASActiveMachine. Ele usa um snap-in SQL Server do Windows PowerShell para extrair os computadores ativos dos dados de monitoramento do AppFabric e, em seguida, usa cmdlets internos do AppFabric para obter a lista de computadores ativos a partir dos dados de persistência. Por fim, combina os dois conjuntos de resultados e envia o resultado ao chamador.
Para instalar esse cmdlet, execute a seguinte linha em qualquer máquina com o Windows PowerShell (como o console que acompanha o Windows PowerShell 2.0):
Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1
Onde <exemplos> é o caminho no qual você instalou os exemplos do AppFabric.
Depois disso, você pode executar o seguinte cmdlet, e ele retornará a lista de todos os computadores ativos no seu farm:
Get-ASActiveMachine
Observação
Veja abaixo uma lista de todos os parâmetros que esse cmdlet recebe e como usá-los se o servidor SQL não estiver instalado como uma instância padrão no computador local e se o banco de dados de monitoramento do AppFabric não se chamar "ApplicationServerMonitoring".
A lista gerada será parecida com esta:
Dublin001
Dublin002
Para combinar a configuração multicomputador com esse cmdlet, execute o seguinte comando:
Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Parâmetros de Get-ASActiveMachine
-Server |
Parâmetro obrigatório. Ao usar o SQL Server Express, defina esse parâmetro como “<serverName>\SQLExpress”. Ao usar o SQL Server Enterprise, defina este parâmetro como “<serverName>”. |
-Database |
Parâmetro obrigatório. Uma cadeia de caracteres para especificar o banco de dados de monitoramento. |
-SiteName |
Parâmetro opcional. Um parâmetro de filtragem de cadeias de caracteres que faz com que o cmdlet informe apenas os computadores ativos no local especificado. |
-VirtualPath |
Parâmetro opcional. Um parâmetro de filtragem de cadeias de caracteres que faz com que o cmdlet informe apenas os computadores ativos no caminho virtual. Essa cadeia de caracteres pode ser usada com o parâmetro -SiteName para especificar que o cmdlet deve retornar apenas os computadores que atuem no balanceamento de carga de um serviço específico. |
-ActiveSince |
Parâmetro opcional. Um objeto DateTime que pode ser usado para filtrar apenas os computadores que tiverem dados de monitoramento persistidos ou comunicados durante um determinado período de tempo. Por exemplo, para retornar os dados das últimas 24 horas, use: Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24). |
-ApplicationObject |
Parâmetro opcional. Um objeto Microsoft.ApplicationServer.Management.Data.ApplicationInfo que pode ser usado para filtrar apenas os computadores que tiverem dados de monitoramento persistidos ou comunicados sobre um determinado aplicativo. É melhor usado em cenários de transporte, por exemplo, Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine. |
Outros recursos
Para obter informações adicionais sobre execução remota de scripts do Windows PowerShell, consulte about_Remote (a página pode estar em inglês) (https://go.microsoft.com/fwlink/?LinkId=194428) ou digite help about_remote em um host do Windows PowerShell.
2011-12-05