WorkSpaces가 Unhealthy 상태일때 원격에서 트러블슈팅하는 방안

2분 분량
콘텐츠 수준: 중급
0

WorkSpaces가 '접속불가' 상태일 때 RDP로 로그인하여 관련 서비스를 재시작하거나 또는 콘솔에서 재부팅하여 문제를 해결합니다. 다만 이러한 트러블슈팅이 어려운 환경일 경우 아래의 방법을 사용하여 먼저 트러블슈팅을 시도해 볼수 있습니다.

WorkSpaces의 WSP Adapter for DCV 서비스와 DCV Server 그리고 SkylightWorkSpacesConfigService가 정상적으로 동작하지 않을 경우 'Unhealthy' 상태가 될수 있습니다. 그리고 'Unhealthy' 발생하는 주된 원인으로는 리소스의 부족 또는 보안프로그램의 영향일 수 있습니다. 다만 'Unhealthy' 상태 일지라도 서비스를 재시작하는 것만으로 문제가 해결되는 경우가 많아 스크립트를 작성했습니다.

아래는 테스트 환경에서 Unhealthy 환경을 만든 후 원격에서 트러블 슈팅을 한 방안을 소개합니다.

1.서비스 중지:

먼저 테스트 환경에서 WSP Adapter for DCV 서비스와 DCV Server 그리고 SkylightWorkSpacesConfigService를 중지하였습니다.

여기에 이미지 설명 입력

2.콘솔에서 상태 값 확인:

여기에 이미지 설명 입력

3.스크립트 저장 후 실행 그리고 WorkSpaces의 도메인을 관리하는 인스턴스에 도메인 관리인 계정으로 로그인합니다.
아래의 스크립트를 .ps1 파일로 저장한 뒤 실행합니다. WSP서비스는 DCV서비스의 종속서비스로 WSP서비스 재시작 시 DCV서비스도 재시작됩니다. PCoIP프로토콜일 경우 아래의 WSP를 PCoIPAgent 로 변경하면 됩니다.

$remoteComputerName = Read-Host "Please enter a remote computer name"
$credential = Get-Credential -Message "Enter credentials for remote computers"
$serviceName = @(
	"WSP" 
	"SkyLightWorkspaceConfigService"
)


foreach ($serviceName in $serviceName) {
Invoke-Command -ComputerName $remoteComputerName -Credential $credential -ScriptBlock {
    param($serviceName)
    Restart-Service -Name $serviceName -Force
} -ArgumentList $serviceName
}

스크립트를 저장후 실행하면 컴퓨터 이름을 입력하는 창이 뜹니다. 콘솔에서 확인 후 컴퓨터 이름을 넣어줍니다. 아래의 블로그를 참조하여 미리 WorkSpaces의 Report 엑셀파일을 가지고 있다면 보다 쉽게 컴퓨터 이름을 찾을 수 있습니다. (https://aws.amazon.com/ko/blogs/publicsector/reporting-amazon-workspaces-deployments-data-insights/)

여기에 이미지 설명 입력

그리고 관리자 계정을 제공합니다.

여기에 이미지 설명 입력

4.실행 후 5분 정도 기다린뒤 'Available' 상태로 변경되었는지 확인합니다. (헬스 체크 주기가 5분이라 최장 5분까지 기다려야 변경될 수 있습니다.)

여기에 이미지 설명 입력

5.WorkSpaces Client로 접속한뒤 관련 서비스가 실행 중임을 확인합니다.

여기에 이미지 설명 입력

6.만약 5분 후에도 'Available' 상태로 변경이 안된다면 아래의 스크립트를 이용하여 OS를 재부팅 해볼수 있습니다. (콘솔에서 리부팅 시 Shutdown&Start 동작 및 내부 스크립트가 동작하여 시간이 오래 걸릴수 있고 ERROR_Booting,ERROR_Starting 상태일 경우 콘솔에서도 재부팅이 되지 않기에 아래의 스크립트를 이용하여 OS 재부팅를 시도해 볼수 있습니다.)

$ComputerName = Read-Host "Please enter a remote computer name"

Restart-Computer -ComputerName $ComputerName -Force

참고로 파워쉘 명령어인 PSSession과 Restart-Computer는 WinRM 명령어를 사용하기에 WinRm Port(5985,5986)가 열려있어야 하며, 해당 서비스가 가동중이여야 합니다. 테스트는 Managed AD를 관리하는 인스턴스에서 도메인 관리자 계정으로 스크립트를 실행하였으며, WorkSpaces는 Windows 2016/2019 Public AMI에서 테스트 하였습니다.

[+]PSSession https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enter-pssession?view=powershell-7.4

[+]Restart-Computer https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/restart-computer?view=powershell-7.4

profile pictureAWS
지원 엔지니어
게시됨 일 년 전867회 조회