다음을 통해 공유


샘플: AddCacheHost 스크립트

이 섹션에서는 샘플 Windows PowerShell 스크립트 AddCacheHost.ps1을 제공합니다. 이 스크립트는 캐시 호스트를 캐시 클러스터에 추가하는 데 필요한 단계를 자동화합니다. 이 스크립트에서 사용되는 명령에 대한 설명은 자동 설치 및 구성을 참조하십시오. AddCacheHost 샘플 스크립트는 다음과 같은 작업을 수행합니다.

  • NewCacheCluster 매개 변수가 지정되면 새 캐시 클러스터를 만듭니다.

  • 지정된 캐시 클러스터에 로컬 서버를 등록합니다.

  • 로컬 서버에 캐싱 서비스를 구성합니다.

  • 로컬 서버에 캐시 관리 기능을 구성합니다.

  • AppFabric 캐싱에 대해 기본 제공 Windows 방화벽 정책을 사용하도록 설정합니다.

  • 클러스터가 작동하는 경우 캐시 호스트를 시작합니다.

Windows PowerShell 스크립트 및 해당 실행 방법에 대한 자세한 내용은 Running Windows PowerShell Scripts(영문)를 참조하십시오.

AddCacheHost 스크립트 필수 구성 요소

이 스크립트를 실행하려면 Windows Server용 Microsoft AppFabric 1.1과 함께 캐싱 서비스 및 캐시 관리 기능을 설치해야 합니다. 또한 캐시 구성 저장소에 대한 위치를 설정해야 합니다. 두 기본 제공 공급자는 XMLSystem.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로 저장된 경우 다음 호출은 SQL Server SQLServer1CacheClusterConfigurationDB라는 새 데이터베이스를 만듭니다. 또한 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 스크립트 사용자 지정

용도에 맞게 이 스크립트를 사용자 지정하는 방법에는 두 가지 옵션이 있습니다. 첫 번째, 스크립트의 "사용자 지정 가능 변수" 섹션에 있는 변수 값을 변경할 수 있습니다. 예를 들어 XML 공급자를 사용하는 경우 $provider 변수를 "XML"로 설정하고 $share_location을 구성 저장소에 사용해야 하는 네트워크 공유로 설정합니다. 특정 설정에 따라 다른 변수를 사용자 지정합니다. $database_name$database_server 변수는 System.Data.SqlClient 공급자를 사용하는 경우에만 필요합니다. $share_location 변수는 XML 공급자를 지정하는 경우에만 필요합니다.

다른 옵션은 스크립트 매개 변수 PvdConnStr을 사용하여 명령줄에서 공급자 및 연결 문자열을 수동으로 지정하는 것입니다. 이러한 매개 변수는 내부 변수 설정을 다시 정의합니다.

AddCacheHost 스크립트 실행

다음 명령은 새 캐시 클러스터를 만들고 로컬 서버를 해당 클러스터의 새 캐시 호스트로 구성합니다.

AddCacheHost -NewCacheCluster

다음 명령은 로컬 서버를 기존 캐시 클러스터에 있는 캐시 호스트로 구성합니다.

AddCacheHost

다음 예는 명령줄에서 공급자 및 연결 문자열을 수동으로 지정하는 방법을 보여줍니다.

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

참고 항목

개념

자동 설치 및 구성

  2012-03-05