Transcript
Page 1: 서버인프라 구축 입문 basis of composing server and infra

서버/인프라를 지탱하는 기술

1.서버/인프라 구축 입문 : 다중화/부하분산의 기본

1.1 다중화의 기본 / 1.2 웹 서버의 다중화

Hwanseok, Park

Page 2: 서버인프라 구축 입문 basis of composing server and infra

용어정리

• VIP ( Virtual IP )

– 물리적 서버에 할당되지 않고 유동적인 서비스나 역할에 할당된 IP

• ICMP ( Internet Control Message Protocol )

– IP의 오류보고 / 오류정정 부재를 보완하기 위한 메시지 프로토콜

• ARP ( Address Resolution Protocol )

– 다른 호스트의 MAC 주소를 알기 위해 사용되는 프로토콜

• GARP ( Gratuitous ARP )

– 서브넷에 자싞의 IP의 사용을 확인, 타 호스트에 자싞의 MAC 주소 갱싞을 요청

• 가용성 ( Availability )

– 시스템이 필요할 때 동작하는지 비율

• Round Robin

– 태스크를 공평하게 cpu에 할당하는 것

Page 3: 서버인프라 구축 입문 basis of composing server and infra

1.1 다중화의 기본

Page 4: 서버인프라 구축 입문 basis of composing server and infra

과거의 다중화의 예

Page 5: 서버인프라 구축 입문 basis of composing server and infra

현대의 다중화의 예

• Disaster recovery

– 재해를 대비, 인프라를 복구 또는 지속을 목적을 가진 과정, 정책, 절차

– For example, of companies that had a major loss of business data,

43% never reopen and 29% close within two years.

– IT DR은 세가지 타입으로 구분하여 측정

• Preventive measure

• Detective measure

• Corrective measure.

Page 6: 서버인프라 구축 입문 basis of composing server and infra

다중화란?

Redundancy is…

• 장애가 발생해도 예비 운용장비로 지속적인 서비스를 제공하는 것

• 현대 네트워크 서비스에서는 가용성을 확보하는 것이 관건

• 9.11 테러 이후 특히 Disasters Recovery 에 대한 관심 집중

• 1장에서 소개되는 다중화의 방법

– DNS Round Robin

– Load Balancer

Page 7: 서버인프라 구축 입문 basis of composing server and infra

가용성 (Availability)

• 위키…

– システムが継続して稼動できる能力のこと

– 利用者から見て「使用できる」度合いを示す

– Availability of a system is typically measured as a factor of its reliability

- as reliability increases, so does availability.

– 그러면 반대로 availability를 증가시킨다고 reliability가 증가하는가?

• Blog에서…

– 시스템 품질요소 가운데 가장 중요한 요소로 주어진 시간 동안 주어진 환

경하에서 프로그램이 장애 없이 운영되는 특성

• 소프트웨어 아키텍처 이론과 실제 – 린 베스

– 시스템의 가용성은 시스템이 필요할 때 동작하는지에 대한 비율을 말한다

Page 8: 서버인프라 구축 입문 basis of composing server and infra

다중화의 본질

• 장애를 산정한다

– 라우터가 장애, 서버 장애

• 예비 장비를 준비한다

– 예비 운영장비를 도입

• 운용체제의 정비

– 장애에 대해 어떤 장비로 구성할 지, 어떤 방식을 사용할 지 결정

Page 9: 서버인프라 구축 입문 basis of composing server and infra

웹 서버

웹 서버 예비

라우터

라우터 예비

인터넷

Cold Standby Hot Standby

Hot Standby는 두 대를 가동시켜 늘 같은 상태로 운용.

반면 Cold Standby는 물리적 회선 및 전원상태를 변경

Page 10: 서버인프라 구축 입문 basis of composing server and infra

장애시 대응

웹 서버

웹 서버 예비

라우터

라우터 예비

인터넷

Page 11: 서버인프라 구축 입문 basis of composing server and infra

장애시 대응

웹 서버

웹 서버 예비

라우터

라우터 예비

인터넷

Page 12: 서버인프라 구축 입문 basis of composing server and infra

장애시 대응

웹 서버

웹 서버 예비

라우터

라우터 예비

인터넷

유저

10.0.0.1로 접속!

10.0.0.1

10.0.0.101

10.0.0.102

Page 13: 서버인프라 구축 입문 basis of composing server and infra

장애극복 동작 확인

64bytes from 10.0.0.1: icmp_seq=5 ttl=64 time 0.453 ms 64bytes from 10.0.0.1: icmp_seq=6 ttl=64 time 3.73 ms ... 64bytes from 10.0.0.1: icmp_seq=8 ttl=64 time 0.418 ms 64bytes from 10.0.0.1: icmp_seq=11 ttl=64 time 3.20 ms

ip_takeover() { MAC='ip link show $DEV | egrep -o '([0-9a-f]{2{:){5}[0-9a-f]{2}' | head -n 1 | tr -d :' ip addr add $VIP/24 dev $DEV send_arp $VIP $MAC 255.255.255.255 ffffffffffff }

Page 14: 서버인프라 구축 입문 basis of composing server and infra

장애검출

• Health Check라는 방법을 사용

– ICMP 감시 ( Layer 3)

• Webserver 장애 검출이 어려움

• 라우터에 의한 헬스 체크

– 포트 감시 (Layer 4)

• 과부하 상태를 확인 할 수 없음

– 서비스 감시 (Layer 7)

• 서버의 과부하 발생

• Web server의 헬스체크에 사용

Page 15: 서버인프라 구축 입문 basis of composing server and infra

1.2 웹 서버의 다중화

Page 16: 서버인프라 구축 입문 basis of composing server and infra

DNS 라운드 로빈

• DNS round robin is

– DNS를 이용하여 하나의 서비스에 여러 대의 서버를 분산시키는 방법

• 동일한 이름으로 여러 개의 IP를 등록.

• 비교적 간단한 방법이지만 단점이 존재

– 서버의 수만큼 주소가 필요

– 균등 분산되지 않음

– 웹서버의 장애를 감지하지 못함

10.0.0.101

ㅂㄴ②③

유저

Ex.com 접속

DNS 10.0.0.101 10.0.0.102

10.0.0.101

웹 서버1

10.0.0.101

Page 17: 서버인프라 구축 입문 basis of composing server and infra

DNS 라운드로빈의 다중화 구성 예

웹 서버

웹 서버2

라우터 인터넷 유저

Ex.com 접속 10.0.0.1

10.0.0.101

10.0.0.102

10.0.0.2

웹 서버1

웹 서버2

라우터 인터넷 유저

Ex.com 접속

10.0.0.101

10.0.0.102

10.0.0.2 (VIP)

10.0.0.1 (VIP)

Page 18: 서버인프라 구축 입문 basis of composing server and infra

• 웹서버1과 웹서버2의 vip가 다르므로 script 수정

– 두개의 VIP를 가지고 반복문을 이용한 script 작성

• ICMP 감시이므로 웹서비스 장애시 극복 불가

– Ping이 아닌 curl을 이용하여 헬스 체크

• 웹서비스가 정지해도 VIP를 해제 하지 않으므로 IP 주소 중복

– VIP를 해제하는 ip_del()함수 작성

• 한 번이라도 장애가 극복되면 스크립트가 정지

– While true문으로 무한반복

Page 19: 서버인프라 구축 입문 basis of composing server and infra

ip_add() {

MAC = 'ip link show $DEV | egrep -o '([0-9a-f]{2}:){5}[0-9a-f]{2}' | head -n 1 | tr -d :'

ip addr add $1/24 dev $DEV

send_arp $1 255.255.255.255 ffffffffffff

}

ip_del() {

ip addr del $1/24 dev $DEV

}

healthcheck() {

for I in $VIP;do

if(["200" -ne "'curl -s -I 'http://$i/' | head -n 1 | cut -f 2 -d'''\]; then

if[-z"'ip addr show $DEV | grep $i'" ]; then

ip_add $i

else

ip_del $i

while true; do healthcheck;sleep 1;done

기존의 ip_takeover와 동일 -즉, 다른 webserver로 스위칭

IP 중복을 막기 위해 설정된 vip를 제거

Page 20: 서버인프라 구축 입문 basis of composing server and infra

보다 편하게 확장하기

• 서버가 2->3대로 늘어 난다면

– 한 서버가 다운되면 어떤 서버가 vip를 인계하는가?

– 장애극복 순간 두 대의 서버가 같은 vip를 가질 수 있음

– 한번 정지한 서버 복귀가 곤란

• 다음장 1.3 웹 서버의 다중화에서 소개

– Load Balancer을 이용하여 해결

Page 21: 서버인프라 구축 입문 basis of composing server and infra