82
Azure 웹앱과 네트워크 디자인, 그리고 리눅스 Se Jun Kim Azure MVP 한국 Azure 사용자 그룹

1711 azure-live

  • Upload
    -

  • View
    468

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 1711 azure-live

Azure 웹앱과네트워크디자인, 그리고리눅스

Se Jun Kim

Azure MVP

한국 Azure 사용자그룹

Page 2: 1711 azure-live

Wordpress Migration 삽질기

Se Jun Kim

Azure MVP

한국 Azure 사용자그룹

Page 3: 1711 azure-live

Azure 웹앱과MySQL용 Azure Database

Page 4: 1711 azure-live

클라우드모델

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

직접

관리해야

부분

직접

관리해야

부분

직접

관리해야

부분

공급자

책임

공급자

책임

공급자

책임

On-premise IaaS PaaS SaaS직접

관리해야

부분

Page 5: 1711 azure-live

본론에들어가기전에

•App Service 구조를깊게살펴봅시다• https://youngjaekim.wordpress.com/2017/04/03/번역-azure-앱서비스-구조를-깊게-살펴봅시다/

•App Service Environment의네트워크구성• https://msdn.microsoft.com/en-us/magazine/mt797651

•왜이것을아는것이중요한가?•장애또는특이상황에대해보다정교한이해와대응이가능

Thanks to Youngjae Kim

슬라이드동영상

Page 6: 1711 azure-live

App Service 구조

•PaaS를만드는 PaaS가있음• 내부는 Azure Cloud Service (classic)으로구현됨

• 약 1,000개의서버를하나의 ‘확장단위’로관리함

•확장단위내에구성요소및역할• 프론트엔드: Layer-7 로드밸런서 + SSL 핸들링

• 웹작업자(worker): 유저의앱을구동하는런타임

• 파일서버: Azure Blob Storage를네트워크디스크로마운트하는역할

• API 콘트롤러: 앱의실행/정지등의명령을처리

• Publisher: 앱배포용 FTP 프로토콜을제공 (서비스용아님)

• SQL: 앱구동메타데이터저장

• Data Role: 내부캐시 (유저가쓰는게아님)

Page 7: 1711 azure-live

그림으로그려보면

프론트엔드로드밸런서

Worker Pool

내부관리용 API 콘트롤러

인바운드트래픽

캐시(Data Role)

Blob Storage

File Server

(드라이브마운트)

메타데이타저장

Cloud Service

런타임

Worker

Page 8: 1711 azure-live

App Service 구조

•Worker(앱런타임)가이미돌고있는상태에서확장명령에따라앱을복제하여순식간에확장

•확장/축소완료후트래픽을분산하므로유실없음

Page 9: 1711 azure-live

App Service의네트워크특성

•1개의인/아웃바운드겸용 + 4개의아웃바운드전용= 총 5개의 IP

•고정IP 할당가능. 앱을정지하면다른 IP로바뀔수있음.

•네트워크주소변환(Network Address Translation; NAT) 테이블의한계• B1/S1/P1 인스턴스당 1,920 연결• B2/S2/P2 인스턴스당 3,968 연결• B3/S3/P3 인스턴스당 8,064 연결•앱서비스환경(ASE) 당최대 64K 연결

Page 10: 1711 azure-live

왜아웃바운드전용 IP가있나요?

•Azure 네트워크는아래와같이조건에따라 SNAT를사용하지않음

•https://docs.microsoft.com/ko-kr/azure/load-balancer/load-balancer-outbound-connections

시나리오 메서드 참고

독립실행형 VM(부하분산장치없음,

인스턴스수준공용 IP 주소없음)기본 SNAT Azure에서는 SNAT에공용 IP 주소를

연결합니다.

부하분산 VM(VM에인스턴스수준공용 IP 주소없음)

부하분산장치를사용하는 SNAT

Azure에서는 SNAT에부하분산장치의공용 IP 주소를사용합니다.

인스턴스수준공용 IP 주소를가진VM(부하분산장치있음또는없음)

SNAT를 사용하지않습니다.

Azure에서는 VM에할당된공용 IP를사용합니다.

Page 11: 1711 azure-live

이말을그림으로그린다면

공인 IP 공인 IP 공인 IP 공인 IP

Page 12: 1711 azure-live

Azure App Service SLA

•월 99.95% SLA 보장• 99.95% = 한달약 21분 54.9초• 99% = 한달약 7시간 18분 17.5초

•가용성 99.95%~ 10% 크래딧보상

•가용성 99%~ 25% 크래딧보상

•무료와공유계층제외

•Web, Mobile, API, Logic App만적용

https://azure.microsoft.com/ko-kr/support/legal/sla/app-service/v1_4/

Page 13: 1711 azure-live

Azure Database

•Azure에서제공하는관리형데이터베이스

•Azure Database는 SQL Server로구성되어있음

•MySQL용 Azure SQL과 PostgreSQL용 Azure SQL이

프리뷰진행중

•파트너사에서제공하는관리형데이터베이스도

존재(ClearDB, 권장하지않음)

•Public 자원이며, Premium 사용시 vNet에연결가능

Page 14: 1711 azure-live

DTU(Database Transaction Unit)

•CPU, 메모리, I/O(데이터및트랜잭션로그 I/O)의혼합된측정치

•리소스를지정하는것이아닌트랜젝션을기준으로성능을측정하여제공

•Azure는 DTU 계산기를제공하고있으며, 모니터링수치도제공

DTU 계산기 : http://dtucalculator.azurewebsites.net/

Page 15: 1711 azure-live

eDTU(Elastic DTU)

•트랜젝션의사용량에따라자동으로성능을조절

Page 16: 1711 azure-live

MySQL용 Azure Database

•기본 Azure Database보다기능은많지않음

•현재지원되는버전은 5.6.35, 5.7.18

•Preview이기때문에버전업그레이드는지원하지않음

Page 17: 1711 azure-live

서버로그

•로그는최대 7일간보존하며, 7.5GB 초과시여유공간이생길때까지오래된파일삭제

•Slow query는기본적으로비활성화되어있으며, slow_query_log를 ON으로설정해야함

Page 18: 1711 azure-live

고가용성

•트랜젝션이커밋될때 Azure Storage에동기화

•HA시처리중이던트랜젝션은커밋되지않음

•HA 발생시응용프로그램에서는커밋되지않은쿼리에대해재시도는필수적

•확장및축소도중 Connection은끊기며커밋되지않은트랜잭션은취소

Page 19: 1711 azure-live

보안

•데이터베이스방화벽으로IP 차단가능

•SSL 인증서기반통신으로통신암호화가능

Page 20: 1711 azure-live

제한최대연결

기본 50 Compute 단위 50개연결

기본 100 Compute 단위 100개연결

표준 100 Compute 단위 200개연결

표준 200 Compute 단위 400개연결

표준 400 Compute 단위 400개연결

표준 800 Compute 단위 1600개연결

최대 Compute 단위

기본서비스계층 100 Compute 단위

표준서비스계층 800 Compute 단위

최대저장소

기본서비스계층 1TB

표준서비스계층 1TB

Page 21: 1711 azure-live

Azure SQL Database SLA

•월 99.99% SLA 보장 (단일또는탄력적기본이상)• 99.99% = 한달약 4분 23초• 99% = 한달약 7시간 18분 17.5초

•가용성 99.99%~ 10% 크래딧보상

•가용성 99%~ 25% 크래딧보상

•웹, 비즈니스계층은월 99.9% SLA 보장• 99.9% = 한달약 43분 49.7초

https://azure.microsoft.com/ko-kr/support/legal/sla/sql-database/v1_1/

Page 23: 1711 azure-live

Azure 백업구성과사용 Tip 그리고...

Page 24: 1711 azure-live

배포자격증명

•웹앱로컬 git 또는 FTP 등웹앱에응용프로그램배포시사용할자격증명생성

•자격증명은모든구독의모든앱에적용

•사용자이름은 ‘웹앱이름\자격증명이름’

Page 25: 1711 azure-live

배포슬롯

•Web Hosting을하나더만들수있는기능

•완벽한 WebApp이하나더생성됨

•보통개발, QA, 프로덕션테스트등에사용

•Swap이가능하며, 동일한지역의리소스그룹내에서 App Service Plan 이동가능

•표준이상계층부터사용가능

Page 26: 1711 azure-live

StagingThanks to

Page 27: 1711 azure-live

StagingThanks to

Page 28: 1711 azure-live

StagingThanks to

Page 29: 1711 azure-live

StagingThanks to

Page 30: 1711 azure-live

MySQL In App

•App Service머신에서 MySQL을지원하는기능

•Scale out은불가능

•테스트용도로만사용권장

•Data Migration 가능

Page 31: 1711 azure-live

Azure 백업

•Azure 백업은기본적으로 VM백업을의미함

•여기서설명할 Azure 백업은웹앱백업

•App Service Plan이표준이상이어야활성화

•웹앱의모든것을 Blob으로백업

•연결된 Database의연결문자열기준으로데이터백업가능

•배포슬롯에복구가능

Page 32: 1711 azure-live

Blob

Korea Central

Async

Korea Central Korea South

Async

Korea Central Korea South

LRS GRS RA-GRS

• 단일 Region내 3개복제본

• Disk와 Node, Rack단위장애요소분리하여보호

• 쓰는즉시복제

• 매우우수한듀얼 RAID

• 두개 Region내 6개복제본

• Region 단위데이터를보호

• 두번째복제는 Async로일어남

• GRS + Read Access

• 별도의 Read Endpoint가존재

Page 33: 1711 azure-live

WebJob

•동일한컨텍스트에서프로그램이나스크립트를실행할수있도록하는기능

• .cmd, .bat, .exe, .ps1, .sh, .php, .py, .js, .jar

•연속실행과트리거실행두가지유형

•트리거실행은수동과스케줄(corn식)로가능

Page 34: 1711 azure-live

WebJobsThanks to

Page 35: 1711 azure-live

WebJobsThanks to

Page 36: 1711 azure-live

고급도구 Project Kudu

•탐색창과 CMD/PowerShell을실행할수있는창제공

•직접편집및삭제, 다운로드가능

•환경설정, 프로세스등확인가능

Page 37: 1711 azure-live

웹앱에서사용하는시스템변수

•웹앱에서는응용프로그램설정에서시스템변수를지정할수있음

•고급도구에서사용할환경변수를확인할수있음

•데이터베이스의경우아래와같이접두사가붙음• Sql Server: SQLCONNSTR_

•MySql: MYSQLCONNSTR_

• Sql Azure: SQLAZURECONNSTR_

•Custom: CUSTOMCONNSTR_

https://blogs.msdn.microsoft.com/silverlining/2012/10/23/getting-database-

connection-information-in-windows-azure-web-sites/

Page 38: 1711 azure-live

웹앱에서사용하는시스템변수

Page 39: 1711 azure-live

프로덕션에서테스트(Traffic Manager)

•슬롯(Slot)에일정트래픽을분배하여 A/B테스트가능

• referrer에 ?x-ms-routing-name={slot}을넣으면해당슬롯으로만이동

Page 40: 1711 azure-live

진단로그

•기본적으로응용프로그램로깅은파일시스템에동작

•Blob에저장가능

•웹서버로깅은별도수정필요

•꼭켜세요. 두번켜세요.

Page 41: 1711 azure-live

Application Insights

Page 42: 1711 azure-live
Page 43: 1711 azure-live

기타네트워크기능

•vNet 통합•표준이상가능, 웹앱→ VM 통신만가능•가상네트워크게이트웨이가자동으로생성됨

•하이브리드연결•하이브리드연결관리자를통해웹앱과통신가능

•Azure CDN

• IP 제한• Black List 형식의 IP 차단정책적용

Page 44: 1711 azure-live
Page 45: 1711 azure-live

MySQL 연결보안

•White list 방식으로 IP 제어

•SSL 연결설정으로보안향상가능

Page 46: 1711 azure-live

서버매개변수

•MySQL에대한환경변수값을수정할수있음

•많이사용하는값들은있으나, 아직목록이부족

Page 48: 1711 azure-live

Azure VM 구성및 Wordpress복구

Page 49: 1711 azure-live

클라우드모델

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

Networking

Storage

Servers

Virtualization

O/S

Middleware

Runtime

Application

Data

직접

관리해야

부분

직접

관리해야

부분

직접

관리해야

부분

공급자

책임

공급자

책임

공급자

책임

On-premise IaaS PaaS SaaS직접

관리해야

부분

Page 50: 1711 azure-live

가상네트워크란?•Azure 데이터센터에가상의네트워크를만들어네트워크기반통신을가능하게해줍니다.

Page 51: 1711 azure-live

가상네트워크란?•Azure 데이터센터에가상의네트워크를만들어네트워크기반통신을가능하게해줍니다.

•Azure 지역에종속되며가상의네트워크이기때문에생성에제한이없습니다.

•다른계정의가상네트워크와는기본적으로차단되는독립적인네트워크입니다.

Page 52: 1711 azure-live

가상컴퓨터란?

• IaaS의대표적인리소스

•Azure에서 Infra단위까지관리를해주고 OS 위의

부분은전부사용자가관리해야합니다.

•가상컴퓨터크기에따라성능이달라집니다.

•가상컴퓨터를 REST API 호출로생성할수있으며

대량의트래픽을받았을때증설이쉽습니다.

Page 53: 1711 azure-live

가상컴퓨터크기

구분 크기 설명

일반사항 DSv2, Dv2, DS, D, Av2, A0-7 CPU와메모리비율이적절합니다.

컴퓨팅최적화 Fs, F CPU가메모리에비해높은비율을가집니다.

메모리최적화 GS, G, DSv2, DS, Dv2, D 메모리가 CPU에비해높은비율을가집니다.

저장소최적화 Ls 디스크처리량이높습니다.

GPU NV, NC GPU가연결되어있는가상컴퓨터입니다.

높은성능컴퓨팅 H, A8-11 RDMA를갖춘가장빠른가상컴퓨터입니다.

Page 54: 1711 azure-live

가용성집합•Fault Domain(FD)은공통전원및네트워크스위치를공유하는논리적인그룹입니다.

•Update Domain(UD)은동시에유지관리를진행하거나재부팅이될수있는논리적인그룹입니다.https://blogs.technet.microsoft.com/koalra/2014/08/06/micro

soft-azure-vm-availability-set-load-bala/

Page 55: 1711 azure-live

가상컴퓨터 SLA

•기준 : 고가용성(최소 2대이상) 설정시

Compute SLA Azure AWS GCP

99.9%~99.95%

(7시간 18분~22분)10% - 10% 10%

> 99.9%

(7시간 18분이상)25% 10% 30% -

95%~99%

(36시간 31분~7시간 18분)- 25% - 25%

> 95%

(36시간 31분이상)100% 100% - 50%

2017년 4월 20일기준

https://azure.microsoft.com/ko-kr/support/legal/sla/virtual-machines/v1_6/

Page 56: 1711 azure-live

네트워크보안그룹•네트워크보안그룹은 Subnet과 NIC에연결할수있습니다.

•현재는 TCP와 UDP만지원되며ICMP는지원되지않습니다.

•대상은 NSG이연결된리소스이며, 소스는 Any, CIDR, Tag로구분됩니다.

•Tag는 Internet, 가상네트워크, 애저부하분산이있습니다.

•허용(Allow)와거부(Deny)를설정할수있고우선순위가있습니다.

Inb

ou

nd

Inb

ou

nd

ou

tbo

un

do

utb

ou

nd

Page 57: 1711 azure-live

관리디스크

•관리디스크를사용하면 Azure에서디스크를직접관리해줍니다.

•저장소계정의종속을받지않습니다.

•스냅샷또는가상컴퓨터이미지를만들수있습니다.

•가상컴퓨터크기집합을사용할때최대 10,000개의가상컴퓨터개수를조절할수있습니다.

Page 58: 1711 azure-live

가상컴퓨터리소스종속지도

네트워크대역폭 저장소대역폭

공인 IP

네트워크보안그룹

저장디스크NIC VM

저장소계정

관리디스크가아닐시

가상 네트워크

Page 59: 1711 azure-live

실습::Ubuntu VM 구성https://github.com/krazure/hands-on-lab/

Page 60: 1711 azure-live

Azure Backup 파일분석압축 meta

mysql.sql

fs .ssh

data

LogFiles

site

SiteExtensions

deployments

diagnostics

locks

repository

siteextensions

wwwroot

Page 61: 1711 azure-live

Wordpress 구성사전조건

•웹앱백업파일과압축해제 Tools

•apache2, php7.0, mysql 5.7

•php 확장모듈필요• php-curl php-gd php-mbstring php-mcrypt php-xml php-

xmlrpc

•라이선스•우리는라이선스없이갑니다.

Page 63: 1711 azure-live

Azure 웹앱 on Linux 그리고Docker

Page 64: 1711 azure-live

Docker란?

Page 65: 1711 azure-live

Docker Engine?

Page 66: 1711 azure-live

Docker는어떻게생겼니?

Page 67: 1711 azure-live

자주쓰는 Docker 명령어들

•docker run

•docker ps

•Docker search

•docker images

•docker rm, docker rmi

•docker build

•docker pull, docker push

Page 68: 1711 azure-live

Dockerfile 구성

•FROM # 기본이되는 Docker image

•WORKDIR # 작업폴더

•ADD/COPY # 파일복사

•RUN # Image 생성에필요한명령어실행

•EXPOSE # 실행되는 Port 지정

•ENV # 환경변수지정

•CMD [""] # 컨테이너가실행될때실행할명령어

Page 69: 1711 azure-live

Docker for Windows and MAC

https://www.docker.com/docker-windows https://www.docker.com/docker-mac

Page 70: 1711 azure-live

막간을이용한책팔이...

•12월이될지내년이될지모르지만Windows Container책이나옵니다.

•백승주, 최정현, 최한홍, 김세준번역

•Windows Container책이지만Docker이야기만가득

Page 71: 1711 azure-live

Docker의개발은 ...ing

•1.13.1도최신이라고생각했는데... (Docker CE, EE)

•매우빠른속도로 Release

•https://docs.docker.com/release-notes/docker-ce/#stable-releases

•https://docs.docker.com/enterprise/17.03/release-notes/#docker-ee-17032-ee-7

Page 72: 1711 azure-live

Dockerizing

•일반 Application을 Docker화시키는작업을뜻함

•Dockerizing 시 Dockerfile을이용하여 docker build를실행하게되며각단계별로 Docker Layer가생성됨

•RUN 명령은최대한한줄로사용할수있도록 &&을이용하여연장하는것이Docker Image 용량을줄이는데에도움을줌

Page 73: 1711 azure-live

Linux의웹앱

•Linux의웹앱은기존웹앱처럼 FTP, Git 등을이용하여소스파일을 Deploy하는방식

•기존방식과다르게 Container 기반의배포를사용할수있는 Linux의웹앱

•UI상배포방식이다를뿐실제동작하는 App Service Plan은하나로동작하며, 기능도동일

Page 75: 1711 azure-live

Linux의웹앱에 Wordpress 복구

Page 76: 1711 azure-live

Docker Registry

•Docker Image를관리할수있는저장소

•기본적으로 Localhost에 Docker Image를저장

•별도의 Docker Registry를구성하여공유/관리가능

Page 77: 1711 azure-live

Docker Hub

•Docker.io에서제공하는 Public Registry

•일반적으로 Docker에서 Image를다운로드받는위치는 Docker Hub

•무료로 1개의 Container를관리할수있음

•https://hub.docker.com/

Page 78: 1711 azure-live

Docker Hub

Page 79: 1711 azure-live

Azure Container Registry

•Azure에서제공하는 Container Registry

•Windows, Linux용전부저장가능

•Azure CLI 2.0을이용하여로그인가능

•프리미엄사용시지역복제사용가능

•https://azure.microsoft.com/ko-kr/services/container-registry/

Page 81: 1711 azure-live

고맙습니다.

Page 82: 1711 azure-live

한국Azure 사용자그룹fb.com/groups/krazure