12장 로드 밸런서

2022. 9. 26. 22:25
  • 복잡한 고려 없이 이중화를 손쉽게 구현하도록 로드 밸런서를 많이 사용한다.

  • 로드밸런서는 다양한 구성방식과 동작모드가 있고, 각 방법마다 서비스 흐림이나 패킷 내용이 다름

  • 로드밸런서의 구성과 동작 모드를 이해해야만 서비스에 필요한 구성을 할 수 있다.


    12.1 부하 분산이란?

    • 서비스 가용성을 높이기 위해 하나의 서비스는 보통 두 대 이상의 서버로 구성함
      • 각 서버 IP가 달라서 어떤 IP로 서버를 호출할지 결정해야함
    • L4나 L7 스위치라는 로드밸런서를 사용한다.
    • 로드 밸런서에는 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 서비스 요청을 분산시켜 부하를 분산함

12.2 부하 분산 방법

  • 다수의 장비에 요청을 분산시키기 위해 가상 IP주소를 갖는다.
    • VIP(Virtual IP) 혹은 서비스 IP 주소라고 함
  • 각 서버의 실제 IP주소를 Real IP라고 하고, 로드밸런서의 가상 IP에 실제 서버들이 바인딩 됨
  • 즉 VIP에 요청이 오면 로드밸런서가 RIP로 요청을 전달함

12.3. 헬스 체크

  • 로드 밸런서에서는 부하 분산을 하는 각 서버의 서비스를 주기적으로 헬스 체크해 정상적인 서비스쪽으로만 부하를 분산함
  • 헬스 체크 방식
    • ICMP : Ping 확인
    • TCP 서비스 포트 : 로드 밸런서에 설정된 서버의 서비스 포트를 확인 (SYN - ACK - FIN 확인)
    • HTTP 상태 코드 : 3-way handshake를 통해 200 OK 확인
    • 콘텐츠 확인 : 지정된 컨텐츠가 리턴 오는지 확인
    • 이외에도 여러가지 헬스 체크 방법이 있다.
  • 헬스 체크 주기와 타이머
    • 주기 (Interval) : 헬스 체크 패킷을 보내는 주기
    • 응답 시간 (Response) : 로드 밸런서에서 서버로 헬스 체크 패킷을 보내고 응답을 기다리는 시간
    • 시도 횟수 (Retries) : 헬스 체크 실패 시 최대 시도 횟수
    • 타임 아웃 (Time out) : 로드 밸런서에서 헬스 체크 실패 시 최대 대기 기간
    • 서비스 다운 시의 주기 (Dead Interval) : 서비스 다운시 헬스 체크 주기

12.4 부하 분산 알고리즘

  • 라운드 로빈 (Round Robin)
    • 특별한 규칙 없이 장비에 순차적으로 트래픽 분산
  • 최소 접속 방식 (Least Connectino)
    • 서버가 가진 세션 부하를 확인해 그것에 맞게 부하를 분산
    • 세션 테이블에서 확인할 수 있음
  • 가중치 기반 라운드 로빈 (Weighted Round Robin)
  • 가중치 기반 최소 접속 방식 (Weighted Least Connection)
  • 해시 (Hash)
    • 서버의 부하를 고려하지 않고 클라이언트가 같은 서버에 지속적으로 접속하도록 하기 위해 사용
    • 해시 알고리즘을 이용해 얻은 결과값으로 부하 분산 결정

12.5 로드 밸런서 구성 방식

  • 원 암(One-Arm) 구성
    • 로드 밸런서가 중간 스위치 옆에 구성되어있는 구성
    • 부하 분산을 이용한 트래픽이면 로드밸런서를 거친다. (IP가 로드밸런서)
  • 인라인(Inline) 구성
    • 서버로 가는 경로 상에 로드밸런서가 있는 구성
  • 차이점은 로드밸런서를 경유해야되나 말아야되냐의 차이

12.6 로드 밸런서 동작 모드

  • 트랜스패런트(Transparent: TP) 또는 브릿지(Bridge)

    • 로드밸런서가 OSI 2계층 스위치처럼 동작하는 구성
    • VIP주소와 실제 서버가 동일한 네트워크를 사용하는 구성
    • 별다른 설정없이 L2스위치를 추가하는 것으로 로드밸런서 구성 가능
  • 라우티드(Routed)

    • 로드 밸런서가 라우팅 역할을 수행하는 모드
    • 로드 밸런서를 기점으로 Client와 Server 부분이 나뉜다.
    • 보안 강화 목적으로 서버쪽 네트워크를 사설로 구성해 서버에 직접 접속하는 것을 막는 용도로 사용되기도 함
  • DSR(Driect Server Return)

    • 사용자의 요청이 로드밸런서를 통해 서버로 유입된 후에 다시 로드 밸런서를 통하지 않고 서버가 사용자에게 직접 응답하는 모드
    • 응답이 문제가 생길 경우 확인이 어렵다는 단점

12.7 로드 밸런서 유의사항

  • 원암 구성의 동일 네트워크 사용시
    • Destination NAT 시의 IP가 변경되서 응답 패킷의 IP가 달라져서 패킷 드랍을 할 수도 있음
  • 동일 네트워크 내에서 서비스 IP (VIP) 호출
    • 로드 밸런서를 거치지 않고 응답하면 요청한 IP 주소가 아닌 다른 IP주소로 응답이 오므로 해당 패킷을 폐기됨

12.8 HAProxy를 사용한 로드 밸런서 설정

  • HAProxy는 기존 하드웨어 로드 밸런서의 역할을 일반 서버에서 직접 수행하게 해주는 오픈 소스 기반의 소프트웨어 로드 밸런서이다.
  • 하드웨어 로드 밸런서에서 제공되는 기능을 소프트웨어로 제공하므로 일종의 NFV다. (Network Functino Virtualization)
  • 사용법은 필요할 때 찾아보자.

- 고민해볼 수 있는것 - 서버 개발자 입장에서 로드 밸런서에 어떻게 관여할 수 있을까

' > IT 엔지니어를 위한 네트워크 입문' 카테고리의 다른 글

13장 네트워크 디자인  (0) 2022.09.27
11장 이중화 기술  (0) 2022.09.24
10장 서버의 방화벽 설정/동작  (0) 2022.09.23
9장 보안  (0) 2022.09.22
8장 서버 네트워크 기본  (1) 2022.09.22

+ Recent posts