[환경]
2 node A/A Cluster (SQL Server)
[현상]
재 부팅 이후 그룹들이 한쪽 노드에 몰리고 나머지 노드에서 클러스터 시작이 않됨
이후 재 부팅을 하게 되면 정상 적으로 클러스터 서비스가 시작되나 이네 Error 1721 오류가 발생하면서 “리소스 부족” 메세지와 함께 클러스터에 “!”가 표시됨
또한 클러스터 로그는 아래와 같은 메세지를 발생 시킵니다.
[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1753.
[JOIN] Sponsor ServerName is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor ServerName is invalid, status 1753.
[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1753.
[JOIN] Spawning thread to connect to sponsor XXX.XXX.XXX.XXX
[JOIN] Asking XXX.XXX.XXX.XXX to sponsor us.
[JOIN] Waiting for all connect threads to terminate.
[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1722.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1722.
[JOIN] All connect threads have terminated.
[JOIN] Unable to connect to any sponsor node. [INIT] Failed to join cluster, status 53
[설명]
클러스터 연결을 위해서는 RPC 포트를 이용하게 됩니다. 이때 이 RPC 포트가 100개 미만일 경우 위와 같이 리소스가 부족하다는 메세지가 뜨게 됩니다. 기본값은 10개 입니다. 즉 위의 경우에는 클러스터가 Active 노드와의 통신을 하기 위한 RPC 포트가 부족하기 때문에 발생하는 메세지 입니다.
[해결 방안]
HKEY_LOCAL_MACHINE\Software\Microsoft\RPC\Internet 레지스트리에 보면 아래와 같은 레지스트리가 있습니다.
Ports: REG_MULTI_SZ: 4000-4009
PortsInternetAvailable: REG_SZ: Y
UseInternetPorts: REG_SZ: Y
지금 위의 예는 기본 값에 해당합니다.
위에서 Ports 값을 5000-5099 로 변경하면 포트 부족으로 인한 문제가 해결 되게 됩니다.
[추가 1]
여러분이 RPC를 Heavy 하게 사용하는 서버를 운영하고 있다면 (예 Dcom 등등) 이 경우에는 포트 갯수를 100개 이상으로 늘려주셔야 할 수 도 있습니다.
[추가 2]
Windows에서 사용하는 포트 갯 수 늘리기
Windows의 기본 값은 약 5000개의 포트를 사용하는 것입니다. 해당 포트는 65000여개 까지 늘려줄 수 있습니다.
아래의 레지스트리 값을 수정하시면 됩니다. (없을 경우 생성하시면 됩니다.)
HKLM\System\currentcontrollset\services\tcpip\parameters
MasUserPort
REG_DWROD : 65534