SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
서버/인프라를 지탱하는 기술
   1.서버/인프라 구축 입문 : 다중화/부하분산의 기본
        1.1 다중화의 기본 / 1.2 웹 서버의 다중화


                         Hwanseok, Park
용어정리
•   VIP ( Virtual IP )
     – 물리적 서버에 할당되지 않고 유동적인 서비스나 역할에 할당된 IP

•   ICMP ( Internet Control Message Protocol )
     – IP의 오류보고 / 오류정정 부재를 보완하기 위한 메시지 프로토콜

•   ARP ( Address Resolution Protocol )
     – 다른 호스트의 MAC 주소를 알기 위해 사용되는 프로토콜

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

•   가용성 ( Availability )
     – 시스템이 필요할 때 동작하는지 비율

•   Round Robin
     – 태스크를 공평하게 cpu에 할당하는 것
1.1 다중화의 기본
과거의 다중화의 예
현대의 다중화의 예

• 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.
다중화란?

Redundancy is…

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

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

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

• 1장에서 소개되는 다중화의 방법
   – DNS Round Robin

   – Load Balancer
가용성 (Availability)

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

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

  – Availability of a system is typically measured as a factor of its reliability
    - as reliability increases, so does availability.

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

• Blog에서…
  – 시스템 품질요소 가운데 가장 중요한 요소로 주어진 시간 동안 주어진 환
    경하에서 프로그램이 장애 없이 운영되는 특성

• 소프트웨어 아키텍처 이론과 실제 – 린 베스
  – 시스템의 가용성은 시스템이 필요할 때 동작하는지에 대한 비율을 말한다
다중화의 본질

• 장애를 산정한다
  – 라우터가 장애, 서버 장애

• 예비 장비를 준비한다
  – 예비 운영장비를 도입

• 운용체제의 정비
  – 장애에 대해 어떤 장비로 구성할 지, 어떤 방식을 사용할 지 결정
웹 서버           라우터

                              인터넷

  웹 서버           라우터
   예비            예비



Hot Standby   Cold Standby

Hot Standby는 두 대를 가동시켜 늘 같은 상태로 운용.
반면 Cold Standby는 물리적 회선 및 전원상태를 변경
장애시 대응




   웹 서버   라우터

                인터넷

   웹 서버   라우터
    예비    예비
장애시 대응




   웹 서버   라우터

                인터넷

   웹 서버   라우터
    예비    예비
장애시 대응




                   라우터
   웹 서버
  10.0.0.101                     인터넷
        10.0.0.1
                   라우터
   웹 서버            예비
    예비                   10.0.0.1로 접속!
  10.0.0.102
                                         유
                                         저
장애극복 동작 확인


 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
 }



 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
장애검출

• Health Check라는 방법을 사용
  – ICMP 감시 ( Layer 3)
     • Webserver 장애 검출이 어려움

     • 라우터에 의한 헬스 체크

  – 포트 감시 (Layer 4)
     • 과부하 상태를 확인 할 수 없음

  – 서비스 감시 (Layer 7)
     • 서버의 과부하 발생

     • Web server의 헬스체크에 사용
1.2 웹 서버의 다중화
DNS 라운드 로빈

• DNS round robin is
   – DNS를 이용하여 하나의 서비스에 여러 대의 서버를 분산시키는 방법
        10.0.0.101
      • 동일한 이름으로 여러 개의 IP를 등록.



• 비교적 간단한 방법이지만 단점이 존재
                                         ②
   – 서버의 수만큼 주소가 필요                           10.0.0.101

   – 균등 분산되지 않음                     DNS                        유
                                 10.0.0.101                    저
                                                      ①
   – 웹서버의 장애를 감지하지 못함            10.0.0.102
                                                Ex.com 접속
                                                           ③


                                 웹 서버1
                                 10.0.0.101
DNS 라운드로빈의 다중화 구성 예

10.0.0.1
 (VIP) 웹 서버1
         10.0.0.101                             유
                        라우터   인터넷
                                                저
10.0.0.2
 (VIP) 웹 서버2                        Ex.com 접속
           10.0.0.102




            웹 서버
           10.0.0.101                           유
                        라우터   인터넷
                                                저
10.0.0.1
           웹 서버2                    Ex.com 접속
10.0.0.2
           10.0.0.102
• 웹서버1과 웹서버2의 vip가 다르므로 script 수정
  – 두개의 VIP를 가지고 반복문을 이용한 script 작성

• ICMP 감시이므로 웹서비스 장애시 극복 불가
  – Ping이 아닌 curl을 이용하여 헬스 체크

• 웹서비스가 정지해도 VIP를 해제 하지 않으므로 IP 주소 중복
  – VIP를 해제하는 ip_del()함수 작성

• 한 번이라도 장애가 극복되면 스크립트가 정지
  – While true문으로 무한반복
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_takeover와 동일
}                                                        -즉, 다른 webserver로 스위칭

ip_del() {
    ip addr del $1/24 dev $DEV                             IP 중복을 막기 위해 설정된 vip를 제거
}


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
보다 편하게 확장하기

• 서버가 2->3대로 늘어 난다면
  – 한 서버가 다운되면 어떤 서버가 vip를 인계하는가?

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

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

• 다음장 1.3 웹 서버의 다중화에서 소개
  – Load Balancer을 이용하여 해결
끝

Mais conteúdo relacionado

Mais procurados

메모리 할당에 관한 기초
메모리 할당에 관한 기초메모리 할당에 관한 기초
메모리 할당에 관한 기초Changyol BAEK
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술NAVER D2
 
[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis ClusterNAVER D2
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드Hyunjik Bae
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기Hyun-jik Bae
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드Hyunjik Bae
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability흥배 최
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsSungMin OH
 
Redis basicandroadmap
Redis basicandroadmapRedis basicandroadmap
Redis basicandroadmapDaeMyung Kang
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
Redis Overview
Redis OverviewRedis Overview
Redis Overviewkalzas
 

Mais procurados (20)

메모리 할당에 관한 기초
메모리 할당에 관한 기초메모리 할당에 관한 기초
메모리 할당에 관한 기초
 
Redis on AWS
Redis on AWSRedis on AWS
Redis on AWS
 
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
[244]네트워크 모니터링 시스템(nms)을 지탱하는 기술
 
[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
Redis 2017
Redis 2017Redis 2017
Redis 2017
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloops
 
Cache governance
Cache governanceCache governance
Cache governance
 
Redis basicandroadmap
Redis basicandroadmapRedis basicandroadmap
Redis basicandroadmap
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
Redis acc 2015
Redis acc 2015Redis acc 2015
Redis acc 2015
 

Destaque

서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
H/W 규모산정기준
H/W 규모산정기준H/W 규모산정기준
H/W 규모산정기준sam Cyberspace
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음nexusz99
 
서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들raccoony
 
TTA H/W 규모산정 지침 Ttak.ko 10.0292
TTA H/W 규모산정 지침 Ttak.ko 10.0292TTA H/W 규모산정 지침 Ttak.ko 10.0292
TTA H/W 규모산정 지침 Ttak.ko 10.0292sam Cyberspace
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론Terry Cho
 
Google3
Google3Google3
Google3semi06
 
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현nexusz99
 
Introduction to IBM MessageSight
Introduction to IBM MessageSightIntroduction to IBM MessageSight
Introduction to IBM MessageSightAndrew Schofield
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
2014 IT Infra Plan
2014 IT Infra Plan2014 IT Infra Plan
2014 IT Infra Plan석 허
 
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)Jo Sangwon
 
Ch6. telegraph and relay
Ch6. telegraph and relayCh6. telegraph and relay
Ch6. telegraph and relayHwanseok Park
 
장애 관리 방안
장애 관리 방안장애 관리 방안
장애 관리 방안Junho Lee
 
Ch11. server infra
Ch11. server infraCh11. server infra
Ch11. server infraMungyu Choi
 
Social Networks Study
Social Networks StudySocial Networks Study
Social Networks Studydelver
 
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우daumfoundation
 

Destaque (20)

서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
H/W 규모산정기준
H/W 규모산정기준H/W 규모산정기준
H/W 규모산정기준
 
서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음서버 개발자가 되기 위한 첫 걸음
서버 개발자가 되기 위한 첫 걸음
 
서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들
 
TTA H/W 규모산정 지침 Ttak.ko 10.0292
TTA H/W 규모산정 지침 Ttak.ko 10.0292TTA H/W 규모산정 지침 Ttak.ko 10.0292
TTA H/W 규모산정 지침 Ttak.ko 10.0292
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
 
Google3
Google3Google3
Google3
 
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현
스마트 홈 Io t 서비스를 위한 분산 데이터베이스 설계 및 구현
 
Introduction to IBM MessageSight
Introduction to IBM MessageSightIntroduction to IBM MessageSight
Introduction to IBM MessageSight
 
Startup Best Practices on AWS
Startup Best Practices on AWSStartup Best Practices on AWS
Startup Best Practices on AWS
 
AWS로 불꺼온 나날들
AWS로 불꺼온 나날들AWS로 불꺼온 나날들
AWS로 불꺼온 나날들
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
2014 IT Infra Plan
2014 IT Infra Plan2014 IT Infra Plan
2014 IT Infra Plan
 
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)
Definition and Tendency of Fabric Computing (패브릭 컴퓨팅의 정의와 현재 경향)
 
Ch6. telegraph and relay
Ch6. telegraph and relayCh6. telegraph and relay
Ch6. telegraph and relay
 
장애 관리 방안
장애 관리 방안장애 관리 방안
장애 관리 방안
 
Ch11. server infra
Ch11. server infraCh11. server infra
Ch11. server infra
 
Social Networks Study
Social Networks StudySocial Networks Study
Social Networks Study
 
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우
[2013 체인지온] 네트워크 안에 힘이 있다 - 한동우
 

Semelhante a 서버인프라 구축 입문 basis of composing server and infra

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
F5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfF5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfSolutions Architect
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5PLUS-I
 
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유Kyoungchan Lee
 
Build the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouseBuild the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHousejieun kim
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략Cyworld AppStore (SK Communications)
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista Community
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infraJe Hun Kim
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service ArichitectureDaeMyung Kang
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 
600.Troubleshooting Patterns
600.Troubleshooting Patterns600.Troubleshooting Patterns
600.Troubleshooting PatternsOpennaru, inc.
 
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인 [KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인 Boin Kim
 

Semelhante a 서버인프라 구축 입문 basis of composing server and infra (20)

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
F5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdfF5_Active-Active Data Center.pdf
F5_Active-Active Data Center.pdf
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5ShieldOne-SIG 제품소개서 3.5
ShieldOne-SIG 제품소개서 3.5
 
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
 
Build the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouseBuild the OpenStack Cloud with Neutron Networing, IceHouse
Build the OpenStack Cloud with Neutron Networing, IceHouse
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
 
Lena Application Server
Lena  Application ServerLena  Application Server
Lena Application Server
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
MSA와 infra
MSA와 infraMSA와 infra
MSA와 infra
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service Arichitecture
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 
600.Troubleshooting Patterns
600.Troubleshooting Patterns600.Troubleshooting Patterns
600.Troubleshooting Patterns
 
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인 [KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인
[KAU UMC 컨퍼런스] 네트워크 트래픽 분산 시스템 구축하기 - 김보인
 

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

  • 1. 서버/인프라를 지탱하는 기술 1.서버/인프라 구축 입문 : 다중화/부하분산의 기본 1.1 다중화의 기본 / 1.2 웹 서버의 다중화 Hwanseok, Park
  • 2. 용어정리 • VIP ( Virtual IP ) – 물리적 서버에 할당되지 않고 유동적인 서비스나 역할에 할당된 IP • ICMP ( Internet Control Message Protocol ) – IP의 오류보고 / 오류정정 부재를 보완하기 위한 메시지 프로토콜 • ARP ( Address Resolution Protocol ) – 다른 호스트의 MAC 주소를 알기 위해 사용되는 프로토콜 • GARP ( Gratuitous ARP ) – 서브넷에 자싞의 IP의 사용을 확인, 타 호스트에 자싞의 MAC 주소 갱싞을 요청 • 가용성 ( Availability ) – 시스템이 필요할 때 동작하는지 비율 • Round Robin – 태스크를 공평하게 cpu에 할당하는 것
  • 5. 현대의 다중화의 예 • 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.
  • 6. 다중화란? Redundancy is… • 장애가 발생해도 예비 운용장비로 지속적인 서비스를 제공하는 것 • 현대 네트워크 서비스에서는 가용성을 확보하는 것이 관건 • 9.11 테러 이후 특히 Disasters Recovery 에 대한 관심 집중 • 1장에서 소개되는 다중화의 방법 – DNS Round Robin – Load Balancer
  • 7. 가용성 (Availability) • 위키… – システムが継続して稼動できる能力のこと – 利用者から見て「使用できる」度合いを示す – Availability of a system is typically measured as a factor of its reliability - as reliability increases, so does availability. – 그러면 반대로 availability를 증가시킨다고 reliability가 증가하는가? • Blog에서… – 시스템 품질요소 가운데 가장 중요한 요소로 주어진 시간 동안 주어진 환 경하에서 프로그램이 장애 없이 운영되는 특성 • 소프트웨어 아키텍처 이론과 실제 – 린 베스 – 시스템의 가용성은 시스템이 필요할 때 동작하는지에 대한 비율을 말한다
  • 8. 다중화의 본질 • 장애를 산정한다 – 라우터가 장애, 서버 장애 • 예비 장비를 준비한다 – 예비 운영장비를 도입 • 운용체제의 정비 – 장애에 대해 어떤 장비로 구성할 지, 어떤 방식을 사용할 지 결정
  • 9. 웹 서버 라우터 인터넷 웹 서버 라우터 예비 예비 Hot Standby Cold Standby Hot Standby는 두 대를 가동시켜 늘 같은 상태로 운용. 반면 Cold Standby는 물리적 회선 및 전원상태를 변경
  • 10. 장애시 대응 웹 서버 라우터 인터넷 웹 서버 라우터 예비 예비
  • 11. 장애시 대응 웹 서버 라우터 인터넷 웹 서버 라우터 예비 예비
  • 12. 장애시 대응 라우터 웹 서버 10.0.0.101 인터넷 10.0.0.1 라우터 웹 서버 예비 예비 10.0.0.1로 접속! 10.0.0.102 유 저
  • 13. 장애극복 동작 확인 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 } 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
  • 14. 장애검출 • Health Check라는 방법을 사용 – ICMP 감시 ( Layer 3) • Webserver 장애 검출이 어려움 • 라우터에 의한 헬스 체크 – 포트 감시 (Layer 4) • 과부하 상태를 확인 할 수 없음 – 서비스 감시 (Layer 7) • 서버의 과부하 발생 • Web server의 헬스체크에 사용
  • 15. 1.2 웹 서버의 다중화
  • 16. DNS 라운드 로빈 • DNS round robin is – DNS를 이용하여 하나의 서비스에 여러 대의 서버를 분산시키는 방법 10.0.0.101 • 동일한 이름으로 여러 개의 IP를 등록. • 비교적 간단한 방법이지만 단점이 존재 ② – 서버의 수만큼 주소가 필요 10.0.0.101 – 균등 분산되지 않음 DNS 유 10.0.0.101 저 ① – 웹서버의 장애를 감지하지 못함 10.0.0.102 Ex.com 접속 ③ 웹 서버1 10.0.0.101
  • 17. DNS 라운드로빈의 다중화 구성 예 10.0.0.1 (VIP) 웹 서버1 10.0.0.101 유 라우터 인터넷 저 10.0.0.2 (VIP) 웹 서버2 Ex.com 접속 10.0.0.102 웹 서버 10.0.0.101 유 라우터 인터넷 저 10.0.0.1 웹 서버2 Ex.com 접속 10.0.0.2 10.0.0.102
  • 18. • 웹서버1과 웹서버2의 vip가 다르므로 script 수정 – 두개의 VIP를 가지고 반복문을 이용한 script 작성 • ICMP 감시이므로 웹서비스 장애시 극복 불가 – Ping이 아닌 curl을 이용하여 헬스 체크 • 웹서비스가 정지해도 VIP를 해제 하지 않으므로 IP 주소 중복 – VIP를 해제하는 ip_del()함수 작성 • 한 번이라도 장애가 극복되면 스크립트가 정지 – While true문으로 무한반복
  • 19. 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_takeover와 동일 } -즉, 다른 webserver로 스위칭 ip_del() { ip addr del $1/24 dev $DEV IP 중복을 막기 위해 설정된 vip를 제거 } 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
  • 20. 보다 편하게 확장하기 • 서버가 2->3대로 늘어 난다면 – 한 서버가 다운되면 어떤 서버가 vip를 인계하는가? – 장애극복 순간 두 대의 서버가 같은 vip를 가질 수 있음 – 한번 정지한 서버 복귀가 곤란 • 다음장 1.3 웹 서버의 다중화에서 소개 – Load Balancer을 이용하여 해결
  • 21.