Always On 가용성 그룹 내에서 가용성 복제본 연결이 해제됨
적용 대상: SQL Server
소개
- 정책 이름: 가용성 복제본 연결 상태
- 문제: 가용성 복제본의 연결이 끊어짐
- 범주: 위험
- 패싯: 가용성 복제본
설명
이 정책은 가용성 복제본 사이에서의 연결 상태를 확인합니다. 가용성 복제본의 연결 상태가 DISCONNECTED
인 경우 정책은 비정상 상태에 있습니다. 그 외에는 정책이 정상 상태입니다.
가능한 원인
보조 복제본이 주 복제본에 연결되어 있지 않습니다. 상태는 DISCONNECTED
입니다. 이 문제는 다음 이유 중 하나로 인해 발생할 수 있습니다.
- 연결 포트가 다른 애플리케이션과 충돌할 수 있습니다.
- 암호화 유형 또는 알고리즘이 일치하지 않습니다.
- 연결 엔드포인트가 삭제되었거나 시작되지 않았습니다.
- 네트워크/연결 문제가 있거나 방화벽에서 포트가 차단됩니다.
- 서비스/시작 계정은 도메인 사용자가 아니며 DC 및 원격 노드/포트(예: 5022)에 연결할 수 없습니다.
가능한 해결 방법
주 및 보조 복제본(replica) 인스턴스에 관한 데이터베이스 미러링 엔드포인트 구성을 확인해서 일치하지 않는 구성을 업데이트합니다. 또한 포트가 충돌하는 경우 포트 번호를 변경합니다.
이 문제에 대한 해결 방법은 다음과 같습니다:
연결 포트가 다른 애플리케이션과 충돌할 수 있음
다음 명령을 실행하여 포트 문제를 진단합니다.
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT type_desc, port FROM sys.tcp_endpoints WHERE type_desc = 'DATABASE_MIRRORING'; "
이전 명령은 다음 명령에서 사용해야 하는 포트 번호를 반환합니다.
$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id
암호화 유형 또는 알고리즘이 일치하지 않음
두 서버에서 모두 이 명령을 실행하고, 암호화를 비교하고, 둘 다 동일한지 확인합니다.
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
연결 엔드포인트가 삭제되었거나 시작되지 않았음
미러링 엔드포인트가 종료되고 시작되면 다음 명령을 실행합니다.
$server_name = "server_instance" #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
엔드포인트가 연결에 응답하지 않거나 실행되고 있지 않은 것으로 의심되는 경우 다음 명령을 실행합니다.
$server_name = "server_instance" #use your SQL Server instance here
$server_name = "hadr_endpoint" #replace with your endpoint name
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = stopped"
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = started"
Warning
STATE = stopped
를 이용해 명령을 실행하면 엔드포인트가 중지되고 Always On 트래픽 흐름이 일시적으로 중단됩니다.
네트워크 또는 연결 문제 또는 방화벽에서 포트가 차단된 경우
다음 명령을 사용하여 Node1
에서 Node2
로 및 Node2
에서 Node1
로 양방향으로 연결을 테스트합니다:
$computer = "remote_node" # replace with node name in your environment
$port = "5022" # replace with the port from your database_mirroring_endpoints
Test-NetConnection -ComputerName $computer -Port $port
계정이 도메인 사용자가 아니며 DC 및 원격 노드에 연결할 수 없습니다.
서비스 계정이 원격 노드에 연결할 수 있는지 여부를 테스트하려면 다음 단계를 수행합니다. 이 단계에서는 서비스 계정으로 로그인하지 않았다고 가정합니다.
시작>Windows PowerShell>을 선택하고 아이콘을 마우스 오른쪽 단추로 클릭합니다.
더 보기>다른 사용자로 실행>다른 계정 사용을 선택합니다.
서비스 계정 이름 및 암호를 입력합니다.
Windows PowerShell이 열리면 다음 명령을 입력하여 서비스 계정으로 로그인했는지 확인합니다.
whoami
그런 다음 다음 예제에서와 같이 원격 노드에 대한 연결을 테스트할 수 있습니다.
$computer = "remote_node" # replace with node name in your environment $port = "5022" # replace with the port from your database_mirroring_endpoints Test-NetConnection -ComputerName $computer -Port $port