Script de Windows PowerShell para configurar el límite en múltiples equipos
En este ejemplo se explican los pasos necesarios para usar un script de Windows PowerShell con el fin de configurar valores predeterminados de límite de servicio para varios equipos que forman parte de una granja. Este ejemplo puede modificarse con facilidad para cambiar cualquier otro parámetro al que pueda obtener acceso AppFabric.
Al mantener una granja de servidores formada por varios equipos, conectar individualmente cada equipo y cambiar un único parámetro puede resultar tedioso. Este problema se acentúa si existen numerosos equipos en la granja o si tales cambios tienen lugar con frecuencia. Con la introducción de las funciones de persistencia y seguimiento de Microsoft AppFabric 1.1 para Windows Server, existe un modo sencillo de extraer información acerca de los equipos activos de la granja directamente desde la base de datos y usar dicha información para ejecutar comandos de Windows PowerShell en ellos.
En este ejemplo se muestra cómo extraer información de los equipos de la granja y cómo ejecutar cmdlets de Windows PowerShell en todos sus equipos activos.
Este ejemplo funciona con cualquier aplicación. Se recomienda usar la aplicación común AppFabric de ejemplo, creada para su uso con ejemplos de AppFabric. Para buscarla, navegue hasta la carpeta <samples>\SampleApplication\OrderApplication, donde <samples> representa la ruta de acceso en la que instaló los ejemplos de AppFabric.
Nota
Los ejemplos se proporcionan únicamente con fines de aprendizaje. No están concebidos para su uso en un entorno de producción ni se han probado en este tipo de entorno. Microsoft no proporciona asistencia técnica para estos ejemplos.
Requisitos previos
Este ejemplo puede ejecutarse tanto en un único equipo como en varios equipos que cumplan los siguientes requisitos previos. Si desea ejecutar el ejemplo en un único equipo, puede ignorar las referencias a varios equipos.
En primer lugar, es necesario instalar AppFabric en todos los equipos que vayan a participar en el ejemplo; además, todos ellos deberán usar una base de datos común para persistencia o seguimiento.
Para ejecutar los scripts (tal como se proporcionan), es necesario contar con privilegios administrativos en el equipo en el que se ejecute el ejemplo. En función de las modificaciones que se deseen realizar, es posible que se necesiten privilegios de administración en el resto de equipos.
Todos los equipos que participen deberán formar parte de un único dominio; Windows Remote Management (WinRM) 2.0 debe estar instalado en todos ellos. Puede descargar WinRM 2.0 CTP3 para plataformas de nivel inferior en la página de descargas de WinRM 2.0 https://go.microsoft.com/fwlink/?LinkId=194424 (en inglés). Este ejemplo puede modificarse para su ejecución en un entorno sin dominio. Vea la respuesta a la pregunta “¿SE PUEDE PROBAR LA COMUNICACIÓN REMOTA EN UN SOLO EQUIPO (QUE NO ESTÉ EN UN DOMINIO)?” en la sección de preguntas frecuentes acerca de la comunicación remota en Windows PowerShell en about_Remote_FAQ (https://go.microsoft.com/fwlink/?LinkId=194425).
Es necesario que Windows PowerShell esté habilitado para la ejecución remota. Para ello, ejecute Enable-PSRemoting -force una vez cumplidos los dos requisitos previos anteriores. Para obtener más información acerca de la comunicación remota en Windows PowerShell, escriba help about_remote.
Es necesario que todos los equipos del ejemplo formen parte de una granja (es decir, que todos tengan instalados los mismos servicios y aplicaciones). Además, deben haber persistido o notificado datos de seguimiento al menos una vez a la base de datos común.
El host que vaya a ejecutar este ejemplo necesitará conectividad al cliente SQL y deberá tener instalado el complemento SQL Server para Windows PowerShell.
Archivos de ejemplo
Script Get-ASActiveMachine.ps1 (en la carpeta Code)
Documento Léame
Configuración y ejecución de este ejemplo
Ejecute un host de Windows PowerShell (por ejemplo, la consola proporcionada con Windows PowerShell 2.0) como Administrador. Si no ejecuta la cuenta integrada “Administrador”, asegúrese de seleccionar “Ejecutar como administrador” al ejecutar el host.
Nota
Para ejecutar este ejemplo, es necesario que permita la ejecución de scripts sin firma en el equipo. Los pasos que se describen a continuación muestran cómo hacerlo.
En el host, ejecute el comando siguiente: Set-ExecutionPolicy Unrestricted. De este modo, podrá ejecutar el script de ejemplo sin firmar. Asegúrese de revertir dicha configuración cuando finalice el ejemplo. Si está evaluando la ejecución de scripts similares en el entorno de producción, es recomendable firmar el script. Para obtener más información acerca de la firma de scripts, vea about_Signing (https://go.microsoft.com/fwlink/?LinkID=194426).
Eliminación de este ejemplo
- Para quitar el ejemplo, revierta la directiva de ejecución al nivel anterior o al valor predeterminado para Windows PowerShell mediante el siguiente comando: Set-ExecutionPolicy Default.
Demuestra
Este ejemplo se divide en dos partes. La primera parte explica cómo ejecutar los cmdlets (y, específicamente, los cmdlets de AppFabric) en un conjunto de equipos. La segunda parte es un cmdlet de script que se usa para obtener la lista de equipos activos de una granja. Después de ello, un ejemplo indica el modo de usar ambas partes.
Configuración remota
Si se cumplen todos los requisitos previos indicados anteriormente, la ejecución de cmdlets en equipos remotos resulta sencilla. El cmdlet que se debe usar se denomina Invoke-Command y toma parámetros para todos los equipos en los que debe ejecutarse, así como el script que debe ejecutarse en tales equipos.
Importante |
---|
Al llevar a cabo los pasos de este ejemplo, cambiará el valor predeterminado “Número máximo de llamadas concurrentes” para todos los servicios de los equipos en que lo ejecute. Esto puede acarrear consecuencias negativas en entornos de producción al exponer los servidores a ataques por denegación de servicio (DoS) o denegar el acceso a equipos legítimos que realicen llamadas. No debe ejecutar los siguientes pasos en entornos de producción sin realizar previamente una copia de seguridad de los sistemas y seleccionar un valor adecuado para el entorno. Si no está seguro de cuál debe ser el valor de la propiedad MaxConcurrentCalls, póngase en contacto con el responsable de la arquitectura de software o consulte la documentación del producto WCF en Propiedad MaxConcurrentCalls (https://go.microsoft.com/fwlink/?LinkId=194427). |
Por ejemplo, supongamos que desea ejecutar el siguiente comando de AppFabric:
Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200
Para ejecutar el comando en un conjunto de dos equipos denominados “Dublin001” y “Dublin002”, debería escribir un comando similar al siguiente:
Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Tenga en cuenta que, en la definición de bloque de script (el texto escrito entre llaves), el primer comando es Import-Module ApplicationServer. De este modo, se garantiza que el entorno remoto que se crea con Invoke-Command tenga todos los cmdlets de AppFabric necesarios.
Consulta de la base de datos para los equipos activos
Para ejecutar el comando anterior en todos los equipos de una granja, es necesario que mantenga una lista de todos los equipos y la use con el fin de proporcionar los argumentos para el parámetro ComputerName en el ejemplo anterior. De manera alternativa, puede usar un cmdlet de script proporcionado con este ejemplo.
Este cmdlet de script se denomina Get-ASActiveMachine. Usa un complemento de SQL Server para que Windows PowerShell extraiga los equipos activos de los datos de seguimiento de AppFabric y, a continuación, usa los cmdlets integrados en AppFabric para obtener la lista de equipos activos de los datos de persistencia. Por último, combina los dos conjuntos de resultados y devuelve el resultado al equipo que realiza la llamada.
Para instalar este cmdlet, ejecute la siguiente línea en cualquier host de Windows PowerShell (por ejemplo, la consola proporcionada con Windows PowerShell 2.0):
Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1
Donde <ejemplos> es la ruta de acceso en la que instaló los ejemplos de AppFabric.
Después de ello, puede ejecutar el siguiente cmdlet y éste devolverá la lista de todos los equipos activos de la granja:
Get-ASActiveMachine
Nota
Vea a continuación para obtener una lista de todos los parámetros que toma este cmdlet y el modo de usarlos si el servidor SQL Server no está instalado como instancia predeterminada en el equipo local y si la base de datos de seguimiento de AppFabric no se denomina “ApplicationServerMonitoring”.
La lista devuelta tendrá un aspecto similar al siguiente:
Dublin001
Dublin002
Para combinar la configuración de varios equipos mediante este cmdlet, ejecute el siguiente comando:
Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Parámetros de Get-ASActiveMachine
-Server |
Parámetro obligatorio. Al usar SQL Server Express, defina este parámetro en “<nombreDeServidor>\SQLExpress”. Al usar SQL Server Enterprise, defina este parámetro en “<nombreDeServidor>”. |
-Database |
Parámetro obligatorio. Cadena que especifica la base de datos de seguimiento. |
-SiteName |
Parámetro opcional. Parámetro de filtro de cadena que hace que el cmdlet devuelva únicamente los equipos activos para el sitio especificado. |
-VirtualPath |
Parámetro opcional. Parámetro de filtro de cadena que hace que el cmdlet devuelva únicamente los equipos activos para la ruta de acceso virtual. Esa cadena puede usarse con el parámetro -SiteName para especificar que el cmdlet debe devolver únicamente equipos que equilibren la carga de un servicio específico. |
-ActiveSince |
Parámetro opcional. Objeto DateTime que puede usarse para filtrar únicamente los equipos que hayan persistido o notificado datos de seguimiento durante un período de tiempo determinado. Por ejemplo, para devolver datos de las últimas 24 horas, use: Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24). |
-ApplicationObject |
Parámetro opcional. Objeto de Microsoft.ApplicationServer.Management.Data.ApplicationInfo que puede usarse para filtrar únicamente equipos que hayan persistido o notificado datos de seguimiento acerca de una aplicación determinada. Preferiblemente, se usa en escenarios de canalización, por ejemplo, Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine. |
Otros recursos
Para obtener información adicional acerca de la ejecución remota de scripts de Windows PowerShell, vea about_Remote (https://go.microsoft.com/fwlink/?LinkId=194428) o escriba help about_remote en un host de Windows PowerShell.
2012-03-05