서버/인프라를 지탱하는 기술
     웹 서버의 다중화
(IPVS를 이용한 로드밸런서)
             양충현
DNS 라운드로빈과 로드밸런서의 차이

• DNS Round Robin
  – DNS를 이용해서 하나의 서비스에 여러 대의
    서버를 분산시키는 방법.
  – 웹 서버 마다 공인 IP 할당.
  – 균등하게 분산 안됨.
  – 웹 서버가 다운되어도 감지 못함.
DNS 라운드로빈과 로드밸런서의 차이

• Load Balancer
  – 하나의 IP주소에 대해 요청을 복수의 서버로
    분산.
  – 공인 IP를 가진 가상적인 서버로 동작하여 요
    청의 대해 실제 웹 서버로 중계 역할.
  – 여러 대의 리얼 서버중 한 대를 선택해서 중계.
  – 고가의 장비 및 유지 보수 비용이 큼.
• 비용 절약으로인한 OSS(opensource
  software) 구축
IPVS-리눅스로 로드밸런서 구성
• 리눅스로 특별한 S/W 없이 라우터 운용가능.
• IPVS(IP Virtual Server)라는 부하 분산 기능을 제공
  하는 모듈도 포함.
• 로드밸런서 종류와 IPVS 기능
  – L4 스위치
    • 트랜스 포트 계층까지 의 정보를 분석.
    • IP, Port에 따라 분산대상 서버지정.
  – L7 스위치
    • 애플리케이션 계층까지 정보를 분석.
    • URL에 따라 분산대상 서버 지정.
  – IPVS에 내장되어 있는 것은 L4 스위치에 해당.
    • L7 스위치는 이용불가.
스케쥴링 알고리즘
• rr(round-robin)
   – 차례대로 처리.
• wrr(weighted round-robin)
   – rr + 가중치.
• lc(least-connection)
   – 접속수가 가장 적은 서버 선택.
• wlc(weighted least-connection)
   – lc + 가중치.
• sed(shortest expected delay)
   – 응답속도가 가장 빠른 서버 선택.
• nq(never queue)
   – sed와 동일 그러니 active 수가 0인 서버 최우선으로 선택.
스케쥴링 알고리즘
• sh(source hashing)
  – source ip 주소 해시 값 계산 후 분산 서버 선택.
• dh(destination hashing)
  – 목적지 ip 주소 해시 값 계산 후 분산 서버 선택.
• lblc(locality-based least-connection)
  – 접속수가 가중치로 지정한 값을 넘기 전까지 동일한 서버
    선택.
• lblcr(locality-based least-connection with
  replication)
  – lblc + 모든 서버의 접속수가 가중치로 지정한 값을 넘는
    경우 접속수가 가장 적은 서버 선택.
IPVS 사용하기
• ipvsadm
  – IPVS에서 제공하는 명령툴.
  – 가상서버를 정의하고 리얼 서버를 할당.
  – 접속상황,전송률, 통계정보를 제공.
• Keepalived
  – IPVS를 이용하여 가상서버를 구축.
  – 리얼 서버의 상태 체크.(다운 시 부하분산 제외)
     • HTTP_GET, SSL_GET, TCP_CHECK, SMTP_CHECK,
       MISC_CHECK
L4스위치와 L7스위치

              L4 스위치




              L7 스위치



• L4스위치는 클라이언트가 통신하는 곳은 리얼 서버.
• L7 스위치에 클라이언트와 리얼 서버 각각의 TCP
  세션을 전개.
NAT와 DSR
• NAT(Network Address Translation)
  – 한 네트워크 컴퓨터의 IPv4 주소를 다른 네트워크 컴
    퓨터의 IPv4 주소로 변환.
• DSR(Direct Server Return)
  – 로드밸런서 사용시 리얼서버에서 클라이언트로 되돌아
    가는 경우 목적지의 주소가 스위치 주소가 아닌 클라
    이언트 주소로 전달하는 개념.
  – 로드밸런서 병목, 높은 트래픽이 있는 경우 DSR로 권
    장.
NAT와 DSR 동작 방식
부하분산 시 주의점(동일 서브넷)
                                      이 구성에는 NAT 사용 불가.
                                      DSR로 구성.
                                    가상서버
                                    192.168.0.150/24




웹 서버             메일서버                    메일서버
192.168.0.1/24   192.168.0.151/24        192.168.0.152/24
서버/인프라를 지탱하는 기술
     라우터 및
  로드밸런서의 다중화
           양충현
다중화 프로토콜 VRRP
• 라우터나 로드밸러서 벤더들의 독자적인
  다중화 프로토콜
  – 서로 다른 벤더간 호환 불가.
• HSRP(Hot standby Routing Protocol)기
  반으로 벤더에 의존하지 않는 다중화 프로
  토콜 VRRP(Virtual Router Redundancy
  Protocol) 개발.
VRRP 패킷




• 마스터 노드가 정기적으로 VRRP 패킷을 멀티캐스팅
  (224.0.0.18)주소로 송신.
 – 마스터가 정상 작동임을 알리는 메시지(Advertisement)
• 백업 노드는 VRRP 패킷을 수신하는 동안은 대기중, 일정
  시간 수신 하지 못하면 마스터 노드 다운으로 판단 장애
  극복 시작.
가상 라우터 ID
  로드 밸런서 A                    로드 밸런서 B
  (Active)         VRRP       (Backup)



   VRRP 패킷을 송신   224.0.0.18


  로드 밸런서 C                      로드 밸런서 D
  (Active)                      (Backup)
                    VRRP

• Virtual Rtr ID.
• VRRP 패킷은 멀티 캐스팅주소로 송신
 – 주소 변경 불가.
• 인스턴스를 구분하기 위한 용도.
우선순위(Priority)
• Priority.
• VRRP 구조적으로 100대의 백업 노드를 가
  질수 있음.
• 백업 노드가 2대 이상 작동 시 우선순위
  부여.
• 수치적으로 높을수록 우선순위가 높음.
• 사용범위는 1~255, 기본값은 100
선점형 모드(Preemptive Mode)
• 선점형 모드 유효화
 – 자신의 Priority보다 낮은 값을 수신하면
   master상태로 변경.
 – Default mode.
• 선전형 모드 무효화
 – 자신의 Priority 보다 낮은 값을 수신하더라도
   현 상태를 유지.
가상 MAC주소
• VRRP에는 가상 MAC주소가 정의.
• 장애극복 시 IP주소뿐만 아니라, MAC주소
  도 함께 인계.
  – MAC 주소를 인계하지 않을 경우, 통신 상대
    가 되는 모든 장비의 ARP 테이블의 변경 필요.
• Physical/Virtual 2가지 mode
  – Default mode Virtual.
Keepalived의 구조상의 문제
• Keepalived의 VRRP는 가상 MAC주소를 허용하지 않
  음.
• 장애극복 시 ARP 엔트리가 갱신되지 않는 장비가 있
  을 경우, APR 캐시가 clear가 되까지 통신되지 않을
  위험성 소지.
• gratuitous ARP의 지연송신
  – 마스터 상태로 변경 후 GARP를 송신 시 네트워크 상태 불
    안정, 일시적인 트래픽이 집중되어 통신이 안될 수 있음.
  – 수 초 정도 기다린 후 GARP 송신.
  – grap_master_delay로 설정.
  – Default value 5초.
Keepalived 다중화 구성

                                           장애
                   VRRP                                       VRRP
      lv1                   lv2                  lv1                   lv2
 10.0.0.252/24         10.0.0.253/24        10.0.0.252/24         10.0.0.253/24
192,168.0.252/24      192,168.0.253/24     192,168.0.252/24      192,168.0.253/24
      VIP                    가상서버             가상서버                     VIP
 10.0.0.254/24               10.0.0.1         10.0.0.1            10.0.0.254/24
192,168.0.254/24                                                 192,168.0.254/24
    가상서버                                                             가상서버
    10.0.0.1                                                         10.0.0.1




  웹서버(web1)               웹서버(web2)          웹서버(web1)               웹서버(web2)
  192.168.0.1/24          192.168.0.2/24     192.168.0.1/24          192.168.0.2/24
VRRP의 설정
 • lv1의 예




                lv2는 102으로 변경




• lv1과 lv2에서 keepalived를 기동하면 lv1에 VIP가 할당 ifconfig로는 확인 불가,
ip 명령으로 확인.
VRRP의 동작확인
• 동작 확인
 a. lv1을 shutdown 한다. lv2=Master(O)
 b. lv1을 기동한다. lv1=Master, lv2=Backup(O)
 c. lv1의 eth0 케이블을 뺀다. lv1=Backup,
    lv2=Master(O)
 d. lv1의 eth0 케이블을 꽂는다. lv1=Master,
    lv2=Backup(O)
 e. lv1의 eth1 케이블을 뺀다. lv1=Master,
    lv2=Backup
   •   VRRP 패킷은 eth0으로만 전송 eth1의 lan cable을 빼더
       라도 이상동작 확인 불가.
VRRP 인스턴스 분리



                                   <-VRPP마다 고유한 값
                            <-lv2는 102으로 변경
           <-VRPP마다 고유한 값
   <-lv2는 102으로 변경
VRRP 인스턴스 동기화
• vrrp_sync_group
• 여러 VRRP 인스턴스에서 상태를 동기화
  시키기 위한 설정.
• 그룹 내 하나의 인스턴스가 Backup이 되
  는 경우 연동 해서 다른 인스턴스 또한
  Backup이 된다.

서버 인프라를지탱하는기술(1.3,1.4)

  • 1.
    서버/인프라를 지탱하는 기술 웹 서버의 다중화 (IPVS를 이용한 로드밸런서) 양충현
  • 2.
    DNS 라운드로빈과 로드밸런서의차이 • DNS Round Robin – DNS를 이용해서 하나의 서비스에 여러 대의 서버를 분산시키는 방법. – 웹 서버 마다 공인 IP 할당. – 균등하게 분산 안됨. – 웹 서버가 다운되어도 감지 못함.
  • 3.
    DNS 라운드로빈과 로드밸런서의차이 • Load Balancer – 하나의 IP주소에 대해 요청을 복수의 서버로 분산. – 공인 IP를 가진 가상적인 서버로 동작하여 요 청의 대해 실제 웹 서버로 중계 역할. – 여러 대의 리얼 서버중 한 대를 선택해서 중계. – 고가의 장비 및 유지 보수 비용이 큼. • 비용 절약으로인한 OSS(opensource software) 구축
  • 4.
    IPVS-리눅스로 로드밸런서 구성 •리눅스로 특별한 S/W 없이 라우터 운용가능. • IPVS(IP Virtual Server)라는 부하 분산 기능을 제공 하는 모듈도 포함. • 로드밸런서 종류와 IPVS 기능 – L4 스위치 • 트랜스 포트 계층까지 의 정보를 분석. • IP, Port에 따라 분산대상 서버지정. – L7 스위치 • 애플리케이션 계층까지 정보를 분석. • URL에 따라 분산대상 서버 지정. – IPVS에 내장되어 있는 것은 L4 스위치에 해당. • L7 스위치는 이용불가.
  • 5.
    스케쥴링 알고리즘 • rr(round-robin) – 차례대로 처리. • wrr(weighted round-robin) – rr + 가중치. • lc(least-connection) – 접속수가 가장 적은 서버 선택. • wlc(weighted least-connection) – lc + 가중치. • sed(shortest expected delay) – 응답속도가 가장 빠른 서버 선택. • nq(never queue) – sed와 동일 그러니 active 수가 0인 서버 최우선으로 선택.
  • 6.
    스케쥴링 알고리즘 • sh(sourcehashing) – source ip 주소 해시 값 계산 후 분산 서버 선택. • dh(destination hashing) – 목적지 ip 주소 해시 값 계산 후 분산 서버 선택. • lblc(locality-based least-connection) – 접속수가 가중치로 지정한 값을 넘기 전까지 동일한 서버 선택. • lblcr(locality-based least-connection with replication) – lblc + 모든 서버의 접속수가 가중치로 지정한 값을 넘는 경우 접속수가 가장 적은 서버 선택.
  • 7.
    IPVS 사용하기 • ipvsadm – IPVS에서 제공하는 명령툴. – 가상서버를 정의하고 리얼 서버를 할당. – 접속상황,전송률, 통계정보를 제공. • Keepalived – IPVS를 이용하여 가상서버를 구축. – 리얼 서버의 상태 체크.(다운 시 부하분산 제외) • HTTP_GET, SSL_GET, TCP_CHECK, SMTP_CHECK, MISC_CHECK
  • 8.
    L4스위치와 L7스위치 L4 스위치 L7 스위치 • L4스위치는 클라이언트가 통신하는 곳은 리얼 서버. • L7 스위치에 클라이언트와 리얼 서버 각각의 TCP 세션을 전개.
  • 9.
    NAT와 DSR • NAT(NetworkAddress Translation) – 한 네트워크 컴퓨터의 IPv4 주소를 다른 네트워크 컴 퓨터의 IPv4 주소로 변환. • DSR(Direct Server Return) – 로드밸런서 사용시 리얼서버에서 클라이언트로 되돌아 가는 경우 목적지의 주소가 스위치 주소가 아닌 클라 이언트 주소로 전달하는 개념. – 로드밸런서 병목, 높은 트래픽이 있는 경우 DSR로 권 장.
  • 10.
  • 11.
    부하분산 시 주의점(동일서브넷) 이 구성에는 NAT 사용 불가. DSR로 구성. 가상서버 192.168.0.150/24 웹 서버 메일서버 메일서버 192.168.0.1/24 192.168.0.151/24 192.168.0.152/24
  • 12.
    서버/인프라를 지탱하는 기술 라우터 및 로드밸런서의 다중화 양충현
  • 13.
    다중화 프로토콜 VRRP •라우터나 로드밸러서 벤더들의 독자적인 다중화 프로토콜 – 서로 다른 벤더간 호환 불가. • HSRP(Hot standby Routing Protocol)기 반으로 벤더에 의존하지 않는 다중화 프로 토콜 VRRP(Virtual Router Redundancy Protocol) 개발.
  • 14.
    VRRP 패킷 • 마스터노드가 정기적으로 VRRP 패킷을 멀티캐스팅 (224.0.0.18)주소로 송신. – 마스터가 정상 작동임을 알리는 메시지(Advertisement) • 백업 노드는 VRRP 패킷을 수신하는 동안은 대기중, 일정 시간 수신 하지 못하면 마스터 노드 다운으로 판단 장애 극복 시작.
  • 15.
    가상 라우터 ID 로드 밸런서 A 로드 밸런서 B (Active) VRRP (Backup) VRRP 패킷을 송신 224.0.0.18 로드 밸런서 C 로드 밸런서 D (Active) (Backup) VRRP • Virtual Rtr ID. • VRRP 패킷은 멀티 캐스팅주소로 송신 – 주소 변경 불가. • 인스턴스를 구분하기 위한 용도.
  • 16.
    우선순위(Priority) • Priority. • VRRP구조적으로 100대의 백업 노드를 가 질수 있음. • 백업 노드가 2대 이상 작동 시 우선순위 부여. • 수치적으로 높을수록 우선순위가 높음. • 사용범위는 1~255, 기본값은 100
  • 17.
    선점형 모드(Preemptive Mode) •선점형 모드 유효화 – 자신의 Priority보다 낮은 값을 수신하면 master상태로 변경. – Default mode. • 선전형 모드 무효화 – 자신의 Priority 보다 낮은 값을 수신하더라도 현 상태를 유지.
  • 18.
    가상 MAC주소 • VRRP에는가상 MAC주소가 정의. • 장애극복 시 IP주소뿐만 아니라, MAC주소 도 함께 인계. – MAC 주소를 인계하지 않을 경우, 통신 상대 가 되는 모든 장비의 ARP 테이블의 변경 필요. • Physical/Virtual 2가지 mode – Default mode Virtual.
  • 19.
    Keepalived의 구조상의 문제 •Keepalived의 VRRP는 가상 MAC주소를 허용하지 않 음. • 장애극복 시 ARP 엔트리가 갱신되지 않는 장비가 있 을 경우, APR 캐시가 clear가 되까지 통신되지 않을 위험성 소지. • gratuitous ARP의 지연송신 – 마스터 상태로 변경 후 GARP를 송신 시 네트워크 상태 불 안정, 일시적인 트래픽이 집중되어 통신이 안될 수 있음. – 수 초 정도 기다린 후 GARP 송신. – grap_master_delay로 설정. – Default value 5초.
  • 20.
    Keepalived 다중화 구성 장애 VRRP VRRP lv1 lv2 lv1 lv2 10.0.0.252/24 10.0.0.253/24 10.0.0.252/24 10.0.0.253/24 192,168.0.252/24 192,168.0.253/24 192,168.0.252/24 192,168.0.253/24 VIP 가상서버 가상서버 VIP 10.0.0.254/24 10.0.0.1 10.0.0.1 10.0.0.254/24 192,168.0.254/24 192,168.0.254/24 가상서버 가상서버 10.0.0.1 10.0.0.1 웹서버(web1) 웹서버(web2) 웹서버(web1) 웹서버(web2) 192.168.0.1/24 192.168.0.2/24 192.168.0.1/24 192.168.0.2/24
  • 21.
    VRRP의 설정 •lv1의 예 lv2는 102으로 변경 • lv1과 lv2에서 keepalived를 기동하면 lv1에 VIP가 할당 ifconfig로는 확인 불가, ip 명령으로 확인.
  • 22.
    VRRP의 동작확인 • 동작확인 a. lv1을 shutdown 한다. lv2=Master(O) b. lv1을 기동한다. lv1=Master, lv2=Backup(O) c. lv1의 eth0 케이블을 뺀다. lv1=Backup, lv2=Master(O) d. lv1의 eth0 케이블을 꽂는다. lv1=Master, lv2=Backup(O) e. lv1의 eth1 케이블을 뺀다. lv1=Master, lv2=Backup • VRRP 패킷은 eth0으로만 전송 eth1의 lan cable을 빼더 라도 이상동작 확인 불가.
  • 23.
    VRRP 인스턴스 분리 <-VRPP마다 고유한 값 <-lv2는 102으로 변경 <-VRPP마다 고유한 값 <-lv2는 102으로 변경
  • 24.
    VRRP 인스턴스 동기화 •vrrp_sync_group • 여러 VRRP 인스턴스에서 상태를 동기화 시키기 위한 설정. • 그룹 내 하나의 인스턴스가 Backup이 되 는 경우 연동 해서 다른 인스턴스 또한 Backup이 된다.