Partilhar via


Exemplo: Script AddCacheHost (Cache do Windows Server Appfabric)

Esta seção fornece um exemplo de script do Windows PowerShell, AddCacheHost.ps1. Esse script automatiza as etapas necessárias para adicionar um host de cache a um cluster de cache. Para obter explicação dos comando usados nesse script, consulte Instalação e configuração automatizadas. O exemplo de script AddCacheHost executa as seguintes ações:

  • Cria um novo cluster de cache quando o parâmetro NewCacheCluster é especificado.

  • Registra o servidor local no cluster de cache especificado.

  • Configura o Serviço de Armazenamento em Cache no servidor local.

  • Configura o recurso Administração de Cache no servidor local.

  • Habilita a política interna de firewall do Windows para cache do AppFabric.

  • Inicia o host de cache, se o cluster está ativo.

Dica

Para saber mais sobre scripts do Windows PowerShell e como executá-los, consulte Executando scripts do Windows PowerShell.

Pré-requisitos do script AddCacheHost

Para executar esse script, você deve instalar o Windows Server AppFabric com os recursos Serviço de Armazenamento em Cache e Administração de Cache. Também é exigido que você configure o local do repositório de configuração do cache. Existem dois provedores internos: XML e System.Data.SqlClient. Para obter mais informações sobre como configurar um compartilhamento de arquivo de rede, consulte Configuração de cluster baseada em pasta compartilhada. Para obter mais informações sobre os requisitos do SQL Server, consulte Configuração de cluster baseada no SQL Server.

Se você estiver usando o SQL Server para o repositório de configuração, também será possível usar o Windows PowerShell para criar o banco de dados de configuração. Isso exige que o provedor do SQL Server Windows PowerShell esteja instalado. Você também deve ter as permissões apropriadas para conectar ao SQL Server e criar novos bancos de dados. O script a seguir cria um banco de dados no 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 esse script, você deve ter o snap-in do SQL Server Windows PowerShell carregado. Isso pode ser executado com o seguinte comando.

Add-PSSnapin SqlServerCmdletSnapin100

Se o script foi salvo como CreateCacheConfigDB.ps1, a seguinte chamada cria um novo banco de dados denominado CacheClusterConfigurationDB no SQL Server SQLServer1. Observe que você também poderá usar os padrões dos parâmetros database_name e database_path e especificar apenas o nome do servidor.

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

Exemplo: AddCacheHost Script

Para usar o script AddCacheHost, primeiro copie o conteúdo do seguinte script do Windows PowerShell para um arquivo de texto e salve o arquivo como AddCacheHost.ps1. Em seguida, verifique as informações após o script para compreender como personalizar e executar o 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

Personalizando o script AddCacheHost

Para personalizar esse script para seu uso, você tem duas opções. Primeiro, você pode alterar os valores das variáveis na seção "Variáveis personalizáveis" do script. Por exemplo, se você estiver usando o provedor XML, defina a variável $provider como "XML" e defina $share_location como o compartilhamento de rede que deve ser usado para o repositório de configuração. Personalize as outras variáveis com base em suas configurações específicas. Observe que as variáveis $database_name e $database_serversão necessárias somente quando você está usando o provedor System.Data.SqlClient. A variável $share_location é necessária somente quando você especifica o provedor XML.

Outra opção é usar os parâmetros de script Pvd e ConnStr para especificar manualmente o provedor e a cadeia de conexão da linha de comando. Esses parâmetros substituem as configurações de variáveis internas.

Executando o script AddCacheHost

O comando a seguir cria um novo cluster de cache e configura o servidor local como um novo host de cache nesse cluster.

AddCacheHost -NewCacheCluster

O comando a seguir configura o servidor local como um host de cache em um cluster de cache existente.

AddCacheHost

O exemplo a seguir mostra como especificar manualmente o provedor e a cadeia de conexão a partir na linha de comando.

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

Consulte também

Conceitos

Instalação e configuração automatizadas

  2011-12-05