2007/09/16

SQL Server 클러스터 메모리 할당

- 다음 내용은 Microsoft TechNet Magazine Q&A 내용중 SQL Server 와 관련된 일부 항목을 발췌하였습니다. -


질문:


액티브 3중 클러스터(네 번째 노드는 유휴 노드임)를 사용하고 있는데, SQL Server의 최대 서버 메모리를 총 메모리의 3분의 1로 설정하는 것이 좋을까요, 아니면 SQL Server 메모리를 최대한 사용하고 장애 조치 중에는 오류가 발생한 인스턴스에서 필요한 메모리를 확보하도록 하는 것이 좋을까요?

예를 들어 네 개의 서버 중에서 두 개의 서버가 다운될 수 있으므로 오류가 발생하는 인스턴스에 대해 사전에 계획을 세우는 것이 좋을 것 같습니다. 이와 같은 경우에 대비하여 다섯 개의 SQL Server 인스턴스와, 각각에 대한 한 개의 분석 서비스 인스턴스를 할당하고 장애 조치를 위해 다른 두 서버를 사용할 수 있습니다.

하지만 SQL Server가 서버의 RAM을 모두 사용하는 상태에서 새 SQL Server 인스턴스가 시작된다면 원래 SQL Server 인스턴스의 메모리는 어떻게 되나요? 이 경우 한 노드만 가동되어 모든 SQL Server 인스턴스가 이 노드에서 실행되는 최악의 경우가 발생할 수 있으므로 이에 대한 계획을 세워야 할 것 같은데요.?


답변:

최대 서버 메모리 값은 시스템에서 사용할 수 있는 총 메모리보다 낮게 설정하는 것이 가장 좋다는 것이 일반적인 정설입니다. 하지만 해당 환경에서 총 메모리의 3분의 1이라는 값이 최적의 구성인지에 대해서는 좀 더 신중하게 검토해야 합니다.

클러스터에 있는 네 개의 서버 중 세 개의 서버가 동시에 다운되어 세 개의 SQL Server 인스턴스가 네 번째 노드에서 실행되는 상황이 우려된다고 하셨는데, 이와 같은 상황이 발생할 가능성은 매우 낮습니다.

대부분의 경우 각 노드의 사용 가능한 메모리를 모두 사용하도록 각 인스턴스를 구성하는 것이 좋습니다. 각 노드에 32GB의 RAM이 있다고 가정하면 각 인스턴스의 최대 서버 메모리를 28GB로 설정하는 것이 적절합니다.

그러면 노드에 오류가 발생할 경우 해당 노드에서 실행되는 인스턴스가 패시브 노드로 장애 조치되어 이 노드에서 사용 가능한 28GB의 메모리에 액세스할 수 있습니다. 다른 두 인스턴스는 영향을 받지 않은 채 클러스터의 다른 두 노드에서 계속해서 실행됩니다.

다섯 개의 SQL Server 인스턴스와 한 개의 분석 서비스 인스턴스가 있는 4노드 장애 조치 클러스터에 대해 말씀하셨는데, AWE(Address Windowing Extensions)와 함께 SQL Server 2000을 실행하는 경우 관계형 엔진이 확보한 메모리를 해제하려 하지 않으므로 관계형 엔진 인스턴스의 몇몇 메모리 최대값을 신중하게 선택하여 설정해야 합니다.

AWE 사용 여부에 관계없이 대규모 주소 공간에 액세스할 수 있는 SQL Server 2005 및 64비트 인스턴스라는 보다 융통성 있는 환경에서는 이러한 상황이 달라집니다. AWE를 사용하더라도 메모리 사용이 동적이어서 필요한 경우 메모리를 해제할 수 있습니다.
 
따라서 컴퓨터에서 새 인스턴스가 새로 시작되는 경우 원래 SQL Server 인스턴스와 장애 조치 상황에서 확보한 메모리에 어떤 일이 발생하는지는 SQL Server 2000과 SQL Server 2005 중 어떤 버전을 실행하고 있는지와 AWE를 사용하는지 여부에 따라서 달라집니다.

최악의 경우에 대비하여 계획을 세우는 것은 물론 원칙적으로는 훌륭한 생각입니다. 하지만 실제 환경에서는 시스템을 오버 엔지니어링한 경우가 아니라면, 다섯 개의 SQL Server 관계형 엔진 인스턴스와 한 개의 분석 서비스 인스턴스를 실행하는 클러스터에서 네 개의 노드 중 세 개가 다운될 가능성은 거의 없습니다.

이 경우 나머지 한 개의 노드는 비슷한 성능 수준으로 원래 인스턴스를 실행할 수 있을 만큼 충분한 CPU 리소스를 사용할 수 없게 됩니다. 따라서 노드 한 개 정도는 작동되지 않더라도 최적의 성능이 유지되지만 두 개 이상의 노드가 작동되지 않는 경우에는 약간의 수동 작업이 필요하도록 솔루션을 엔지니어링하는 것이 좋습니다.

이렇게 하면 HA(고가용성)를 지원하는 동시에 값비싼 리소스를 적절히 활용할 수도 있습니다.

마지막으로 SQL Server 2005의 경우 최종 사용자가 최대 8개의 노드를 수용하도록 클러스터를 확장할 수 있습니다. SQL Server 2000에서는 4노드 클러스터까지만 지원됩니다.


http://www.microsoft.com/technet/




15-TechNetB_masthead_ltr.gif

댓글 없음:

댓글 쓰기

가장 많이 본 글