다중화/부하분산의 기본

Manx·2024년 12월 2일
0

Infra

목록 보기
1/3

Ch1. 다중화/부하분산의 기본


1.1 다중화의 기본

다중화 : 장애가 발생해도 예비 운용장비로 시스템의 기능을 계속할 수 있는 것

다중화의 본질

  1. 장애를 상정한다.
    • 라우터 장애로 서비스가 정지한다.
    • 서버 장애로 서비스가 정지한다.
  2. 예비 운용장비를 준비한다.
  3. 운용체제의 정비 ( 장애발생시 예비 운용장비로 교체한다. )

Cold Standby

  • 장애가 발생하면 예비 운용장비를 연결하는 운용체제
  • 현재 장비와 예비 장비의 설정을 동일하게 해두어야 한다. ( Active-Standby )
    => ColdStandby

Hot Standby

  • 웹 서버의 경우 사이트 내용 갱신, 버전업 등의 이유로 중지되어 있는 예비 장비에 계속 수행하기 번거롭다.
  • 웹 서버의 예비 운용장비는 항상 전원을 켜두고 네트워크에 연결해두는 것이 좋다.
    => Hot Standby

전원이 켜있는지 여부에 따라 Cold / Hot
-> Hot Standby는 즉시 교체가 가능하다.


장애 극복

  • VIP ( Virtual IP)를 통해 운용 장비를 손쉽게 가르킬 수 있다.

장애검출 ( Health Check )

  • ICMP 감시 ( Layer 3)
    - ping
    - 모든 사이트에서 지원하는 것이 아니다.
    - 라우터가 확실히 패킷을 전송할 수 있는가를 검사
  • 포트 감시 ( Layer 4)
    - telnet
    - TCP로 접속해 접속할 수 있는지 체크한다.
    - 과부하 상태로 응답할 수 없거나 에러를 반환하는 것은 감지할 수 없다.
  • 서비스 감시 ( Layer 4)
    - curl
    - 실제로 HTTP 요청을 보내 정상적인 응답이 돌아오는지를 체크한다.
    - AWS LB에서 이렇게 체크함.

-> 서비스 감시를 어느단 까지 하는게 좋을까 ? ( NGINX, Django )

Active/Backup 구성 만들기

  • ARP (Address Resolution Protocol )
    - IP 주소를 지정해서 MAC 주소를 조회하기 위한 프로토콜이다.
    - 한번 얻은 MAC주소는 ARP 테이블에 저장해서 일정시간 캐싱한다.
    - 다른 서버에 같은 IP주소가 할당되더라도 ARP테이블이 갱신될 때까지는 그 서버와 통신할 수 없다.

ARP 테이블을 갱신하는 방법

  • gratuitous ARP
    - 내 IP주소와 MAC 주소는 이것이다. 라고 다른 서버에 통지하기 위함

1.2 웹 서버의 다중화

DNS 라운드로빈

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

  • 하나의 DNS에 여러 레코드를 등록시켜 처리한다.

  • 모바일 사이트에서 문제가 되는 경우가 있음
    - 캐리어 게이트웨이라는 프록시를 공유
    - 캐싱되어서 문제가 발생
    - TTL을 짧게 설정해서 개선 가능

결론은 로드밸런서

1.3 웹 서버의 다중화

IPVS를 이용한 로드밸런서

  • LB는 하나의 IP주소에 대해 요청을 복수의 서버로 분산할 수 있다.
  • 글로벌 주소를 절약할 수 있다.


L4 스위치

  • TCP(4계층) 까지의 정보를 분석하므로 IP주소나 포트번호에 따라 분산 서버를 지정할 수 있다.
    - naver.com
    - 10.xxx.xxx.1
    - 10.xxx.xxx.2

L7 스위치

  • Application(7계층) 까지의 정보를 분석하므로 클라이언트로부터 요청된 URL에 따라 분산대상 서버를 지정할 수 있다.
    - naver.com/api/1
    - naver.com/api/1
    - or header

IPVS

  • 리눅스 커널에서 동작하는 소프트웨어 로드밸런서
  • 백엔드(플랫폼)으로 Netfilter를 사용하며, TCP/UDP 요청을 처리할 수 있다.

ipvsadm

  • 가상서버를 정의하고 리얼서버를 할당할 수 있다.
  • 설정내용이나 접속상황을 확인할 수 있다.

keepalived


L4 vs L7

L4

  • Client <-> Real Server
  • 성능 추구
  • NAT
    - 패킷의 수신지 주소를 변경해 리얼서버로 전송
  • DSR
    - 응답 패킷의 IP주소를 되돌릴 필요가 없어 L4를 경유하지 않고 응답할 수 있다.
    - 병목, 높은 트래픽에 견디기 위해서는 DSR 사용

L7

  • Client <-> LB <-> Real Server
  • 유연한 설정

동일 서브넷에서 NAT 구성을 사용할 수 없는 이유

NAT

  • 출발지 또는 목적지 IP를 변경하여 트래픽을 다른 네트워크로 전달하는 역할을 한다.
  • 동일 서브넷에서는 트래픽이 NAT 장비를 경유하지 않고 직접 통신하려고 한다.
  • ARP로 인해 발생하며, NAT가 IP를 변환할 기회를 갖지 못한다.

ARP

  • 동일 서브넷 내의 호스트는 직접 통신하기 위해 ARP를 이용해 MAC 주소를 확인
  • NAT를 경유하려면 패킷이 NAT 장비로 전달되어야 하지만, 동일 서브넷에서는 NAT가 트래픽 흐름에 개입할 수 없음
  • NAT 목적
    - 다른 네트워크 간의 통신을 위해 설계되었다.
    - 동일 서브넷은 이미 직접 통신이 가능하므로 NAT의 기본 목적과 맞지 않는다.


1.4 라우터 및 로드밸런서의 다중화

VRRP ( Virtaul Router Redundancy Protocol )

  • 게이트웨이 이중화 구성
  • 마스터 노드가 정상적으로 가동 중인지 여부를 체크해서, 만일 정지되었다면 백업 노드가 VIP를 인계받아서 장애를 극복한다.

헬스 체크

  • 역으로 접근해 마스터 노드의 가동을 감시한다.
  • 마스터 노드는 정기적으로 VRRP패킷을 멀티캐스팅 주소로 계속해서 송신한다. ( 정상 작동 중임을 광고 )
  • LB가 여러대여도, 멀티캐스팅 주소는 동일한데, ID로 구분해서 사용한다.

가상 MAC 주소

  • 가상 IP 주소와 별개로 가상 MAC 주소가 정의되어 있다.
  • IP주소뿐 아니라 MAC 주소도 함께 인계되도록 설계되어 있다.
  • 모든 장비의 ARP 테이블을 변경해주지 않기 위해

0개의 댓글