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_server
sã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