2012-07-04 5 views
2

원칙적으로 SQL Server 장애 조치 (failover) 클러스터는 응용 프로그램이 SQL Server가 실제로 서버 클러스터라는 사실을 잊어 버릴 수있는 가상 컴퓨터로 표시되므로 원칙적으로 데이터베이스 액세스 계층 내에 추가 논리가 필요하지 않습니다. 응용 프로그램.SQL Server 장애 조치 (failover) 클러스터 데이터베이스 액세스 계층의 모범 사례는 무엇입니까?

내 질문은 위의 사실 여부 및 장애 조치 (failover) 클러스터를 사용할 때 DB 액세스 계층이 작동하는 방법에 대한 모범 사례 수정이 있는지 여부입니다. 예 : 아마도 장애 조치가 발생하면 DB 액세스 계층에서 시간 초과 오류가 발생할 수있는 지연이 발생할 것입니다. 우리는 해당 계층에 논리를 두어 시간 제한 발생시 일부 DB 호출을 시도하려고합니다 (이미 재시도 논리가 있음) DB 교착 상태의 경우). 이것은 응용 프로그램에 영향을주는 오류로부터 또 다른 레벨의 보호를 제공합니다.

장애 조치 (failover) 스위치가 발생하여 높은 응용 프로그램 수준에서 서비스 호출시 시간 초과 오류가 발생하면 완벽한 전환이 이루어지지 않습니다. 우리는 단순히 장애 조치를 허용하는 기간에 제한 시간을 설정해야합니까?

감사합니다. 원칙적으로

+2

나는 dba.stackexchange.com이이 질문에 더 좋은 장소라고 생각한다. –

+1

실제로이 질문은 일반적으로 개발자/프로그래머의 책임 인 데이터베이스 액세스 계층에 대한 것이므로 여기에 속한 질문에 대한 논쟁이있을 수 있습니다. – redcalx

+2

아니요, 여기 있습니다. 이것은 프로그래밍 문제이며 dba 문제는 아닙니다. – TomTom

답변

1

는 SQL Server 장애 조치 클러스터는 응용 프로그램이 SQL 서버 실제로 서버

의 클러스터는 사실을 잊기에 연결할 수있는 가상 머신 자체를 제공? 정말? 그것은 문서와 모순됩니다. 클러스터는 기본적으로 서로 다른 서버에 설치되는 가상 IP가 아닌 움직이는 IP 주소입니다.

원칙적으로 응용 프로그램의 데이터베이스 액세스 계층에는 추가 논리가 필요하지 않습니다.

예, 아니오 - 실패한 노드는 진행중인 트랜잭션과 연결을 모두 죽이지 않으므로 분명히 CLIENT가 이에 대응하고 다시 시도 할 수 있어야합니다. 연결이 끊어져 클라이언트가 중단되면 재 시도하지 않더라도 2 ~ 2 초 후에 서버에 다시 연결할 수 있습니다.

장애 조치를 허용하는 기간에 우리의 시간 제한을 설정해야합니까?

아니요, 진행중인 트랜잭션 상태가 손실되면 페일 오버로 연결이 끊어집니다. 연결을 다시 설정하고 트랜잭션에서 실행 된 모든 Sql 명령을 다시 시작해야합니다.

보안상의 이유로 클러스터링이 좋지 않으며 미러링을 사용해야합니다. 장애가 발생한 클러스터 노드가 데이터베이스 파일을 손상시켜 장애 조치에 실패 할 위험이 있습니다. 미러링이 더욱 강력합니다.

+0

"SQL Server 장애 조치 (Failover) 클러스터 된 인스턴스는 단일 컴퓨터 인 것처럼 네트워크에 표시되지만 한 노드가 사용할 수 없게 된 경우 한 노드에서 다른 노드로 장애 조치 (failover)를 제공하는 기능이 있습니다." - http://technet.microsoft.com/en-us/library/ms191309에서 가져 오기.aspx – redcalx

+0

여전히 가상 머신이 아닙니다. 10 개의 IIS 실행 컴퓨터가 NLB와 함께 "네트워크에 하나 인 것처럼 보입니다"라고 지정할 수 있습니다. 그리고 sthey는 가상 컴퓨터가 아닙니다. 모든 것은 그들이 동일한 IP Addres (네트워크에 나타남)를 사용한다는 것입니다. – TomTom

+0

포인트가 찍혔습니다. 여러 개의 별개의 서버 (하드웨어 또는 가상)에서 제공되는 서비스입니다. 사실상 단어의 넓은 의미에서 가상이라는 단어를 사용했습니다.이 단어는 문맥에 따라로드 된 단어입니다. – redcalx