virtualization/microsoft

[Microsoft] RD Connection Broker에서 가상데스크톱이 사라짐

yueisu 2015. 1. 21. 20:03

작년 여름부터 고객사 3곳에서 거의 동일한 내용의 장애(?) 연락이 있었습니다.

내용인즉슨, 가상데스크톱을 라이브 마이그레이션했더니 RD Connection Broker에서 사라졌다는 것이었습니다. 

구체적으로는 가상데스크톱의 라이브 마이그레이션후, 가상데스크톱의 일부가 RD Connection Broker(정확히는 서버관리자의 Remote Desktop Management Service)의 가상데스크톱 리스트에서 사라졌으나 Hyper-V 관리자나 Failover Cluster 관리자에는 존재한다는 것입니다. RD Connection Broker의 리스트에서 사려졌으니 당연, 유저는 해당 가상데스크톱을 이용할 수 없게된거죠.


내용을 보자면 RD Connection Broker의 데이터베이스에서 가상데스크톱의 상태가 정상적으로 갱신이 되지않거나 RD Connection Broker의 서비스에 문제가 발생한 것 같았습니다. 이제까지의 경험상 대부분의 가상데스크톱 관련 트러블은 RD Connection Broker의 서비스에 문제가 발생했을 경우였습니다. 예를들어 메모리 이슈 등으로 서비스가 정상적으로 제공되지않은 경우처럼 말이죠.

이경우 대부분 RD Connection Broker의 서비스(Remote Desktop Connection Broker)를 재시작함으로써 해결되었죠.


하지만 이번에는 아니었습니다. RD Connection Broker의 서비스를 재시작해도 상황은 바뀌지않았습니다.

서포트에 연락, 조사를 한 결과 다음과 같은 방법으로 복구를 할 수 있었습니다.


우선 RD Connection Broker에서 가상데스크톱의 정보를 확인합니다.

아래의 명령어를 실행, RD가상화 호스트상의 가상머신 리스트를 확인하면 가상데스크톱의 경우 "컬렉션명"이 표시되어야 합니다.

PS C:\>Get-RDVirtualDesktop


하지만 위의 화면처럼 "컬렉션명"이 표시되지않는 가상데스크톱을 확인할 수 있는데, 이것이 사라진 녀석이죠.


RD Connection Broker의 데이터베이스를 확인해봤습니다.

확인하는 데이터베이스의 테이블은 다음과 같습니다.

rds.Target


위의 테이블으로부터 사라진 가상데스크톱의 "PoolID"를 확인합니다. (Pool명은 rds.Pool 테이블에서 확인할 수 있습니다)


확인한 결과, "PoolID"가 NULL이었습니다. 역시나...


<경고 데이터베이스를 직접 편집할 경우, 마이크로소프트사의 공식 지원을 받을 수 없을 경우가 있습니다. 또한 이 데이터베이스를 편집해도 개선되지않을 경우가 있습니다.>

복구방법은 간단합니다. NULL값을 해당 컬렉션(Pool) ID로 변경해주면 됩니다.

해당 컬렉션(Pool) ID로 변경후 Remote Desktop Management Service에서 해당 가상데스크톱을 확인할 수 있습니다.