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"
    

    경고

    STATE = stopped를 이용해 명령을 실행하면 엔드포인트가 중지되고 Always On 트래픽 흐름이 일시적으로 중단됩니다.

  • 네트워크/연결 문제가 있거나 방화벽에서 포트가 차단됩니다

    다음 명령을 사용하여 Node1에서 Node2로 및 Node2에서 Node1로 양방향으로 연결을 테스트합니다:

    $computer = $env:computername
    $port = "5022"                 # replace with the port from your database_mirroring_endpoints.
    Test-NetConnection -ComputerName $computer -Port $port 
    
  • 서비스/시작 계정은 도메인 사용자가 아니며 DC 및 원격 노드/포트(예: 5022)에 연결할 수 없습니다

    서비스 계정이 원격 노드에 연결할 수 있는지 여부를 테스트하려면 다음 단계를 수행합니다. 이 단계에서는 서비스 계정으로 로그인하지 않았다고 가정합니다:

    1. 시작>Windows PowerShell>을 선택하고 아이콘을 마우스 오른쪽 단추로 클릭합니다.

    2. 더 보기>다른 사용자로 실행>다른 계정 사용을 선택합니다.

    3. 서비스 계정 이름 및 암호를 입력합니다.

    4. Windows PowerShell이 열린 후 다음 명령을 입력하여 서비스 계정으로 로그인했는지 확인합니다:

      whoami
      
    5. 그런 다음, 원격 노드에 대한 연결을 테스트할 수 있습니다. 다음은 그 예입니다:

      $computer = "remote_node" # Replace with Naode name as per your environment.
      $port = "5022"            # Replace with the port from your database_mirroring_endpoints.        
      Test-NetConnection -ComputerName $computer -Port 5022
      

참고 항목