다음을 통해 공유


다수의 컴퓨터에서 제한을 구성하기 위한 Windows PowerShell 스크립트

이 샘플에서는 Windows PowerShell 스크립트를 사용하여 팜의 일부인 여러 컴퓨터에 대해 서비스 제한 기본값을 구성하는 데 필요한 단계를 보여 줍니다. 이 샘플을 쉽게 수정하여 AppFabric에서 액세스 가능한 다른 설정을 변경할 수 있습니다.

여러 컴퓨터의 서버 팜을 유지 관리하는 경우 각 컴퓨터에 개별적으로 연결하여 단일 설정을 변경하는 것이 번거로울 수 있습니다. 팜에 많은 컴퓨터가 있거나 이러한 변경이 자주 발생하는 경우에는 문제가 더욱 심각해집니다. Windows Server AppFabric 지속성 및 모니터링 기능을 사용하면 쉽게 팜의 활성 컴퓨터에 대한 정보를 데이터베이스에서 직접 추출하고 해당 정보를 사용하여 이러한 컴퓨터에서 Windows PowerShell 명령을 실행할 수 있습니다.

이 샘플에서는 팜의 컴퓨터에서 팜 정보를 추출하는 방법과 팜의 모든 활성 컴퓨터에서 Windows PowerShell cmdlet을 실행하는 방법을 보여 줍니다.

이 샘플은 모든 응용 프로그램에서 작동합니다. AppFabric 샘플과 함께 사용하도록 만들어진 공통 AppFabric 샘플 응용 프로그램을 사용하는 것이 좋습니다. 이 응용 프로그램을 찾으려면 <samples>\SampleApplication\OrderApplication 폴더로 이동합니다. 여기서 <samples>는 AppFabric 샘플을 설치한 경로입니다.

참고

샘플은 교육용으로만 제공됩니다. 프로덕션 환경에서 사용하도록 작성된 것은 아니며 프로덕션 환경에서 테스트되지 않았습니다. Microsoft는 이러한 샘플에 대한 기술 지원을 제공하지 않습니다.

사전 요구 사항

이 샘플은 다음 사전 요구 사항을 준수하는 여러 컴퓨터와 단일 컴퓨터에서 실행할 수 있습니다. 단일 컴퓨터에서 샘플을 실행하려는 경우 여러 컴퓨터에 대한 참조를 무시해도 됩니다.

  • 샘플에 참여할 모든 컴퓨터에 AppFabric을 설치해야 하며, 모든 컴퓨터가 지속성 및/또는 모니터링에 공통된 데이터베이스를 사용해야 합니다.

  • 제공된 대로 스크립트를 실행하려면 샘플을 실행할 컴퓨터에서 관리자 권한이 있어야 합니다. 원하는 수정 작업에 따라 다른 모든 컴퓨터에서 관리자 권한이 필요할 수도 있습니다.

  • 참여하는 모든 컴퓨터가 단일 도메인에 가입해야 하고 모든 컴퓨터에 WinRM(Windows Remote Management) 2.0이 설치되어 있어야 합니다. 하위 수준 플랫폼에 대한 WinRM 2.0 CTP3은 WinRM 2.0 다운로드(https://go.microsoft.com/fwlink/?LinkId=194424)에서 다운로드할 수 있습니다. 도메인이 아닌 환경에서 실행되도록 이 샘플을 수정할 수 있습니다. about_Remote_FAQ(https://go.microsoft.com/fwlink/?LinkId=194425)에서 "도메인이 아니라 한 컴퓨터에서 원격 기능을 테스트할 수 있습니까"란 질문에 대한 대답을 참조하십시오.

  • Windows PowerShell에서 원격 실행을 사용할 수 있어야 합니다. 이렇게 하려면 앞의 두 사전 요구 사항이 충족된 후 Enable-PSRemoting -force를 실행하면 됩니다. Windows PowerShell 원격에 대한 자세한 내용을 보려면 help about_remote를 입력합니다.

  • 샘플의 모든 컴퓨터가 팜에 속해 있어야 합니다. 즉, 모든 컴퓨터에 동일한 응용 프로그램과 서비스가 설치되어 있어야 합니다. 또한 모니터링 데이터를 공통 데이터베이스에 한 번 이상 지속 또는 보고한 상태여야 합니다.

  • SQL 클라이언트 연결 및 Windows PowerShell용 SQL Server 스냅인이 이 샘플을 실행할 호스트에 설치되어 있어야 합니다.

샘플 파일

  • Get-ASActiveMachine.ps1 스크립트(Code 폴더 아래에 있음)

  • 추가 정보 문서

이 샘플 설정 및 실행

  1. 관리자 권한으로 Windows PowerShell 호스트(예: Windows PowerShell 2.0과 함께 제공된 콘솔)를 실행합니다. 기본 제공 계정 "관리자"로 실행하지 않는 경우 호스트를 실행할 때 "관리자 권한으로 실행"을 선택해야 합니다.

    참고

    이 샘플을 실행하려면 컴퓨터에서 서명되지 않은 스크립트를 실행할 수 있어야 합니다. 다음 단계에서는 이 작업을 수행하는 방법을 보여 줍니다.

  2. 호스트에서 다음 명령을 실행합니다. Set-ExecutionPolicy Unrestricted. 이렇게 하면 서명되지 않은 샘플 스크립트를 실행할 수 있습니다. 샘플을 완료한 후 해당 설정을 되돌려야 합니다. 프로덕션 환경에서 유사한 스크립트 실행을 평가 중이면 대신 스크립트를 서명하는 것이 좋습니다. 스크립트 서명에 대한 자세한 내용은 about_Signing(https://go.microsoft.com/fwlink/?LinkID=194426)을 참조하십시오.

이 샘플 제거

  1. 이 샘플을 제거하려면 다음 명령을 사용하여 실행 정책을 이전 수준이나 Windows PowerShell의 기본값으로 되돌립니다. Set-ExecutionPolicy Default.

설명

이 샘플은 두 부분으로 나누어져 있습니다. 첫 번째 부분에서는 컴퓨터 집합에서 임의의 cmdlet(및 구체적으로 AppFabric cmdlet)을 실행하는 방법에 대해 설명합니다. 두 번째 부분은 팜의 활성 컴퓨터 목록을 가져오는 데 사용되는 스크립트 cmdlet입니다. 그 뒤에는 두 부분을 사용하는 방법을 보여 주는 예가 있습니다.

원격 구성

위에서 설명한 사전 요구 사항이 모두 충족되면 원격 컴퓨터에서 쉽게 cmdlet을 실행할 수 있습니다. 사용할 cmdlet을 Invoke-Command라고 하며 이 cmdlet은 자신을 실행할 모든 컴퓨터 및 이러한 컴퓨터에서 실행할 스크립트에 대한 매개 변수를 사용합니다.

중요

이 샘플의 단계를 수행하면 샘플을 실행하도록 선택하는 컴퓨터의 모든 서비스에 대해 기본 "최대 동시 호출 수" 값이 변경됩니다. 이 경우 서버가 DoS(서비스 거부) 공격에 노출되거나 정당한 호출자의 액세스가 거부되어 프로덕션 환경에서 부정적인 영향을 줄 수 있습니다. 프로덕션 환경에서는 다음 단계를 실행하기 전에 먼저 시스템을 백업하고 환경에 적합한 값을 선택해야 합니다. MaxConcurrentCalls 값이 확실하지 않은 경우 소프트웨어 설계자에게 문의하거나 MaxConcurrentCalls 속성(https://go.microsoft.com/fwlink/?LinkId=194427)(영문)에서 WCF 제품 설명서를 참조하십시오.

예를 들어, 다음 AppFabric 명령을 실행한다고 가정해 보십시오.

Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200

"Dublin001"과 "Dublin002"라는 두 컴퓨터 집합에서 명령을 실행하려면 다음과 같이 명령을 입력합니다.

Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

스크립트 블록 정의(중괄호 사이의 텍스트)에서 첫 번째 명령은 Import-Module ApplicationServer입니다. 이렇게 하면 Invoke-Command로 만든 원격 환경에 필요한 모든 AppFabric cmdlet이 포함됩니다.

활성 컴퓨터에 대한 데이터베이스 쿼리

팜의 모든 컴퓨터에서 앞의 명령을 실행하려면 모든 컴퓨터의 목록을 유지하고 이 목록을 사용하여 앞의 샘플에 있는 ComputerName 매개 변수에 대해 인수를 제공해야 합니다. 또는 이 샘플과 함께 제공된 스크립트 cmdlet을 사용할 수 있습니다.

이 스크립트 cmdlet을 Get-ASActiveMachine이라고 합니다. 이 cmdlet은 Windows PowerShell용 SQL Server 스냅인을 사용하여 AppFabric 모니터링 데이터에서 활성 컴퓨터를 추출한 다음 기본 제공 AppFabric cmdlet을 사용하여 지속성 데이터에서 활성 컴퓨터 목록을 가져옵니다. 마지막으로 두 결과 집합을 결합하여 그 결과를 호출자에게 반환합니다.

이 cmdlet을 설치하려면 임의의 Windows PowerShell 호스트(예: Windows PowerShell 2.0과 함께 제공된 콘솔)에서 다음 줄을 실행합니다.

Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1

여기서 <samples>는 AppFabric 샘플을 설치한 경로입니다.

그런 후에 다음 cmdlet을 실행할 수 있으며 팜의 모든 활성 컴퓨터 목록이 반환됩니다.

Get-ASActiveMachine

참고

이 cmdlet이 사용하는 모든 매개 변수 목록과 SQL Server가 로컬 컴퓨터에 기본 인스턴스로 설치되어 있지 않은 경우, 그리고 AppFabric 모니터링 데이터베이스가 "ApplicationServerMonitoring"이 아닌 경우 이러한 매개 변수를 사용하는 방법은 아래를 참조하십시오.

반환된 목록은 다음과 같이 표시됩니다.

Dublin001
Dublin002

이 cmdlet과 다중 컴퓨터 구성을 결합하려면 다음 명령을 실행합니다.

Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

Get-ASActiveMachine 매개 변수

-Server

필수 매개 변수입니다. SQL Server Express를 사용하는 경우 이 매개 변수를 “<serverName>\SQLExpress"로 설정합니다. SQL Server Enterprise를 사용하는 경우 이 매개 변수를 "<serverName>"으로 설정합니다.

-Database

필수 매개 변수입니다. 모니터링 데이터베이스를 지정하는 문자열입니다.

-SiteName

선택적 매개 변수입니다. cmdlet에서 지정한 사이트에 대한 활성 컴퓨터만 반환하도록 하는 문자열 필터 매개 변수입니다.

-VirtualPath

선택적 매개 변수입니다. cmdlet에서 가상 경로에 대한 활성 컴퓨터만 반환하도록 하는 문자열 필터 매개 변수입니다. 이 문자열을 -SiteName 매개 변수와 함께 사용하여 cmdlet에서 특정 서비스의 부하를 분산하는 컴퓨터만 반환하도록 지정할 수 있습니다.

-ActiveSince

선택적 매개 변수입니다. 특정 기간 동안 모니터링 데이터를 지속 또는 보고한 컴퓨터만 필터링하는 데 사용할 수 있는 DateTime 개체입니다. 예를 들어, 최근 24시간 동안의 데이터를 반환하려면 다음을 사용합니다. Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24).

-ApplicationObject

선택적 매개 변수입니다. 특정 응용 프로그램에 대한 모니터링 데이터를 지속 또는 보고한 컴퓨터만 필터링하는 데 사용할 수 있는 Microsoft.ApplicationServer.Management.Data.ApplicationInfo 개체입니다. 파이프 시나리오에서 사용하기에 가장 적합합니다(예: Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine).

다른 리소스

Windows PowerShell 스크립트의 원격 실행에 대한 자세한 내용을 보려면 about_Remote(https://go.microsoft.com/fwlink/?LinkId=194428)를 참조하거나 Windows PowerShell에서 help about_remote를 입력하십시오.

  2011-12-05