Поделиться через


Пример. Скрипт AddCacheHost

В этом разделе представлен пример скрипта Windows PowerShell AddCacheHost.ps1. Этот скрипт автоматизирует действия, необходимые для добавления узла кэша к кластеру. Пояснения по командам скрипта см. в разделе Автоматическая установка и конфигурация. Скрипт AddCacheHost выполняет следующие действия:

  • Создает новый кластер кэша при указании параметра NewCacheCluster.

  • Регистрирует локальный сервер на указанном кластере кэша.

  • Настраивает службу кэширования на локальном сервере.

  • Настраивает функцию администрирования кэша на локальном сервере.

  • Включает встроенную политику брандмауэра Windows для Кэш AppFabric.

  • Запускает узел кэша, если кластер работает.

Совет

Подробные сведения о скриптах Windows PowerShell и их запуске см. в разделе Запуск скриптов Windows PowerShell.

Необходимые компоненты для скрипта AddCacheHost

Чтобы запустить этот скрипт, необходимо установить Microsoft AppFabric 1.1 для Windows Server со службой кэша и функцией администрирования кэша. Кроме того, следует настроить расположение для хранилища конфигурации кэша. Существует два встроенных поставщика: XML и System.Data.SqlClient. Дополнительные сведения о настройке сетевого общего файлового ресурса см. в разделе Конфигурация кластера на основе общих папок. Дополнительные сведения о требованиях к серверу SQL Server см. в разделе Конфигурация кластера на основе SQL Server.

При использовании SQL Server для хранилища конфигурации также можно использовать Windows PowerShell для создания базы данных конфигурации. При этом необходимо наличие установленного поставщика SQL Server Windows PowerShell. Кроме того, необходимы соответствующие разрешения на подключение к SQL Server и создание новых баз данных. Приведенный ниже скрипт создает базу данных на указанном сервере 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  
}

Чтобы использовать этот скрипт, необходимо загрузить оснастку SQL Server Windows PowerShell. Для этого используется следующая команда.

Add-PSSnapin SqlServerCmdletSnapin100

Если скрипт сохранен под именем CreateCacheConfigDB.ps1, то следующий вызов создает новую базу данных с именем CacheClusterConfigurationDB на сервере SQL Server SQLServer1. Обратите внимание на то, что можно использовать параметры по умолчанию database_name и database_path, указав только имя сервера.

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

Пример. Скрипт AddCacheHost

Чтобы использовать скрипт AddCacheHost, следует вначале скопировать содержимое следующего скрипта Windows PowerShell в текстовый файл, а затем сохранить файл под именем AddCacheHost.ps1. Просмотрите сведения о настройке, приведенные после скрипта, а затем запустите его.

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

Настройка скрипта AddCacheHost

Существует два способа изменения скрипта. Во-первых, можно изменить значения переменных в разделе Customizable Variables. Например, при использовании поставщика XML установите переменную $provider равной "XML", а параметр $share_location — равным сетевому ресурсу, который необходимо использовать для хранилища конфигурации. Настройте другие переменные в зависимости от конкретной ситуации. Обратите внимание на то, что переменные $database_name и $database_server необходимы только при использовании поставщика System.Data.SqlClient. Переменная $share_location необходима только при указании поставщика XML.

Другим вариантом является использование параметров скрипта Pvd и ConnStr для указания поставщика и строки подключения вручную из командной строки. Эти параметры переопределяют внутренние настройки переменных.

Выполнение скрипта AddCacheHost

Следующая команда создает новый кластер кэша и настраивает локальный сервер в качестве нового узла кэша в кластере.

AddCacheHost -NewCacheCluster

Следующая команда настраивает локальный сервер в качестве узла кэша в существующем кластере.

AddCacheHost

В следующем примере демонстрируется указание поставщика и строки подключения вручную из командной строки.

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

См. также

Основные понятия

Автоматическая установка и настройка

  2012-03-05