TOPIC/DB

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

admin_cloud 2024. 3. 18. 15:08

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

 

🌱봄이 부쩍 가까워진 3월에 다시 인사드립니다(^꾸_벅^)🌱

 

회사 업무로 Azure VM 기반 MSSQL FCI 구성한 적이 있는데.. 이후에 Always ON 가용성 그룹 구성이 자꾸 아른?..거려서 작성하게 되었다는 그런 이상한 출발점으로 이번 포스팅을 준비했습니다!

 

그럼 "Azure 인프라 내에서 MSSQL과 Failover를 위한 Always ON 가용성 그룹 구성"에 대해 찐~하게 살펴보겠습니다!

 

찐~한만큼 구성의 단계별로 나눠서 포스팅할 예정입니다. 

(설정에 따라 구성이 많이 달라질 수 있는 점 참고해 주세요.)

자, 그럼 본격으로 1부 시작하겠습니다!


"실제 테스트 구축 전, 우리가 함께 구성할 서비스에 대한 개념 정리 먼저 해보겠습니다."

 

Contents

     

    1. MSSQL 이란?

    https://www.commvault.com/wp-content/uploads/2019/08/sql-server_logo.jpg?quality=80&w=930

     

    : MSSQL이란, Microsoft SQL Server의 줄임말로 대표적인 RDBMS(Relational DataBase Management System) 중 하나입니다. 관계형 데이터베이스(RDB)는 테이블, 행(레코드 또는 튜플), 열(속성)의 정보를 구조화하는 방식입니다. RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있습니다.  즉, RDBMS는 RDB를 생성, 관리, 업데이트 등에 사용되는 프로그램으로 볼 수 있습니다.

     

    특징은 다음과 같습니다.

    - MySQL과 달리 오픈소스가 아님으로 라이센스 구매 필요한 Microsoft의 상용 제품

    - Transact-SQL 또는 T-SQL 사용(표준 SQL + 추가 기능)

    - 위와 같은 이유로 주기적인 업데이트를 통해 데이터 암호화, 접근제어, 감사 로깅 등 보안에 강점

    - 많이 사용되는 DB 제품으로 관련 정보를 쉽게 찾을 수 있으며, 트러블슈팅 등 다양한 지원에도 유리

    - MSSQL은 중앙 집중식 데이터베이스 제어로 고가용성 솔루션이 있으며, 백업 및 복구 기능 제공

    - 주로 Windows OS를 통해 실행되며, 높은 호환성

    - SSMS(SQL Server Management Studio) 혹은 Azure Data Studio와 같은 Tool을 통해 액세스 및 사용 가능

    - RDBMS는 DBMS의 한 유형(ex. MySQL, MariaDB, Oracle 등)

     

    1-1. 고가용성(High Availability) 솔루션

    : 고가용성(HA, High Availability)이란, 오랜 기간 동안 지속적으로 정상 운영 가능한 상태를 말합니다.

    MSSQL에서는 대표적으로 아래 두 가지 고가용성 솔루션을 제공하고 있습니다.

     

    아래 두 고가용성의 설명은 MSSQL on Azure를 가정합니다.

    1-1-1. FCI(Failover Cluster Instances)

    https://i0.wp.com/www.omegamadlab.com/wp-content/uploads/2020/07/S2DFCI-1.png?w=741&ssl=1

     

    • FCI는 기존의 Windows 클러스터링 기술을 사용하여 SQL Server를 실행하는 인스턴스
      • 클러스터 내에서 하나의 노드에 장애가 발생하면 다른 노드로 자동으로 이동하여 서비스 지속 가능
    • 여러 대의 서버(노드)에 SQL Server를 설치하고, 클러스터를 형성하여 단일 데이터베이스 인스턴스를 공유
      • 위 그림과 같이, 스토리지 구성에서 공유 필요
    • FCI는 주로 단일 데이터베이스 인스턴스의 고가용성을 제공하는 데 사용
      • 즉, 고가용성(Protection)의 주체는 데이터베이스 인스턴스

     

    1-1-2. Always On Availability Group Cluster

    https://i2.wp.com/www.omegamadlab.com/wp-content/uploads/2020/07/AG.png?w=745&ssl=1

     

    • Always On 가용성 그룹은 데이터베이스 수준의 고가용성을 제공
      • 여러 대의 서버(노드)에 데이터베이스의 복제본을 만들어 공유, 즉 Node에 연결된 개별 스토리지 필요(No Shared)
    • 복제본은 읽기 가능 또는 읽기 전용일 수 있으며, 여러 가용성 그룹을 구성하여 다양한 목적에 맞게 데이터베이스를 배포 가능
      • 장애가 발생하면 해당 가용성 그룹의 복제본 중 하나로 자동으로 이동하여 서비스 지속 가능
    • Always On 가용성 그룹은 데이터베이스 단위로 고가용성을 제공하므로 다중 데이터베이스 솔루션에 적합

     

    1-1-2. FCI(Failover Cluster Instances) VS Always On Availability Group Cluster

    Feature FCIs AGs
    Licenses* Single license required Single license required for HA mode, additional licenses required for actively used secondary replicas
    Storage
    Configuration
    Shared storage, eg SAN, Storage Spaces Direct, etc. No shared storage needed, each replica has its own
    Storage
    Requirements
    No additional store space required for user databases Each replica stores its own copy of the database
    Protection Instance-level Database-level
    Typical
    configuration
    HA, with DR capabilities if combined with other technologies HA or DR
    RPO: Potential data loss Typically no data loss during failover Typically no data loss during failover for synchronous-commit; potential data loss for asynchronous-commit
    RTO: Time to failover Potentially noticeable for large and active systems Typically fast and may be unnoticeable on many systems
    Administration Once configured, manage the instance. Use SQL Server Setup program to add/remove nodes Once configured, additional care must be taken for instance-level objects such as logins and jobs.
    Patching &
    maintenance
    Reduces downtime to failover time Reduces downtime to failover time

    출처 : https://theserogroup.com/sql-server/whats-the-difference-in-sql-server-fcis-and-ags/ 

     

    2. 구성도 및 인프라 세부 사항

    2-1. 구성도

    : 이번 포스팅에서는 Always On 가용성 그룹 방법으로 진행됩니다! 

     

    2-2. 인프라 세부 사항

    : 한국 중부 리전의 가용성 영역(1,2,3) 구분하여 배포

    - Azure Load Balancer (1ea) for Cluster Listener

    - Storage Account - Blob (1ea) for Quorom

    - Data Disk (3ea) for SQL Server Database Replication

    - Virtual Machine Configuration

    구성 AD-01 AD-02 SQL-01 SQL-02 SQL-03
    OS Windows Server 2019 R2 
    HOSTNAME tak-ad-01 tak-ad-02 tak-sql-01 tak-sql-02 tak-sql-03
    SKU Standard B2s
    (2개 vcpu, 4GiB 메모리)
    Standard B4als v2
    (4개 vcpu, 8GiB 메모리)
    IP 172.168.0.4 172.168.0.4 172.168.1.4 172.168.1.5 172.168.1.6
    DNS tak2on.com(172.168.0.4, 172.168.0.5)

     

    3. AD 서버 구성

    : AD 서버는 MSSQL의 고가용성 구성을 위해 필수적인 리소스입니다. 

    해당 구성에서는 주 서비스인 AD DC(Actice Directory Domain Services)는 윈도우 서버 운영체제의 기능을 사용합니다.

     

    즉, 다음과 같은 이유로 사용됩니다.

    - AD 사용자 및 그룹을 만들어 권한 할당 및 인증에 사용

    - 관리자 및 클라이언트에서 MSSQL Server에 액세스 할 때, AD를 통해서 인증에 사용

    - Window 기능 중 Failover를 위한 클러스터링 구성에서 모든 노드가 AD DC의 도메인에 속해야 하며, 이는 클러스터링 서비스, 관리 도구 과 통합되어 노드 Failover 시에 인증과 통신 등에 사용(+ 서비스로 등록)

     

    → 위와 같은 이유로 AD 서버의 고가용성을 고려하여 2대의 AD 서버를 구성합니다.

     

    3-1. AD 서버 설정

    : 2대의 AD 서버 동일하게 설정합니다. 우선 1대의 AD 서버(tak-ad-01) 설정을 진행하겠습니다.

     

    • Add roles and freatures 선택

     

    • AD 서버 선택

     

    • AD DS (Active Directory Domain Services)

     

    • [Features] 단계에서 Defaults 옵션 유지하여, Next

     

    • 설치 완료 후, “Promote This server to a domain controller” 문구가 클릭 후, Domain Controller 구성

     

    • 새로운 구성으로, Add a new forest 클릭 후, Root domain name 입력

     

    • 정상적으로 설치 완료되었다면, 구성 사항 반영을 위해 Restart

     

    3-2. AD 서버 접근 및 AD DS 확인

    • AD 서버에 액세스 시, 위 단계에서 구성한 AD DS에 등록된 Domain Controllers 정보로 로그인합니다.
      → 정상적으로 Domain에 등록되었는지 확인을 위해

     

    • AD DS 및 DNS 구성 확인

     

    • AD DS(Domain) 구성 확인

     

     

    다른 1대의 AD 서버(tak-ad-02)도 위 단계와 동일하게 구성하시면 됩니다.

    더보기
    • 위 단계 일부 다른점은 AD DS 구성 설정 시,
      새로운 도메인 추가가 아닌 기존 도메인에 Domain Controller를 추가하는 것

     

     

    • 인증 방법은 도메인 전체 혹은 도메인의 NetBOIS를 입력하는 2가지 방법 중 편하신 방법을 선택하여 인증

     

     

    → 이후 과정은 동일합니다.

     

    • AD 서버 2대 모두 정상적으로 설치 및 구성하였다면, 다음과 같이 확인 가능합니다.
      • 정상적으로 도메인(tak2on.com) 의 Domain Controllers 등록 

     

    4. Azure Virtaul Network DNS 서버 설정

    : 지금까지 구성한 AD DS의 경우, 앞서 설명한 SQL Server의 고가용성을 위한 역할로 사용됩니다. 

    따라서, 구성된 네트워크의 DNS 정보를 SQL Server가 AD 서버를 바라볼 수 있도록 DNS 서버 값을 지정합니다.

     

    5. SQL Server에 대한 AD Join

    : SQL Server의 고가용성을 위한 AD 서버의 목적으로 사용할 수 있도록 전체 SQL Server를 대상으로 위에서 생성한 도메인에 Member(Computer)로 등록합니다.

     

    • 위에서 설정한 DNS 서버의 값들이 적용되고 있는 확인
      •  각 SQL Sever 내 DNS 서버 정보 확인(모든 SQL Server에서 확인)

     

    • 각 SQL Server에서 Domain Join 작업 실행

     

     

    • 설정 이후, Domaion Join을 위한 인증
      → AD 서버의 도메인 관리자 계정으로 인증해야 하며, 이는 VM이 생성될 때 설정한 사용자가 됩니다.

     

    • 재시작 후, 관리자 계정으로 로그인
      • 사용자 확인

     

     

    모든 SQL 서버 대상으로 위 단계의 AD Join 작업 진행

    → AD 서버 관리 페이지에 Computers 항목에 AD Join이 정상적으로 되어 편입되었는지 확인

     


     

    지금까지 "SQL Server Always On 가용성 그룹 on Azure"를 위한 개념과 테스트를 위한 환경 및 구성도 그리고 AD 서버의 구축 단계까지 진행하였습니다.

     

    다음 포스팅에서는 SQL Server의 Failover Cluster 구성, SQL구성 그리고 Always On 가용성 그룹 구성까지 알아보겠습니다.(!! 많관부!!)

     

    이번 포스팅에서 부족한 점, 궁금한 점 등 자유로운 의견을 남겨주세요!

     

     

    728x90
    320x100
    SMALL