TOPIC/DB

[MSSQL Server Always ON 가용성 그룹 구성 on Azure VMs] #04 Always On 가용성 그룹 구성

admin_cloud 2024. 4. 2. 17:06

안녕하세요. TAK 입니다:)

 

해당 포스팅을 마지막😶으로 시리즈의 막을 내리며, 

이번에는 SQL Server 고가용성을 위한  "#04 Always On 가용성 그룹"에 관한 내용을 다룹니다.

 

#01 ~ 03 진행한 구성은 계속되는 과정에서 필수적인 환경으로 아래 링크를 참고하여 함께 팔로잉 해주세요!

 

[MSSQL Server Always ON 가용성 그룹 구성 on Azure VMs] #01 용어 정리 및 구성도 공유 그리고 AD 구축

안녕하세요. TAK 입니다:) 🌱봄이 부쩍 가까워진 3월에 다시 인사드립니다(^꾸_벅^)🌱 회사 업무로 Azure VM 기반 MSSQL FCI 구성한 적이 있는데.. 이후에 Always ON 가용성 그룹 구성이 자꾸 아른?..거려

with-cloud.tistory.com

 

[MSSQL Server Always ON 가용성 그룹 구성 on Azure VMs] #02 Failover Cluster 구성

안녕하세요. TAK 입니다:) 일교차가 큰 요즘.. 다들 잘 지내고 계신가요? 감기 조심하세요!😷 이어지는 포스팅인 만큼 흐름을 이어가고자 빠르게? 다시 찾아왔습니다👻 (저만의 초기 감기 꿀팁을

with-cloud.tistory.com

 

[MSSQL Server Always ON 가용성 그룹 구성 on Azure VMs] #03 SQL Server 구성

안녕하세요. TAK 입니다:) 벚꽃이 개화하면서, 봄이 가까워졌음을 알리는 요즘 인사드립니다🌸 (아직까지 일교차가 크기에 건강 유의하셔요 💪) 이번에는 실제 SQL Server 설치과 구성을 위한 단계

with-cloud.tistory.com

 

그럼 오늘도 힘차게 출발하겠습니다🙌

 


Contents

    1. 가용성 그룹 생성 전, 구성 사항

    1-1. Enable Always On 가용성 그룹

    : 사전 단계에서 SQL Server 정상 설치되어 있으며, SSMS를 통해 접근하게 됩니다. 

    이때, Always On High Availability 클릭하게 된다면, SQL Server Configuration Manager를 통해서 사용가능한 상태로 설정하는 에러와 함께 가이드하기 때문에 Enable 하는 사전 작업을 진행합니다.

     

    • SQL Server Configuration Manager 실행

     

    • SQL Server Servies > SQL Server(MSSQLSERVER) > 오른쪽 마우스 클릭 후, Properties(속성)

     

    • Enable Always On Availability Groups 

     

    • 구성 사항을 서비스에 적용하기 위해, Restart

     

    → 상기 작업은 각 SQL Server(복제본 서버)에서도 동일하게 Enable 적용하여야 합니다.

     

    1-2. 데이터베이스 백업

    : 가용성 그룹 생성 전, 요구 사항(가용성 데이터베이스)으로 실제 가용성 그룹 생성 후에 데이터베이스를 추가하기 위해서는 전체 데이터베이스 백업을 하나 이상 소유하여야 합니다.

     

    이는 다음과 같은 이유로 필요로 하게 됩니다.

     

     - 가용성 그룹의 초기 데이터 동기화: 가용성 그룹을 구성할 때, 가용성 그룹에 속하는 모든 데이터베이스의 초기 동기화를 위해 백업이 사용됩니다. 이러한 초기 백업은 주요 데이터베이스의 백업을 사용하여 데이터베이스의 상태를 가용성 그룹의 다른 노드로 전송합니다. 이는 가용성 그룹의 복제된 데이터베이스들이 동일한 출발점에서 시작할 수 있도록 보장합니다.

     - 가용성 그룹의 가동성 보장: 가용성 그룹을 구성하면 데이터베이스의 가용성과 장애 조치 기능을 향상시키는 것이 목적입니다. 초기 백업을 설정함으로써 데이터 손실을 방지하고 장애 발생 시 데이터베이스를 복구하는 데 필요한 준비를 합니다.

     - 복구 지점의 설정: 초기 백업은 가용성 그룹의 복구 지점을 설정하는 데 사용됩니다. 복구 지점은 장애 발생 시 데이터베이스를 복구할 때 사용되는 시점을 나타냅니다. 초기 백업을 설정하면 이러한 복구 지점을 명확하게 정의할 수 있습니다.

     - 성능 및 안정성: 초기 백업을 사용하여 가용성 그룹을 생성하면 데이터 전송 속도를 최적화하고 데이터 동기화 프로세스를 안정화할 수 있습니다. 또한 가용성 그룹을 생성하는 동안 발생할 수 있는 네트워크 문제 또는 장애에 대비하여 데이터의 안정성을 높일 수 있습니다.

     

    공유 백업 포함하여 구선 전 고려해야 할 사항들은 아래 Docs를 참고해 주세요.

     

    가용성 그룹: 필수 구성 요소, 제한 사항 및 권장 사항 - SQL Server Always On

    SQL Server에 Always On 가용성 그룹을 배포하기 위한 필수 조건, 제한 사항 및 권장 사항에 대한 설명입니다.

    learn.microsoft.com

     

    1-2-1.  공유 폴더 생성

    • SQL Server의 Server Manager > Computer Management

     

    • Shared Folders > Shares > New Share

     

    • 공유 폴더 Permission > 관리자 계정 선

     

    • 공유 폴더 구성 및 생성 완료 확인

     

    1-2-2. SQL Server의 (Sample)DB의 백업 설정

    • 사전에 생성한 SampleDB에 대한 Back Up 진행

     

    2. 가용성 그룹

    2-1. 가용성 그룹 만들기

    • Always On High Availability > New Availability Group Wizard

     

    • 가용성 그룹 이름 입력

     

    • 가용성 그룹에 포함할 데이터베이스 선택
      • 사전에 백업을 진행하였기에 조건에 충족한다는 멘트를 확인할 수 있습니다.

     

    2-2. 가용성 그룹 생성(+ Add Replica)

    : 위 단계와 이어지는 단계로 해당 작업은 SQL-01, 즉 Primary(주) 서버에서 진행한 단계로 가용성 그룹에 추가로 Secondary(보조) 서버를 추가하는 과정입니다.

     

    우선 주(Primary) 서버와 보조 혹은 복제(Secondary) 서버의 네트워크 설정을 진행합니다.

    2-2-1. SQL Server 간 네트워크 통신을 위한 설정

    : 각 SQL Server들이 가용성 그룹으로 묶고, 네트워크 통신을 하기 위한 작업입니다. (모든 SQL Server에서 동일하게 진행)

     

    • SQL Server Configuration Manager

     

    • SQL Server Network Configuration > Protocols for MSSQLSERVER > TCP/IP Enable

     

    • SQL Server Serives 재시작

     

     

    2-2-2. 보조 혹은 복제(Replica) 서버 가용성 그룹에 추가

    •  Specify Replicas > Add Replica...

     

    • SQL-02, SQL-03 서버 연결

     

    • 정상적으로 등록됨을 확

     

    • Endpoints 확인

     

    • Listener 설정
      • 추후 Azure Load Balancer의 IP로 Cluster의 Listener 설정할 예정으로 현 단계에서 Do not create 선택

     

    • 위 단계에서 구성한 공유 폴더를 [Full database and log backup] 파일 저장 경로로 지정

     

    • 구성 적용 전 유효성 확인

     

    • 가용성 그룹 최종 Summary 확

     

    2-2-3. 가용성 그룹 확인

    : 지금까지 구성한 값들이 정상적으로 적용되어 생성되었는지 확인합니다.

     

     

    3. Listener(수신기)

    : 장애 조치(failover) 클러스터에서 가용성 그룹 Listener(수신기)를 생성합니다. Listener(수신기)는 DB의 V(Virtual)IP로 해당 IP로 Failover 시, Cluster의 Master 혹은 Slave의 Role이 바뀌어도 해당 IP를 그대로 사용하기 위해 사용되며, 해당 IP 주소는 사용하지 않는 IP를 입력하여합니다.

    (**Azure의 경우, 브로드캐스트 하지 못해 Internal Load Balancer를 연결해야 합니다.) 

     

    3-1. Azure Load Balancer 생성 및 Clienc Access Point 설정

    • Internal Load Balancer 구성
      • 해당 과정에서는 LB 배포하는 과정은 생략되어 있음을 참고해 주세요.
      • Internal Load Balancer의 경우, 프라이빗 형식으로 서브넷 내 배포되며, 서브넷 대역의 사설 IP를 할당받습니다.

    • 생성한 Internal Load Balancer의 IP(172.168.1.59)의 값을 수신기 IP로 등록
      • 가용성 그룹 선택 > 클라이언트 액세스 지점 확인

     

    더보기

    * Fail over Cluster의 Network 정보 확인

     

    • 클라이언트 액세스 포인트 지정

     

    • 구성 값 반영 여부 확인

     

    • Dependency Report 확인
      • 위 단계에서 구성한 값들을 바탕으로 Fail over 조치가 이뤄질 있도록 종속성이 올바르게 연결되었는지 확인 

     

    3-2. Listener Online(Up) 구성

    : 해당 작업을 통해 수신기 상태를 온라인으로 전환합니다. 

     

    PowerShell 명령어를 통해 클러스터 매게 변수 설정되며, 옵션은 다음과 같습니다.

    해당 옵션값은 사용자 환경에 맞게 변수를 업데이트하여 사용합니다.

     

     - $ClusterNetworkName은 네트워크를 선택하여 장애 조치(failover) 클러스터 관리자에서 이름을 찾습니다. 네트워크를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. $ClusterNetworkName은 일반 탭의 이름 아래에 있습니다.

     

     - $IPResourceName은 장애 조치(failover) 클러스터 관리자의 IP 주소 리소스에 지정된 이름입니다. 이 이름은 역할을 선택하여 장애 조치(failover) 클러스터 관리자에서 찾을 수 있습니다. SQL Server AG 또는 FCI 이름을 선택하고, 서버 이름 아래에서 리소스 탭을 선택하고, IP 주소 리소스를 마우스 오른쪽 단추로 클릭하고, 속성을 선택합니다. 올바른 값은 일반 탭의 이름 아래에 있습니다.

     

     - $ListenerILBIP는 가용성 그룹 수신기에 대해 Azure 부하 분산 장치에서 만든 IP 주소입니다. SQL Server AG/FCI 수신기 리소스 이름과 동일한 속성 페이지의 장애 조치(failover) 클러스터 관리자에서 $ListenerILBIP를 찾습니다.

     

     - $ListenerProbePort는 가용성 그룹 수신기에 대해 Azure 부하 분산 장치에서 구성한 포트(예: 59999)입니다. 사용하지 않는 모든 TCP 포트는 유효합니다.

     

    • 명령어 실행
    $ClusterNetworkName = "Cluster Network 1" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "IP Address 172.168.1.59" # The IP address resource name.
    $ListenerILBIP = "172.168.1.59" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ListenerProbePort = 59999
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

     

    • 설정 이후, [Start Role] 클릭하여 온라인 상태로 전환

     

    • 가용성 그룹의 수신기(Listener) 정보 확인

     

    • MSSQL Always On 가용성 그룹을 위한 Azure의 NSG 설정값 정보
      • SQL Server: 기본 인스턴스에 대해 1433
      • 데이터베이스 미러링 엔드포인트: 5022 또는 사용 가능한 모든 포트
      • 가용성 그룹에 대한 부하 분산 장치 IP 주소 상태 프로브: 59999 또는 사용 가능한 포트
      • 클러스터 코어에 대한 부하 분산 장치 IP 주소 상태 프로브: 58888 또는 사용 가능한 포트

     


     

    지금까지 "SQL Server Always On 가용성 그룹 on Azure"Always On 가용성 그룹 구성 단계를 알아보았습니다. 이번 과정을 마지막으로 시리즈의 막을 내리겠습니다!

     

    이번 포스팅을 준비하면서 여러 구성과 설정 등 고려해야 할 점들 파악하면서 많은 것들을 배울 수 있는 시간이었습니다!

    (함께 따라오시는 분들도 그렇길 바라면서...ㅎㅎ)

     

    (!!많관부!!) 다음에도 유익한 주제로 찾아뵙겠습니다🙉

     

    여러분의 생각하는 부족한 점, 궁금한 점 등 자유로운 의견을 남겨주세요!

    728x90
    320x100
    SMALL