Freigeben über


Beispiel: AddCacheHost-Skript

In diesem Abschnitt wird ein Windows PowerShell-Beispielskript (AddCacheHost.ps1) bereitgestellt. Dieses Skript automatisiert die Schritte, die für das Hinzufügen eines Cachehosts zu einem Cachecluster erforderlich sind. Eine Erläuterung der in diesem Skript verwendeten Befehle finden Sie unter Automatisierte Installation und Konfiguration. Das Beispielskript AddCacheHost führt die folgenden Aktionen aus:

  • Erstellen einen neuen Cacheclusters, wenn der Parameter NewCacheCluster angegeben wird.

  • Registrieren des lokalen Servers auf dem angegebenen Cachecluster.

  • Konfigurieren des Cachediensts auf dem lokalen Server.

  • Konfigurieren der Cacheverwaltungsfunktion auf dem lokalen Server.

  • Aktivieren der integrierten Windows-Firewallrichtlinie für AppFabric-Cache.

  • Starten des Cachehosts, wenn der Cluster ausgeführt wird.

Tipp

Weitere Informationen zu Windows PowerShell-Skripts und deren Ausführung finden Sie unter Ausführen von Windows PowerShell-Skripts.

Voraussetzungen für das Skript „AddCacheHost“

Damit dieses Skript ausgeführt werden kann, muss Microsoft AppFabric 1.1 für Windows Server mit den Cachedienst- und Cacheverwaltungsfunktionen installiert werden. Außerdem müssen Sie den Speicherort für den Cachekonfigurationsspeicher einrichten. Zwei Anbieter sind integriert: XML und System.Data.SqlClient. Weitere Informationen zum Einrichten einer Netzwerkdateifreigabe finden Sie unter Freigegebene ordnerbasierte Clusterkonfiguration. Weitere Informationen zu den SQL Server-Anforderungen finden Sie unter Auf SQL Server basierende Clusterkonfiguration.

Wenn Sie SQL Server für den Konfigurationsspeicher verwenden, kann auch Windows PowerShell zum Erstellen der Konfigurationsdatenbank verwendet werden. Unter diesen Umständen muss der SQL Server Windows PowerShell-Anbieter installiert sein. Außerdem müssen Sie über die entsprechenden Berechtigungen zum Herstellen einer Verbindung mit dem Computer mit SQL Server und zum Erstellen neuer Datenbanken verfügen. Das folgende Skript erstellt eine Datenbank auf dem angegebenen Computer mit SQL Server.

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  
}

Das SQL Server Windows PowerShell-Snap-In muss geladen sein, damit dieses Skript verwendet werden kann. Zu diesem Zweck kann der folgende Befehl verwendet werden.

Add-PSSnapin SqlServerCmdletSnapin100

Wenn das Skript als CreateCacheConfigDB.ps1 gespeichert wurde, erstellt der folgende Aufruf eine neue Datenbank namens CacheClusterConfigurationDB auf dem Computer mit SQL Server namens SQLServer1. Beachten Sie, dass auch die Standardwerte für die Parameter Datenbankname und Datenbankpfad verwendet werden können. In diesem Fall muss nur der Servername angegeben werden.

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

Beispiel: AddCacheHost-Skript

Wenn Sie das Skript AddCacheHost verwenden möchten, kopieren Sie zuerst den Inhalt des folgenden Windows PowerShell-Skripts in eine Textdatei, und speichern Sie die Datei dann als AddCacheHost.ps1. Lesen Sie dann die Informationen in der Skriptdatei, damit Sie verstehen, wie das Skript angepasst und ausgeführt wird.

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

Anpassen des Skripts „AddCacheHost“

Es stehen zwei Optionen zur Verfügung, um das Skript für Ihren Verwendungszweck anzupassen. Sie können die Werte für die Variablen im Abschnitt "Customizable Variables" des Skripts anpassen. Wenn Sie z. B. den Anbieter XML verwenden, legen Sie die Variable $provider auf "XML" fest, und legen Sie dann $share_location auf die Netzwerkfreigabe fest, die für den Konfigurationsspeicher verwendet werden soll. Passen Sie die anderen Variablen gemäß Ihren besonderen Anforderungen an. Beachten Sie, dass die Variablen $database_name und $database_server nur erforderlich sind, wenn Sie den Anbieter System.Data.SqlClient verwenden. Die Variable $share_location ist nur erforderlich, wenn Sie den Anbieter XML angeben.

Die andere Option besteht im Verwenden der Skriptparameter Pvd und ConnStr, um den Anbieter und die Verbindungszeichenfolge manuell über die Befehlszeile anzugeben. Diese Parameter setzen die internen Variableneinstellungen außer Kraft.

Ausführen des Skripts „AddCacheHost“

Der folgende Befehl erstellt einen neuen Cachecluster und konfiguriert den lokalen Server als neuen Cachehost für diesen Cluster.

AddCacheHost -NewCacheCluster

Der folgende Befehl konfiguriert den lokalen Server als Cachehost für einen vorhandenen Cachecluster.

AddCacheHost

Das folgende Beispiel zeigt, wie der Anbieter und die Verbindungszeichenfolge manuell über die Befehlszeile angegeben werden.

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

Siehe auch

Konzepte

Automatisierte Installation und Konfiguration

  2012-03-05