Compartir vía


Ejemplo: script AddCacheHost

En esta sección se proporciona un script de ejemplo de Windows PowerShell, AddCacheHost.ps1. Este script automatiza los pasos necesarios para agregar un host de caché a un clúster de caché. Para ver una explicación de los comandos que se usan en este script, consulte Instalación y configuración automatizadas. El script de ejemplo AddCacheHost realiza las acciones siguientes:

  • Crea un nuevo clúster de caché si se especifica el parámetro NewCacheCluster.

  • Registra el servidor local en el clúster de caché especificado.

  • Configura el servicio de almacenamiento en caché en el servidor local.

  • Configura la característica de administración de caché en el servidor local.

  • Habilita la directiva de firewall de Windows integrada de Almacenamiento en caché de AppFabric.

  • Inicia el host de caché si el clúster está activo.

TipSugerencia
Para obtener más información acerca de los scripts de Windows PowerShell y el modo de ejecutarlos, vea Ejecución de scripts de Windows PowerShell.

Requisitos previos del script AddCacheHost

Para ejecutar este script, debe instalarMicrosoft AppFabric 1.1 para Windows Server con las características Servicio de almacenamiento en caché y Administración de caché. También es necesario que configure la ubicación para el almacén de configuración de la memoria caché. Existen dos proveedores integrados: XML y System.Data.SqlClient. Para obtener más información acerca de cómo configurar un recurso compartido de archivos de red, vea Configuración de clúster basada en carpeta compartida. Para obtener más información acerca de los requisitos de SQL Server, vea Configuración de clúster basada en SQL Server.

Si está usando SQL Server para el almacén de configuración, también se puede usar Windows PowerShell para crear la base de datos de configuración. Es necesario que tenga instalado el proveedor de SQL Server Windows PowerShell. También debe tener los permisos adecuados para conectar con SQL Server y crear nuevas bases de datos. El siguiente script crea una base de datos en el servidor SQL Server especificado.

param([string]$server="NOTSPECIFIED", [string]$database_name = "CacheClusterConfigurationDB", `
   [string]$database_path="C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\")

#################
# Set Variables #
#################

# Parameters specifying configuration database details
if ($server -eq "NOTSPECIFIED")
{
   # Use local server if none is specified
   $server = $env:COMPUTERNAME
}

$connection_string = "Data Source=" + $server + `
   ";Initial Catalog=" + $database_name + `
   ";Integrated Security=True"
Write-Host "`nConnection String:`n$connection_string`n" -ForegroundColor Green

###################################################
# Create the Cache Cluster Configuration Database #
###################################################

$database_file_path = "N'" + $database_path + $database_name  + ".mdf'"
$database_log_path = "N'" + $database_path + $database_name + "_log.ldf'"
$Database_Exists_Command = "select count(*) from sys.databases where name = '" + $database_name + "'" 
$Database_Exists_Result = Invoke-Sqlcmd $Database_Exists_Command -ServerInstance $server

Write-Host "`nCreating Configuration Database:" -ForegroundColor Green
if ($Database_Exists_Result.Item(0) -eq 0)
{
   $Create_DB_Command = "CREATE DATABASE [" + $database_name + "] ON  PRIMARY " + `
      "( NAME = N'" + $database_name + "', " + `
      "FILENAME = " + $database_file_path + ", SIZE = 2048KB , FILEGROWTH = 1024KB ) " + `
      "LOG ON ( NAME = N'" + $database_name + "_log'," + `
      "FILENAME = " + $database_log_path + ", SIZE = 1024KB , FILEGROWTH = 10%)"

   Write-Host "$Create_DB_Command`n"  -ForegroundColor Green
   Invoke-Sqlcmd $Create_DB_Command -ServerInstance $server
}
else
{
   Write-Host "Database $database_name already exists on $server.`n" `
      -ForegroundColor Green  
}

Para usar este script, debe tener cargado el complemento de SQL Server Windows PowerShell. Esto puede realizarse mediante el comando siguiente.

Add-PSSnapin SqlServerCmdletSnapin100

Si el script se ha guardado como CreateCacheConfigDB.ps1, la siguiente llamada crea una nueva base de datos denominada CacheClusterConfigurationDB en el servidor SQL Server SQLServer1. Tenga en cuenta que también puede basarse en los valores predeterminados para los parámetros database_name y database_path y especificar únicamente el nombre del servidor.

CreateCacheConfigDB.ps1 -server SQLServer1 -database_name "CacheClusterConfigurationDB" -database_path "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\"

Ejemplo: script AddCacheHost

Para usar el script AddCacheHost, primero debe copiar el contenido del siguiente script de Windows PowerShell a un archivo de texto y guardarlo como AddCacheHost.ps1. A continuación, revise la información que sigue al script para comprender el modo de personalizar y ejecutar el script.

param([switch]$NewCacheCluster, [string]$Pvd, [string]$ConnStr)

##########################
# Customizable Variables #
##########################
$provider = "System.Data.SqlClient"
#$provider = "XML"
$host_name = $env:COMPUTERNAME
$service_account = "NT Authority\Network Service"
$starting_port = 22233
$cluster_size = "Small"

# If System.Data.SqlClient:
$database_name = "CacheClusterConfigurationDB"
$database_server = "SQLServer1"
# If XML Provider:
$share_location = "\\Server1\CacheConfigShare"

##############
# Initialize #
##############

Import-Module DistributedCacheAdministration
Import-Module DistributedCacheConfiguration

$cache_port = $starting_port + 0
$cluster_port = $starting_port + 1
$arbitration_port = $starting_port + 2
$replication_port = $starting_port + 3
$connection_string = ""

if ($provider -eq "System.Data.SqlClient")
{
   $connection_string = "Data Source=" + $database_server + `
      ";Initial Catalog=" + $database_name + `
      ";Integrated Security=True"
}

if ($provider -eq "XML")
{
   $connection_string = $share_location
}

# If provided, command-line parameters override 
# internal script variables:
if ($Pvd)
{
   $provider = $Pvd
}
if ($ConnStr)
{
   $connection_string = $ConnStr
}

##############################
# Create a New Cache Cluster #
##############################

$Get_CacheClusterInfo_Command = Get-CacheClusterInfo -Provider $provider -ConnectionString $connection_string

# Look for a PowerShell script parameter that specifies this is a new cache cluster
if ($NewCacheCluster -and !$Get_CacheClusterInfo_Command.IsInitialized)
{
   Write-Host "`nNew-CacheCluster -Provider $provider -ConnectionString "`
      "`"$connection_string`" -Size $cluster_size" -ForegroundColor Green
   New-CacheCluster -Provider $provider -ConnectionString $connection_string -Size $cluster_size    
}

######################
# Add the Cache Host #
######################

Write-Host "`nRegister-CacheHost -Provider $provider -ConnectionString `"$connection_string`" "`
   "-Account `"$service_account`" -CachePort $cache_port -ClusterPort $cluster_port "`
   "-ArbitrationPort $arbitration_port -ReplicationPort $replication_port -HostName "`
   "$host_name" -ForegroundColor Green
Register-CacheHost -Provider $provider -ConnectionString $connection_string -Account `
   $service_account -CachePort $cache_port -ClusterPort $cluster_port -ArbitrationPort `
   $arbitration_port -ReplicationPort $replication_port `
   -HostName $host_name

Write-Host "`nAdd-CacheHost -Provider $provider -ConnectionString `"$connection_string`" "`
   "-Account `"$service_account`"" -ForegroundColor Green
Add-CacheHost -Provider $provider -ConnectionString $connection_string -Account $service_account

Write-Host "`nAdd-CacheAdmin -Provider $provider -ConnectionString "`
   "`"$connection_string`"" -ForegroundColor Green
Add-CacheAdmin -Provider $provider -ConnectionString $connection_string

Use-CacheCluster

##########################
# Configure the Firewall #
##########################
Write-Host "`nConfigure the firewall..." -ForegroundColor Green
netsh advfirewall firewall set rule `
   group="Windows Server AppFabric: AppFabric Caching Service" new enable=Yes | Out-Null
netsh advfirewall firewall set rule `
   name="Remote Service Management (RPC)" profile=domain new enable=Yes | Out-Null
netsh advfirewall firewall set rule `
   name="Remote Service Management (RPC-EPMAP)" profile=domain new enable=Yes | Out-Null
netsh advfirewall firewall set rule `
   name="Remote Service Management (NP-In)" profile=domain new enable=Yes | Out-Null

########################
# Start the Cache Host #
########################
# If the cluster is not running, don't start the cache host.

$running = 0
$Get_CacheHost_Command = Get-CacheHost

foreach ($cache_host in $Get_CacheHost_Command)
{
   if ($cache_host.Status -eq "Up")
   {
      $running = 1
   }
}

if ($running)
{
   Write-Host "`nStart-CacheHost -HostName $host_name -CachePort $cache_port" -ForegroundColor Green
   Start-CacheHost -HostName $host_name -CachePort $cache_port
}
else
{
   Write-Host "`nNot starting new cache host; Cache Cluster is not running..." -ForegroundColor Green
}

Write-Host "`nGet-CacheHost`n" -ForegroundColor Green
Get-CacheHost

Personalización del script AddCacheHost

Para personalizar este script para su uso, tiene dos opciones. En primer lugar, puede cambiar los valores para las variables en la sección "Customizable Variables" del script. Por ejemplo, si usa el proveedor de XML, establezca la variable $provider en "XML" y establezca $share_location en el recurso compartido de red que debe usarse para el almacén de configuración. Personalice las demás variables en función de su configuración específica. Tenga en cuenta que las variables $database_name y $database_server únicamente son necesarias si usa el proveedor System.Data.SqlClient. La variable $share_location únicamente es necesaria si especifica el proveedor de XML.

Otra opción es usar los parámetros de script Pvd y ConnStr para especificar manualmente el proveedor y la cadena de conexión desde la línea de comandos. Estos parámetros sustituyen a la configuración de la variable interna.

Ejecución del script AddCacheHost

El siguiente comando crea un nuevo clúster de caché y configura el servidor local como nuevo host de caché en dicho clúster.

AddCacheHost -NewCacheCluster

El siguiente comando configura el servidor local como host de caché en un clúster de caché existente.

AddCacheHost

En el siguiente ejemplo se muestra cómo especificar manualmente el proveedor y la cadena de conexión desde la línea de comandos.

AddCacheHost.ps1 -NewCacheCluster -Pvd System.Data.SqlClient -ConnStr "Data Source=SQLServer1;Initial Catalog=CustomConfigDB;Integrated Security=True"

Vea también

Conceptos

Instalación y configuración automatizadas

  2012-03-05