.NET 4.6.1에 변경된 Multisubnet 기본 수신기 동작

  • Version : SQL Server 2012, 2014, 2016

 

SQL Server에서 AlwaysOn을 구성하여 사용할 때 리스너는 여러 개의 IP 주소를 감지하여 가용성 그룹에 정의되어 있는 IP주소에 연결을 시도하는데 간헐적으로 연결시간 초과가 발생할 수 있다. SQL 클라이언트의 기본 동작은 DNS에서 반환된 모든 IP 주소에 연결을 시도하는데 DNS 구성에 의존하기 때문에 몇 가지 문제가 발생할 수 있다. 가장 빈번하게 발생하는 문제가 정확하지 않은 IP 반환 또는 온라인되어 있지 않은 IP 반환이다. 기본적으로 TCP 연결 시도에 대한 기본 제한시간은 21초이며 IP 주소가 온라인 상태가 아닌 경우 다음 IP를 시도하기까지 21초를 기다려야 한다.

 

.NET 4.6.1에 업데이트된 내용은 SQL 클라이언트 제공자의 기본값이 MultiSubnetFailover=True 이며 이 동작은 모둔 IP 주소를 검색하고 병렬로 모든 연결을 시도한다. IP가 온라인 상태이면 성공적으로 연결이 되며 장애조치의 경우 가용성 그룹에 다시 연결하는 최적의 방법으로 동작한다.

 

자세한 업데이트 내용 및 .NET 패키지 다운로드는 아래 링크를 참고 한다.

http://blogs.msdn.com/b/dotnet/archive/2015/11/30/net-framework-4-6-1-is-now-available.aspx

 

새로운 릴리즈를 적용하지 않아도 이전의 SQL Server 2012 가용성 그룹 수신기 또는 장애조치 클러스터 인스턴스 연결을 사용할 때 MultiSubnetFailover=True를 지정하면 장애조치 클러스터 인스턴스 또는 모든 가용성 그룹에 대해 병렬로 연결을 시도하여 서브넷 장애조치가 시행 되는동안 신속하게 TCP 연결을 다시 시도한다.

 

[참고자료]

http://blogs.msdn.com/b/alwaysonpro/archive/2015/12/01/improved-multisubnet-listener-behavior-with-newly-released-sql-client-provider-in-net-4-6-1.aspx

 

2015-12-04 / 강성욱 / http://sqlmvp.kr

 

 

SQL Server, AlwaysOn, 가용성 그룹, Multisibnet, Failover Cluster, 장애조치, 고가용성, 멀티서브넷, SQL 클라이언트 공급자

SQL Server Failover Cluster 설치시 네트워크 이름으로 인한 설치 오류

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016

 

SQL Server Failover Cluster 인스터스를 설치할 때 발생하는 일반적인 오류에 대해서 다루어본다. SQL Server를 설치할 때 설치시 인스턴스 구성페이지에서 아래와 같은 오류 메시지를 쉽게 볼 수 있다.

 

설치 과정에서 SQL Server 네트워크 이름 및 인스턴스 이름을 입력 후 클릭하였을 때 이 시점에서 설치 프로그램이 몇 가지 유효성을 수행한다. 그 검증이 실패할 경우 화면 하단에 오류 메시지를 확인할 수 있다. 오류 메시지를 클릭하면 메시지에 포함된 몇 가지 추가 정보를 볼 수 있다.

 

대부분 네트워크 주소가 잘못되었거나 액세스 거부가 주된 이유이다. 이러한 상황에 대한 문제 해결방법은 오류 메시지의 마지막 부문이 무엇을 의미하는지에 따라 달라진다. 이제 설치 프로그램이 네트워크 이름의 유효성 검사를 수행하는 방법에 대해 간략히 살펴본다.

 

설치 프로그램이 NetServerGetInfo라는 Windows API를 호출하고 이때 두 개의 매개변수를 전달한다. 이때 API는 다양한 결과를 반환한다.

  1. API 호출이 OS 오류코드 53을 반환한 경우는 [네트워크 경로를 찾을 수 없습니다]라는 뜻이다. 이 경우는 설치 프로그램에서 제공하는 네트워크 이름을 현재 네트워크에 같은 이름을 사용하지 않기 때문에 사용하는 것이 좋다고 알려주는 것이다. 이 경우 설치 프로그램은 다음 단계로 진행 할 수 있다.
  2. API 호출이 성공을 반환한다. 이미 같은 이름을 가진 활성 컴퓨터가 있으며 설정 화면에서 제공되는 네트워크 이름을 사용할 수 없다. 중복되지 않은 다른 이름을 사용하여 해결 할 수 있다.
  3. API 호출에서 오류코드 RPC 1701(네트워크 주소가 잘못되었습니다.), 오류코드 5(액세스 거부)를 반환한 경우

 

3번의 경우 오류를 해결 하기 위해 Active Directory에 적절한 계정이 구성되어 있는지 확인이 필요하다. 또한 서로 다른 IP 주소로 네트워크 이름을 가리키는 DNS서버에 같은 이름으로 등록된 것이 없는지 확인해야 한다.

 

반환되는 오류코드를 확인하는 방법으로는 NetServerGetInfo를 호출하는 샘플 콘솔 응용프로그램을 만들어 설치시 사용한 동일한 파라메터를 호출하여 반한되는 결과값으로 분석할 수 있다.

 

 

[참고자료]

http://blogs.msdn.com/b/psssql/archive/2015/11/10/the-given-network-name-is-unusable-because-there-was-a-failure-trying-to-determine-if-the-network-name-is-valid-for-use-by-the-clustered-sql-instance.aspx

 

 

2015-11-12 / 강성욱 / http://sqlmvp.kr

 

SQL Server, MS SQL, Failover Cluster, SQL설치 오류, 장애조치 구성, NetServerGetInfo

 

+ Recent posts