29
Azure의 부하 분산 김세준 2017-02-07

[Azure study group] azure의 부하분산

  • Upload
    -

  • View
    27

  • Download
    0

Embed Size (px)

Citation preview

Azure의 부하 분산

김세준

2017-02-07

Azure Load Balancer

Azure Load Balancer

• L4 기반의 Load balancer

• 공인 IP를 Mapping 시킬 수 있으며, 고정 IP로도 설정 가능

• VM의 Availability set을 정의하지 않으면 1:1 Mapping만 가능하며 VM만 연결할 수 있음

• Backend Instance가 사설 IP(Private IP)만 있더라도 ALB에서 트래픽 전달 가능

• Inbound NAT Rules로 공인 IP(Public IP)가 없는 VM에 직접 접근 가능 (Port forwarding 가능)

• L4 기반의 LB로써 TCP와 UDP패킷을 분산하지만, Probes는 TCP와 HTTP를 설정할 수 있음

• Load Balancing Rules를 설정할 시 Source IP 선호도 모드와 해시 기반 배포 모드로 설정 가능

• 기본적은 Load Balancing Rules은 해시 기반 배포 모드

• 유휴 제한시간이 있으며, 기본적으로 4분

• Internal Load Balancer도 제작 가능

• 공인 IP를 여러 개 연결하여 IP 기반 부하분산 기능을 사용할 수 있음

• 모든 설정을 수동으로 전부 해야지만 동작

해시 기반 배포 모드

• 5개 튜플(원본 IP, 원본 포트, 대상 IP, 대상 포트, 프로토콜 종류) : none (Default)

• 세션 연결 시만 동작

소스 IP 선호도 모드

• 2개 튜플(원본 IP, 대상 IP) : sourceIP

• 3개 튜플(원본 IP, 대상 IP, 프로토콜) : sourceIPProtocol

• 부하 분산 집합이 변경되면(가상 컴퓨터 추가 또는 제거)

클라이언트 요청 배포가 다시 계산

• 트래픽이 불규칙하게 배포될 수 있음

SQL Always On에 대해 부하 분산 장치 구성

• Internal Load Balancer (lLB) 에서만 사용 가능

• 동일한 가상 네트워크에 있는 서비스 및 VM

• 연결된 온-프레미스 네트워크의 서비스 및 VM

• 상호 연결된 VNet의 서비스 및 VM

• 부동 IP 설정 필요

ALB에 여러 Virtual IP 연결

부동 IP 설정으로 백엔드 포트 재사용백엔드 포트 재사용하지 않음

Outbound 연결의 이해

시나리오 메서드 참고

독립 실행형 VM(부하 분산 장치 없음, 인스턴스수준 공용 IP 주소 없음)->Availability set을 설정이 되지않은 VM

기본 SNATAzure에서는 SNAT에 공용 IP 주소를 연결합니다.

부하 분산 VM(VM에 인스턴스 수준 공용 IP 주소 없음)->Availability set을 설정하고 pip가 연결되지 않은 VM

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

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

인스턴스 수준 공용 IP 주소를 가진 VM(부하 분산 장치 있음 또는 없음)->Availability set을 설정하고 pip가 연결된 VM

SNAT를 사용하지 않습니다.Azure에서는 VM에 할당된 공용IP를 사용합니다.

Outbound 연결의 이해

VM에 공인 IP 있음VM에 공인 IP 없음

SNAT 사용(Port 개수 1024-65535)

Inbound Outbound

SNAT 미사용

Inbound Outbound

• SNAT 사용 시 1개의 Public IP가 Backend VM으로 Packet 전달 시 SNAT를 사용하기 때문에 Port 임계치인

64,500개 이상 연결을 할 시 오류가 발생할 수 있음

SNAT 사용 시 Public IP의 Port 부족으로 발생할 수 있는 Error Log 예제

{"time": "2016-01-26T10:37:46.6024215Z","systemId": "32077926-b9c4-42fb-94c1-762e528b5b27","category": "LoadBalancerAlertEvent","resourceId": "/SUBSCRIPTIONS/XXXXXXXXXXXXXXXXX-XXXX-XXXX-

XXXXXXXXX/RESOURCEGROUPS/RG7/PROVIDERS/MICROSOFT.NETWORK/LOADBALANCERS/WWEBLB","operationName": "LoadBalancerProbeHealthStatus","properties": {

"eventName": "Resource Limits Hit","eventDescription": "Ports exhausted","eventProperties": {

"public ip address": "40.117.227.32"}

}}

그럼 이게 뭔말?

NAT

LB MUX

VM DIP

10.1.1.2

VM DIP

10.1.1.3

Azure VMSwitch

Stateless터널

엣지라우터

클라이언트

VIP

VIP

DIPDIP

직접 전달:VIP

VIP

LB MUX

VM DIP

10.1.1.4

VM DIP

10.1.1.5

Azure VMSwitch

NAT컨트롤러

테넌트 정의:VIPs, # DIPs

맵핑

NAT

• LB의 목표 : VIP와 DIP 묶음을

클라우드 서비스에 연결

• SDN 컨트롤러가 LB/vSwitch간

교신을 추상화

• 2단계로 이루어짐:

1. 부하 분산 - DIP 선택

2. NAT - VIP->DIP와 포트 변환

• NAT에서 vSwitch로의 전달은 부하 분산이

Stateless(ECMP)로 처리된 후, 직접 전달

• MUX는 VM 형태로 확장 및 축소가 가능

From. 백승주 부장’s PPT

Logging 활성화

Application Gateway

Application Gateway

• L7 기반의 Load balancer

• 공인 IP를 Mapping 시킬 수 있으나, 동적 IP로만 설정 가능

• 기본적인 설정은 되어있으며, Backend Pool만 설정하면 바로 사용 가능

• Backend Instance가 사설 IP(Private IP)만 있더라도 AGW에서 트래픽 전달 가능

• WAF를 활성화 할 수 있음 탐지(검색) 모드와 제어(방지) 모드가 있음 (Preview)

• HTTP(S) 트래픽만 서비스 가능

• 쿠키 기반 세션 선호도 처리 가능

• SSL 오프로드를 지원하며, 종단간 SSL도 지원 (테스트 해보지 못했음…)

• Load Balancing Mode는 Round Robin

• URL 기반 라우팅이 가능하며, 여러 Site를 하나의 AGW에서 라우팅 가능

• Websocket Native 지원

• EndPoint는 모든 Azure 내부 IP 주소 또는 공용 인터넷 IP 주소

URL 기반 라우팅 (URL Path Routing)

다중 사이트 라우팅

구성 테스트

Logging 활성화

Application Gateway 가격 정책

APPLICATION GATEWAY 유형 기본 APPLICATION GATEWAY WAF APPLICATION GATEWAY(미리 보기)

작음 게이트웨이 시간당 ₩30(~₩22,320/월)

사용할 수 없음

중간 게이트웨이 시간당 ₩84.00(~₩62,496/월)

미리 보기 중 기본과 동일한 가격

큼 게이트웨이 시간당 ₩384(~₩285,696/월)

미리 보기 중 기본과 동일한 가격

데이터 처리 작음 중간 큼

첫 10TB/월 GB당 ₩9.60 무료 무료

다음 30TB(10 - 40TB)/월

GB당 ₩9.60 GB당 ₩8.40 무료

40TB 초과/월 GB당 ₩9.60 GB당 ₩8.40 GB당 ₩4.20

Traffic Manager

Traffic Manager

• DNS 기반의 Load balancer

• DNS 기반의 Failover 구성이 가능

• Azure Service 이외 DNS로 접근 가능한 모든 Endpoint를 소유할 수 있음

• Swapping Service를 지원하지 않는 Service 이용 시 매우 유용

• Probe는 Protocol(HTTP/HTTPS)과 Port, 그리고 Monitoring Path를 설정할 수 있음

• DNS TTL의 기본값은 300초

• 트래픽 라우팅 방법은 우선순위, 가중치, 성능으로 통 세가지가 있으며, 중첩으로 설정이 가능

Traffic Manager 동작 방법

우선 순위 동작 방법

가중치 동작 방법

성능 동작 방법

Traffic Manager 가격 정책

구분 가격

처음 10억 개 DNS 쿼리/월 ₩648/1백만 쿼리

10억 개 초과 DNS 쿼리/월 ₩450/1백만 쿼리

상태 확인(Azure) Azure 끝점당 ₩432/월

상태 확인(외부) 외부 끝점당 ₩648/월

조사하면서 알게 된 것들

알게 된 몰랐던 것들

• VM 하나 띄우고, LB 하나 설정 바꾸고 하는데 너무 많은 시간이 소모되는 느낌 (AWS와 비교 시)

• 생각보다 친절하지 않은 UI이나, 경력자 들은 손쉽게 사용할 수 있는 흐름

• 여기저기 왔다 갔다 하지 않고도 처리할 수 있는 업무가 많음

• Wide 모니터(21:9)가 절실히 필요함

• 정적 공인 IP가 유료라는 것을 알게 됨 (5개 까지만 무료)

https://azure.Microsoft.com/ko-kr/pricing/details/ip-addresses/

• 동적 공인 IP는 각 Instance마다 무료~ (과금시 $0.004, AWS는 $0.005)

• Availability set이 VM을 여러 개 생성해 주는 것이 아니라 Set에 속한 VM들을 물리 분리 해준다는 의미

• Azure Blob은 S3랑 비교할 때 나쁘지 않다.

각 서비스 비교

부여 Azure Load Balancer 응용 프로그램 게이트웨이 트래픽 관리자

기술 전송 수준(계층 4) 응용 프로그램 수준(계층 7) DNS 수준

지원되는 응용 프로그램 프로토콜

모두 HTTP 및 HTTPS모두

(HTTP 끝점은 끝점 모니터링에 필요함)

끝점Azure VM 및 클라우드 서비스

역할 인스턴스모든 Azure 내부 IP 주소 또는

공용 인터넷 IP 주소Azure VM, 클라우드 서비스,

Azure 웹앱 및 외부 끝점

Vnet 지원인터넷 연결 및 내부(Vnet) 응용 프로그램

모두에 사용할 수 있습니다.인터넷 연결 및 내부(Vnet) 응용 프로그램

모두에 사용할 수 있습니다.인터넷 연결 응용 프로그램만 지원

끝점 모니터링 프로브를 통해 지원됨 프로브를 통해 지원됨 HTTP/HTTPS GET을 통해 지원됨

Protocol TCP/UDP HTTP/HTTPS -

고정 IP 지원 - -

Load BalancingMode

5 튜플(원본 IP, 원본 포트, 대상 IP, 대상 포트, 프로토콜 유형)

Round Robin우선 순위, 가중치, 성능을 기반한

DNS

Load BalancingMode

(Sticky Session)

2 튜플(원본 IP 및 대상 IP), 3 튜플(원본 IP, 대상 IP 및 포트) 가상 컴퓨터의 수에 따라

확장 또는 축소할 수 있습니다.쿠키 기반 선호도 -

SLA 무료 99.95% 99.99%