[2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안
-
Upload
amazon-web-services-korea -
Category
Technology
-
view
393 -
download
7
Transcript of [2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
최정욱 / 솔루션 아키텍트
아마존 웹서비스 코리아
AWS 를활용한
SQL Server 최적활용방안
AWS상의 SQL Server 서비스
AWS 상에서 SQL Server 운영 혜택
광범위한 글로벌 인프라 제공
높은 가용성 및 유연성 제공
다양한 버전 및 에디션 제공
지속적인 가격 하락 및 라이선스 최적화를
통한 비용 절감
친숙한 기존 관리 도구 사용
전 리전에 SQL Server 이중화 구성 제공
16개 리전
(Region)
44개 가용 영역
(Availability Zones)
버지니아북부
오하이오오레곤
캘리포니아북부
상파울루
아일랜드
런던
프랑크푸르트
미국정부
캐나다
뭄바이
싱가포르
시드니
도쿄
서울베이징
스웨덴
프랑스닝샤
홍콩
미국정부
신규 리전 (추가 예정)
리전 (괄호는 가용영역 수)
가용성 - SQL Server 미러링
Availability Zone 1
Primary
Replica
Availability Zone 2
Secondary
Replica
Automatic Failover
Witness
Server
Availability Zone 3
Availability Zone 1
Private Subnet
EC2
Primary
Replica
Primary: 10.0.2.100WSFC: 10.0.2.101AG Listener: 10.0.2.102
AWS Region A
Availability Zone 2
Private Subnet
EC2
Secondary
Replica
Primary: 10.0.3.100WSFC: 10.0.3.101AG Listener: 10.0.3.102
Availability Zone 1
Private Subnet
EC2
Secondary
Replica
Primary: 10.1.2.100WSFC: 10.1.2.101AG Listener: 10.1.2.102
Synchronous Commit
Automatic Failover
AWS Region B
Asynchronous Commit
Manual Failover
Elastic IP Elastic IP
VPN
가용성 - SQL AlwaysOn AG
다양한 버전 및 에디션 제공
Amazon에서 게시한 Microsoft 윈도우 및 SQL 서버 AMI
Windows Server 2016
Windows Server 2012 및 2012 R2
Windows Server 2008 및 2008 R2
Windows Server 2003 R2
SQL Server 2017
SQL Server 2016
SQL Server 2012
SQL Server 2008
SQL Server 2005
http://aws.amazon.com/windows/resources/amis/
SQL Server 라이선스 포함 옵션
AWS를 통해 라이선스 구매
AWS에서 라이선스 정책 관리
최신 버전 및 이전 버전 지원
Windows Server Client Access 라이센스 (CALs) 불필요
SQL Server 기존 라이선스 활용 옵션
기존 라이선스 활용 (BYOL)
기존 라이선스 구매 패턴을 유지하면서클라우드의 장점을 효율적으로 사용
추가 하드웨어 구매 비용 없이 라이선스투자 수명 주기 연장
가상환경에서 클라우드로 신속한 이전
Dep
loym
en
t
Dep
loym
en
t라이선스 수량 최적화
Data Center /
Region
HA Disaster
Asynch
Miles Apart
Data Center /
Region
On Premise
Region
Availability
Zone
Availability
Zone
Synch
Miles Apart
AWS (SQL on EC2 or RDS)
Low Latency
아키텍처해택:
• 적은 수의 Microsoft SQL Server 인스턴스 사용• RDS 적용시 백업, 패치등 관리 업무 비용 절감• 다중 가용영역을 통한 간편한 이중화 및 재해복구
구현• 자동 Fail-Over를 통한 거의 0값에 가까운 RTO
• 동기화 복제를 통한 0 RPO
비용해택:
• SA 미계약시 Microsoft SQL Server 라이선스 수량이3개에서 2개로
• 33% 라이선스 비용 절감• SA 계약시 Microsoft SQL Server 라이선스 수량이
1개로• 50% 라이선스 비용 절감
High Latency
Dep
loym
en
t
Dep
loym
en
t
Data Center /
Region
HA Disaster
Asynch
Miles Apart
Data Center /
Region
On Premise / Azure AWS (SQL on EC2)
아키텍처혜택:
• 적은 수의 Microsoft SQL Server 인스턴스• Standard Edition을 통한 다중가용영역 SQL Server
클러스터 제공• NAS/SAN 관리 부담 없음• 이중화 및 재해복구 인프라 제공
비용해택:
• 라이선스 개수 최적화• Microsoft SQL Server Enterprise 라이선스대신
Standard 라이선스 사용• Standard 라이선스는 $3,717.00, Enterprise
라이선스는 $14,256.00 (SQL Server 2016 기준).
High Latency
라이선스 타입 최적화
Region
Availability
Zone
Availability
Zone
Clustering
Miles Apart
Low Latency
Synch
Volumes
원격데스크탑관리매니저 사용
Failover Cluster 관리자 사용
SQL Server Management Studio 사용
AWS에서비즈니스요구사항에맞는SQL Server 솔루션선택
백업 및 복구
performance tuning
25%40%
5% 5%
scripting & coding
보안 기획
설치, 업그레이드,
패치 및 이관
문서 작성,
라이센싱 및 교육
일상적인 데이터 베이스 운영 업무
AWS에서 제공하는 SQL Server 솔루션
Amazon RDS for SQL Server
Power, HVAC, net
Rack and stack
Server maintenance
OS patches
DB software patches
Database backups
High availability
DB software installs
OS installation
Scaling
App optimization
Power, HVAC, net
Rack and stack
Server maintenance
OS patches
DB software patches
Database backups
High availability
DB software installs
OS installation
Scaling
App optimization
SQL Server on Amazon EC2
Multiple optionsCustomer managed AWS managed
운영 환경에 맞는 적절한 솔루션 선택
• AWS상에서는 RDS를 우선 고려
• 아래 사항에 중점:
• 비즈니스 가치 창조 업무
• 높은 수준의 튜닝 업무
• 스키마 최적화
• 데이터베이스 운영 경험 불필요
Amazon RDS for SQL Server
SQL Server on Amazon EC2
• 아래 사항에 완전한 통제 제공:
DB instance
• 데이터베이스 인스턴스
• 백업, 복제
• 이중화
• RDS에서 제공되지 않는 옵션
RDS와 EC2상의 SQL Server 비교
EC2 RDS
라이선스 제공
고객사 라이선스 사용-BYOL(Bring Your Own License)
인스턴스에 대한 완전한 제어
자동 백업
고객 관리형 AlwaysOn Availability Groups
AWS 관리형 Multi-AZ 배포
RDS가 제공하는 관리 기능
• 자동 백업 및 복구
최대 35일, 즉시 복구 기능 제공, 일반적으로 5분 이내
• Push-button DB 인스턴스 사양 변경
• 장애 호스트 자동 교체
• 자동 마이너 업그레이드
• 최적화된 설정값 및 옵션 제공
• 유지 보수 시간 설정 지원
- 백업 시간 : 최소 일 30분
- 유지 보수 시간 : 최소 주 30분
RDS SQL Server 도구 지원
• 일반적인 도구 사용 : SQL Server Management Studio등
• 데이터 이관 도구:
Amazon RDS Migration Tool
Microsoft SQL Server Database Publishing Wizard
• RDS 인스턴스 당 최대 30개의 데이터베이스 지원
• SSAS, SSIS 및 SSRS를 위한 데이터소스로 사용(설치불가)
• 미지원 도구 :
Maintenance Plans, Database Mail
Linked Servers, MS-DTC
RDS SQL Server 도입이 힘든 상황
• 제한된 운영체제 접근 권한. sysadmin 권한 없음• 관리형 서비스인 관계로, 시스템 안정성을 위해 sysadmin 권한을 제공하지 않음.
• SQL Service 사용을 위해서 sysadmin이 필요하지 않음
• SQL Server Reporting Services (SSRS), Integration Services (SSIS), Analysis
Services (SSAS) 사용이 제한됨
• 데이터 소스로서 사용 가능. 상기 서비스는 외부의 EC2에서 운영될 수 있음.
• 최대 30개의 데이터베이스 제공
• 단일 대형 DB나 tlog파일 그룹이 급증하는 환경에 적합하지 않음
• Database Mail 기능 제공하지 않음.
• leverage Amazon SES 사용 권장
AWS상에서 SQL Server 고가용성구현
EC2 상의 SQL Server 고가용성
SQL Server에서 제공하는 기능 사용
• Log Shipping: 재해 복구용이나 가용성 증대를 위해 사용
• Database Mirroring: 대기 서버에 미러링 기능 제공
• AlwaysOn Availability Groups: 데이터베이스 그룹에 대한
장애 복구 기능 제공
• Failover Cluster Instance : 추가 3rd 소프트웨어 필요
Availability Zone 1
Private Subnet
EC2
Primary
Replica
Primary: 10.0.2.100WSFC: 10.0.2.101AG Listener: 10.0.2.102
AWS Region A
Availability Zone 2
Private Subnet
EC2
Secondary
Replica
Primary: 10.0.3.100WSFC: 10.0.3.101AG Listener: 10.0.3.102
Availability Zone 1
Private Subnet
EC2
Secondary
Replica
Primary: 10.1.2.100WSFC: 10.1.2.101AG Listener: 10.1.2.102
Synchronous Commit
Automatic Failover
AWS Region B / On-Premise
Asynchronous Commit
Manual Failover
Elastic IP Elastic IP
VPN
다중리전 SQL Server AlwaysOn AG
다중가용영역 SQL Server 미러링
Availability Zone 1
Primary
Replica
Availability Zone 2
Secondary
Replica
Automatic Failover
Witness
Server
Availability Zone 3
Amazon EBS Amazon EBS
Availability Zone 1
Private Subnet
EC2
Primary
Replica
Availability Zone 2
Private Subnet
EC2
Secondary
Replica
AWS Region
Data Replication
Windows Server Failover Clustering
Third-party 소프트웨어 필요
SIOS DataKeeper
SoftNAS Cloud for AWS
RDS for SQL Server 고가용성
다중 가용 영역(Multi-AZ) 모드로 구축 권장
• Primary DB 노드 및 secondary DB 노드는 서로 다른
가용 영역(AZ)에서 운영
• SQL Server Mirroring 기술 중 synchronous 방식 사용
• 자동 장애 복구 (일반적으로 1–2 분 소요), 호스트 교체 지원
Mirroring stopped
Address apply debt
Promote to master
Change DNS endpoint
Provision new
secondary
AWS상에서 SQL Server 성능및최적화
비즈니스 및 업무 패턴 확인
데이터베이스 작업 부하 패턴?
• 안정적이고 일정한 패턴
• 변동이 있으나 예측 가능하고 일정한 패턴
• 지속적으로 증가하나 예측가능한 패턴
• 변동이 있으며 예측 불가능한 스파이크 패턴
데이터베이스 쿼리 패턴?
• OLTP성 쿼리
• OLAP성 쿼리
성능에 영향을 주는 작업 패턴
연산 성능
vCPUs
메모리 자원
GB of RAM
네트워크 성능
MB/s (Throughput)
스토리지 성능
I/O Throughput
EC2 Instance Type/RDS DB Instance Class
Amazon ElasticBlock Store (EBS)/RDS Storage Type
연산자원 – 스케일링 및 성능
RDS DB 인스턴스 용량
최소 1 vCPU 와 1 GB 램
최대 40 vCPUs와 160GB 램
인스턴스 패밀리
일반 목적
메모리 최적화
버스팅 목적 등
인스턴스 클래스변경을 통해
스케일링 업 및다운
R3
인스턴스 타입 변경Console
인스턴스 타입 변경 – 단일 가용 영역단일 가용 영역의 경우 데이터베이스 서비스의 중단 발생
dbinstancename.1234567890.us-west-2.rds.amazonaws.com:3006
인스턴스 타입 변경 – 다중 가용 영역다중 가용 영역의 경우 대기 인스턴스가 먼저 업그레이드 됨
dbinstancename.1234567890.us-west-2.rds.amazonaws.com:3006
인스턴스 타입 변경 - 자동화
AWS CLI
Scheduled CLI—cron
aws rds modify-db-instance --db-instance-identifier sg-cli-test --db-instance-class db.m4.large --apply-
immediately
#Scale down at 8:00 PM on Friday
0 20 * * 5 /home/ec2-user/scripts/scale_down_rds.sh
#Scale up at 4:00 AM on Monday
0 4 * * 1 /home/ec2-user/scripts/scale_up_rds.sh
인스턴스 타입 변경 - 자동화
AWS Lambda 서비스를 통한 자동화 제공스케줄 관리 및 CLI 사용을 위한 서버 없이 자동화 제공
import boto3
client=boto3.client('rds')
def lambda_handler(event, context):
response=client.modify_db_instance(DBInstanceIdentifier='sg-cli-test',
DBInstanceClass='db.m4.xlarge',
ApplyImmediately=True)
print response
인스턴스 타입 변경 - 자동화
성능 카운터 기반의 인스턴스 타입 변경
• Amazon CloudWatch 및 AWS Lambda 이용
인스턴스 타입 변경 - 자동화
import boto3
import json
client=boto3.client('rds')
def lambda_handler(event, context):
message = event['Records'][0]['Sns']['Message']
parsed_message=json.loads(message)
db_instance=parsed_message['Trigger']['Dimensions'][0]['value']
print 'DB Instance: ' + db_instance
response=client.modify_db_instance(DBInstanceIdentifier=db_instance,
DBInstanceClass='db.m4.large',
ApplyImmediately=True)
print response
스토리지 시스템 I/O 성능
Amazon RDS Amazon EC2
타입 크기 성능 크기 성능 버스팅 기능 비용 모델
Magnetic Storage
20 GiB–1 TiB ~100 IOPS 1 GiB–1 TiB ~ 100 IOPS 지원, 수백IOPS
프로비저닝용량
General Purpose (SSD)
20 GiB–4 TiB(최소 100 GiB권장)
3 IOPS/GiB 1 GiB–16 TiB 1TiB 미만의경우 3 IOPS/GiB1TiB 이상의경우 최대10,000 IOPS
1TiB 이하의단일 볼륨 당3000 IOPS까지지원
프로비저닝용량
Provisioned IOPS(SSD)
100 GiB–4TiB(Standard edition의 경우최소 200 GiB)
10 IOPS/GiB,최대 20,000 IOPS
4 GiB–16 TiB 최대 20,000 IOPS; GiB당3에서 30 IOPS
No, fixed allocation
프로비저닝용량 및프로비전된IOPS
Instance Storage
사용 불가 4 GiB–48 TiB*인스턴스타입마다 상이
직접 연결 방식 지원 하지 않음 인스턴스에포함
SQL Server I/O 성능을 위한 계획 수립
Amazon RDS의 최대 채널 대역폭: 1000 Mbps full duplex= ~210MiB/s for a 50% read/50% write workload
Amazon EBS 최대 볼륨 처리량: 320 MiB/s= ~1,250 IOPS @ 256KiB block size,
= ~20,000 IOPS @ 16KiB block size
IOPS 프로비져닝: I/O operation
최대값은 256 KiB = 1 IOPS
1
2
3
Average queue depth
: I/O requests 대기열4
추가적인 I/O 성능 고려사항
• Small General Purpose SSD
30Gb 이하의 작은 볼륨의 경우 낮은 I/O 처리량을 제공
• Instance storage (직접 연결)
높은 성능을 요구하는 데이터베이스에 적합
하드웨어 장애 발생시 복구 불가능한 관계로, 강력한 백업 정책이 필요함
• Amazon EC2
여러 EBS 볼륨으로 스트라이핑을 고려
• Amazon RDS
한번 배포되면 스토리지 확장이 불가능.
AWS상에서 SQL Server 모니터링
SQL Server 성능 모니터링
비정상 상태에 대한 알람(Alarm) 및알림(Notification)
Amazon EC2 & Amazon RDS 에 대한 기본측정값 제공
Amazon EC2의 경우 사용자 설정 측정값추가 가능
Amazon CloudWatch 를 통한 성능 모니터링
RDS 표준 성능 모니터링
CPU 사용량
스토리지
메모리
Swap 사용량
DB connections
I/O (읽기 및 쓰기)
Latency (읽기 및 쓰기)
Throughput (읽기 및 쓰기)
Replica lag
등등
RDS 확장 성능 모니터링
개요 :
• OS 레벨의 모니터링 지표 – 26가지 시스템 지표 및 프로세스 별 지표
• 지표들은 CloudWatch Logs로 전달
• 최소 1초 단위 모니터링 제공
• t1.micro 및 m1.small 인스턴스는 지원하지 않음
CloudWatch 지표와 비교 :
• Agent 기반의 지표
• 지표 수집 기반의 차이(Hypervisor vs Agent)로 인해 모니터링 결과값의차이가 있을 수 있음 (ex. CPU)
RDS 확장 성능 모니터링 지표
지표 그룹(Metrics Groups):
• 일반 : uptime, instance, version
• CPU 사용량 : idle, kernel, user
• 디스크 : utilization, read & write bytes and operations
• 네트워크 : interface, read & write bytes
• 메모리 : physical, kernel, commit charge, system cache, SQL Server
• 시스템 : handles, processes, threads
• 프로세스 리스트 : grouped by OS processes, RDS processes (management,
monitoring, diagnostics agents), RDS child processes (SQL Server)
RDS 확장 성능 모니터링 지표
이벤트 알림
• Amazon Simple Notification Service
(Amazon SNS)를 사용하여 이벤트
발생시 고객에게 해당 이벤트를
제공.
• 17가지 이벤트 카테고리 제공
(가용성, 백업, 구성 변경 등)
AWS상의 SQL Server 라이선스최적화
비즈니스 케이스 (라이선스 비용 최적화)
큰 규모의 SQL Server:
• 요구사항• 큰 규모의 데이터베이스 서버
• 500 GB RAM• 32 Cores
• AWS 상의 인스턴스• “r4.16xlarge” 인스턴스
• 488 GB RAM• 64 vCPU
• 문제점• 32vCPU를 위한 SQL Server 추가
라이선스 구매 필요
많은 수의 SQL Server:
• 요구사항• 8 Database servers – 각각
• 104 GB RAM• 16 Cores
• AWS 상의 인스턴스• “r4.4xlarge” 인스턴스
• 122 GB RAM• 16 vCPU
• Problem• 8개의 16vCPU를 위한 SQL Server
추가 라이선스 추가 필요
비즈니스 케이스 (해결책)
큰규모의 SQL Server :
• 문제점: r4.16xlarge (488 GB RAM, 64 vCPU) 인스턴스용SQL Server 라이선스 비용• $ 444K
• 해결책: r4 전용 서버 호스트선택 (36 코어, 1대의r4.16xlarge 인스턴스 운영)• $ 249K• 44% 비용 절감 효과
많은 수의 SQL Server :
• 문제점 : 추가되는 8 x 16vCPU에 대한 SQL 라이선스비용• $ 887K
• 해결책 : 2대의 r4 전용 서버호스트 사용 (36*2 코어, 8대의r4.4xlarge 인스턴스 운영)• $ 523K• 41% 비용 절감 효과
참고자료Partners
MS Competency https://aws.amazon.com/partners/competencies/microsoft
Find a Partner http://www.aws-partner-directory.com
Videos
All Windows https://aws.amazon.com/windows/resources/#videos
Windows Events and Webinars https://aws.amazon.com/windows/events
All AWS https://www.youtube.com/AmazonWebServices
AWS Webinars https://www.youtube.com/AWSwebinars
Discussion Forums
EC2 https://forums.aws.amazon.com/forum.jspa?forumID=30
.NET https://forums.aws.amazon.com/forum.jspa?forumID=61
More
Windows on AWS Homepage https://aws.amazon.com/windows
FAQs https://aws.amazon.com/windows/faq
MS Licensing https://aws.amazon.com/windows/resources/licensing
SQL Server https://aws.amazon.com/windows/products/sql
SharePoint https://aws.amazon.com/windows/products/sharepoint
Exchange https://aws.amazon.com/windows/products/exchange
System Center https://aws.amazon.com/windows/products/system-center
Contact Us https://aws.amazon.com/windows/contact-us
Windows Resources https://aws.amazon.com/windows/resources
Support https://aws.amazon.com/premiumsupport
Software Marketplace https://aws.amazon.com/marketplace
Documentation
http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide
Quick Starts
https://aws.amazon.com/quickstart
Whitepapers
Windows https://aws.amazon.com/windows/resources/whitepapers
All AWS https://aws.amazon.com/whitepapers
Tools
.NET SDK https://aws.amazon.com/net
Visual Studio Plugin https://aws.amazon.com/visualstudio
PowerShell Tools https://aws.amazon.com/powershell
AWS Developer Tools https://aws.amazon.com/tools
DevOps https://aws.amazon.com/devops/windows
Training & Certification
Virtual Labs https://aws.amazon.com/windows/resources/training
Webinars https://aws.amazon.com/windows/events/hands-on-labs
Training https://aws.amazon.com/training
Certification https://aws.amazon.com/certification
Getting Started
https://aws.amazon.com/windows/getting-started
Pricing & Calculators
EC2 https://aws.amazon.com/ec2/pricing
AWS https://aws.amazon.com/pricing
감사합니다