[AWS] Database Modernization Day - 윈도우 서버가 아닌 곳에서 SQL Server를 만나다

  • 우주최강라섹남
    (우주최강라섹남)
  • 우주최강라섹남's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
30 Dec 2021 10:29 - 30 Dec 2021 10:36 #5452 작성자: 우주최강라섹남
우주최강라섹남 님의 글: [AWS] Database Modernization Day - 윈도우 서버가 아닌 곳에서 SQL Server를 만나다
<AWS Database Modernization Day 온라인> 내용을 정리한 것입니다.



클라우드로 가는 길

On-premises DC에서 클라우드로의 전환은 크게 3가지 방법으로 나눌 수 있다.

1. Cloud Native
Cloud Native 한 방식으로 전체 애플리케이션을 다시 작성해야 하기 때문에 최초 변경이 쉽지 않다.

2. Half-Way
완전한 Cloud Native는 아니지만 Refactor를 통해 어느정도 Cloud Native한 방식을 채용할 수 있다.
추후 Rewrite을 통해 Cloud Native 한 방식으로 변화할 수 있다.

3. Lift & Shift
클라우드 상의 IaaS로 마이그레이션 하는 방법으로, 최초에 쉽게 이전할 수 있다.
Reserved Instance를 활용하여 구조 변화를 최소화하되 비용을 절감할 수 있다.
추후 Refactor를 통해 Half-way에 도달할 수 있다.


AWS상의 Microsoft 워크로드

1. Lift and Shift

On-Prem 환경에 비해 기술적 부채를 줄이고 신뢰도를 높일 수 있다.
- SQLServer 및 AD 최적화 SQLServer를 EC2에 직접 설치하거나 RDS의 SQLServer를 활용한다. 유연하게 다양한 설정값을 적용할 수 있다.
- .NET 애플리케이션 현대화 애플리케이션 현대화를 통해 빠르게 배포하며 비용을 절약할 수 있다. 신기술을 접목할 수 있다. 데브옵스 모델로 전환할 수 있다.

2. Innovate

비즈니스적인 민첩성은 증가한다. 통합해야 할 지점은 많아진다. 디지털 트랜스포메이션을 수행한다.


AWS상의 SQLServer

1. Rehost - SQL Server on Amazon EC2
EC2와 EBS를 이용하여 직접 SQL Server를 설치한다. 사용자가 직접 OS와 SQL Server, 백업, 고가용성 등의 구성을 수행해야 한다.

2. Re-platform - SQL Server on Amazon RDS
RDS를 통해 몇번의 클릭 만으로 바로 프로비저닝하여 사용할 수 있다. SQL Server에 대한 관리가 자동화된다. Multi-AZ 구성을 손쉽게 할 수 있다.

3. Re-factor - Cloud Native 서비스 적용
AWS에서 제공하는 다른 Cloud Native 서비스로 전환한다. 다양한 워크로드 에 맞는 DB를 선택하여 적용한다. Aurora DB등을 사용하여 상용 대비 비용 절감이 가능하다.


SQL Server on Linux

SQL Server는 현재 15버전(SQL Server 2019)까지 발전해왔으며, 현재 빅데이터 클러스터(SQL Server, Spark, Kubernetes상의 HDFS 컨테이너) 지원이 가능하다.
2016년 3월 7일 SQL Server on Linux를 발표하여, Windows Server를 벗어나서도 사용 가능한 최초의 SQL Server가 탄생했다.
현재 Windows, Linux, Windows/Linux Container에서 모두 사용이 가능하다.


SQL Server Operating System(SQLOS)

SQL Server 2005에서 시작된 SQLOS는 비선점형 스케쥴링을 적용하며, SQL Server 내에서의 리소스 관리 및 요청을 모두 관장한다. OS 레벨의 요청(CPU, Mem, Disk IO, Network)등의 요청은 SQLOS가 커널 API를 호출하는 방식으로 이루어진다.


SQL Server Linux Architecture

리눅스 상의 SQL 플랫폼 추상화 레이어는 SQLOS가 OS의 System API를 호출한느 방식으로 구성되어 있다.
SQL Server on Linux를 이용하기 위해 SQL Server AMI를 활용할 수 있다. (Amazon Linux2, Ubuntu, RHEL 등)
기본 AMI를 r5.4xlarge(16cores, 128GB)에 적용하면 Windows AMI 기준 시간당 $3.972, Linux AMI 기준 $3.136을 지불하여 Linux 상에서 더욱 저렴하게 사용 가능하다.
Dockerhub의 microsoft-mssql-server이미지 또는 mssql-server-windows-developer 이미지를 활용할 수 있다.


설치 및 마이그레이션

SQL Server Native Backup/Restore를 사용하여 Windows에서 Linux로 마이그레이션이 가능하다.
이 경우 Windows Server상의 SQL Server에서 Native Backup본을 S3에 업로드 하고, Linux 서버에서 다운로드하여 마이그레이션 할 수 있다.
또는 Amazon FSx를 활용하여 중간에 파일 서버를 구성하여 마이그레이션 할 수 있다.


SQL Server on Linux의 HA 구성

HA 구성으로 가능하다.

1. Failover Cluster Instance

- Pacemaker and Corosync
- Single SQL Server Instance: SQL resource agent(msql-server-ha)
- Shared Storage(ISCI, NFS, SMB)
→ FSx for Windows Files Server

2. Always on AG

- CLUSTER_TYPE = EXTERNAL
Auto Failover
Pacemaker
SQL resource agent(mssql-server-ha)
- 3 replicas 필요

3. Read-scale Availibility Group

- CLUSTER_TYPE=NONE
클러스터링 필요 없음
|수동 또는 강제 Failover
동기 또는 비동기식 레플리카
읽기 단위의 라우팅
크로스플랫폼


Always on 구성 예시

가용성 그룹에 따라 Always on 구성을 하여 HA 구성이 가능하다.

1. Replica01에서 백업 및 BI 솔루션 연결, DR용인 Replica02의 경우 Primary, Replica01보다 작은 사이즈의 인스턴스 적용
2. Primary, Replica01로 운영하면서, Replica02에서 검색엔진 인덱싱 생성용으로 대량의 주기적 데이터 조회
3. Replica01, Replica02로 라우팅 구성하여 읽기 요청에 대한 로드 밸런싱
4. 2개의 동기화된 보조 복제본에 대한 가용성 증대
5. Windows Server - Linux간 Always On AG 멀티 플랫폼 구성


Kubernetes 환경에서 SQL Server 2017/2019 HA 구성

추가적인 클러스터링을 수행하지 않고도 빌트인 된 HADR 오케스트레이션을 통해 HA구성
SQL Server Pod가 다중 노드에 분산 구성되고 LB에 의해 접근 되며, Storage는 뒷단의 PV로 구성하여 가용성 높임


Kubernetes 환경에서 SQL Server 2019의 Always On AG 구성

- SQL Server와 Kubernetes의 장애조치 통합
- Operator 배포
- Always On AG 모든 기능 이용 가능
- Primary Replica를 위한 로드 밸런서
- Secondary Replica에 대한 읽기 요청 로드 밸런싱


EKS에 SQL Server 구성하기

자동 구성 파워쉘 스크립트
github.com/awslabs/aws-eks-portworx-sql/...nEKSWithPortworx.ps1

1. EKS 생성에 필요한 IAM Role 생성
2. EKS 클러스터가 동작할 VPC 생성(Cloud Formation)
3. EKS 클러스터 생성(3 관리형 마스터 노드) 및 kubectl 구성
4. Worker node EC2 생성 및 조인
5. Portworx가 통신할 etcd 클러스터 시작
6. DaemonSet을 EKS 클러스터에 적용(Portworx Cloud Native Storage 자동 설치)
7. Portworx에 대한 스토리지 클래스 생성
8. gp2 EBS 볼륨에 대한 스토리지 클래스를 작성
9. 새로운 영구 볼륨 클레임(PVC) 작성 - PVC를 통해 Portworx는 Amazon EBS 볼륨이 지우너하는 PV(Persistent Volume) 프로비저닝
10. SQL Server 배포(SQL Server를 실행하는 단일 컨테이너)
11. Pod에 연결할 LB 생성
12. LB Endpoint로 SSMS에 연결


SQL Server on Container

장점

1. 구성의 단순화: SQL Server를 설치하거나 장애조치 구성이 필요 없음
2. 좀 더 세밀한 배포 가능, 유휴 자원 최대 활용 가능
3. 라이센스 비용 감소: 컨테이너 별 라이센싱
Time to create page: 0.048 seconds
Powered by Kunena Forum