Infra/cloud

[AFOS] 7주차 네트워크 서비스 - 로드밸런스

미니문92 2021. 7. 27. 01:30

1. 로드 밸런서(Load Balancer)

로드 밸런서의 필요성

  • 트래픽이 많아져 서버에 부하가 생기면 서버가 느려지거나 멈출 수 있음

  • 이를 해결하기 위한 방법
    1. Scale-up : Server의 하드웨어 성능을 올리는 방법
    2. Scale-out : Server의 수를 늘리는 방법 - 하드웨어 향상 비용보다 서버 한대 추가 비용이 더 적고 여러 대의 Server 덕분에 무중단 서비스 제공 가능

 


로드 밸런싱 정의

  • 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스

로드 밸런서의 종류와 주요 기능

  • L2 : Mac 주소 기반
  • L3 : IP 주소 기반
  • L4 : IP, Port, TCP/UDP 기반
  • L7 : HTTP, HTTPS, FTP 기반

주로 L4/ L7 로드밸런서를 가장 많이 활용

  L4 로드 밸런서 L7 로드 밸런서
특징 TCP/UDP 포트 정보를 바탕으로 함 TCP/UDP 포트 정보는 물론 HTTP의 URI, FTP의 파일명, 쿠키 정보 등을 바탕으로 함
장점 1. 데이터 안을 들여댜보지 않고 패킷 레벨에서만 로드를 분산하기 때문에 속도가 빠르고 효율이 높음

2. 데이터의 내용을 복호화할 필요가 없기에 안전

3. L7 로드밸런서보다 저렴
1. 상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅 가능

2. 캐싱 기능 제공

3. 비정상적인 트래픽을 사전에 필터링할 수 있어 서비스 안전성이 높음
단점 1. 패킷의 내용을 볼 수가 없기 때문에 섬세한 라우팅이 불가능

2. 사용자의 IP가 수시로 바뀌는 경우라면 연속적인 서비스를 제공하기 어려움
1. 패킷의 내용을 복호화 해야하므로 더 비쌈

2. 클라이언트가 로드밸런서와 인증서를 공유해야하기 때문에 공격자가 로드밸런서를 통해서 클라이언트의 데이터에 접근할 보안상의 위협이 존재

 

로드밸런서의 주요 기능

  • Health Check : 
    • 기본적으로 보통의 로드밸런서는 서버들(또는 다음의 노드)에 대한 주기적인 Health Check를 통해 서버들의 장애 여부 판단
    • 이로 인해 로드밸런서가 있을 때 서버 몇대에 이상이 생기더라도 다른 정상 동작중인 서버로 트래픽을 보내주는 Fail-over가 가능하며, TCP/UDP 분석이 가능하기 때문에 Firewall의 역할도 수행 가능
    • L3 체크 : ICMP를 이용하여 서버의 IP주소가 통신 가능한지 확인
    • L4 체크 : tcp는 3 Way-Handshakin을 기반으로 통신. 이러한 TCP의 특성을 바탕으로 각 포트 상태를 체크
    • L7 체크 : 어플리케이션 계층에서 체크. 즉 실제 웹페이지에 통신을 시도하여 이상 유무 파악

 

  • Tunneling
    • 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념. 로드밸런서는 클라이언트와 서버 간 중간에서 터널링 제공. 즉, 연결된 상호간에만 캡슐화된 패킹을 구별해 캡슐화를 해제

 

  • NAT(Network Address Translation)
    • IP 주소를 변환해주는 기능
    • 여러개의 호스트가 하나의 공인 IP 주소(VIP)를 통해 접속하는 것이 주 목적
    • SNAT(Source Network Address Translation) : 내부에서 외부로 트래픽이 나가는 경우, 내부 사설 IP 주소를 외부의 공인 IP주소로 변환하는 방식. ex) 집에서 쓰는 공유기
    • DNAT(Destination Network Address Translation) : 외부에서 내부로 트래픽이 들어오는 경우, 외부 공인 IP주소를 내부 사설 IP주소로 변환하는 방식 ex) 로드밸런서

 

  • DSR(Direct Server Routing)
    • 서버에서 클라이언트로 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음 네트워크 장비나 로드밸런서를 거치지 않고 바로 클라이언트를 찾아가는 방식. 로드밸런서의 부하를 줄여줄 수 있음

 


 

로드 밸런싱 방법(서버 선택 기준)

  • L4 로드 밸런싱
    • 라운드 로빈(Round Robin) : 세션에 각 서버를 순차적으로 맺어주는 방식. 단순히 순서에 따라 세션을 할당하기 때문에 경우에 따라 경로별로 같은 처리량이 보장이 되지 않음
    • 가중치 및 비율 할당 방식 : 서버마다 비율을 섲렁해 두고 해당 비율만큼 세션을 맺어주는 방식
    • 최소 연결 기반(Least Connection) : 가장 적은 세션을 가진 서버로 트래픽을 보내는 방식(가장 많이 씀)
    • 응답 시간 기반(Response Time) : 가장 빠른 응답 시간을 보내는 서버로 트래픽을 우선 보내주는 방식. 각 서버들의 가용한 리소스와 성능, 그리고 데이터 양 등이 다를 경우 적합한 방식
    • 해시 기반 : 특정 클라이언트는 특정 서버로만 할당시키는 방식. 특정 IP주소 혹은 포트의 클라이언트는 특정 서버로만 세션이 맺어지게 함. 경로가 보장 되며 접속자 수자 많을수록 분산 및 효율이 뛰어남 
    • 대역폭 기반 : 서버들과의 대역폭을 고려하여 트래픽 분산

 

  • L7 로드밸런싱
    • URL 스위칭(URL Switching) : 특정 하위 URL들은 특정 서버로 처리하는 방식. 특정 url을 가진 주소들은 서버가 아닌 별도의 스토리지에 있는 객체 데이터로 바로 연결되도록 구성 가능
    • 컨텍스트 스위칭(Context Switching) : 클라이언트가 요청한 특정 리소스에 대해 특정 서버 등으로 연결 가능. 예를 들어, 이미지 파일에 대해서는 확장자를 참조하여 별도로 구성된 이미지 파일이 있는 서버/스토리지로 직접 연결 가능
    • 쿠키 지속성(Presistence with Cookies) : 쿠키 정보를 바탕으로 클라이언트가 연결 했었던 동일한 섭서에 계속 할당해주는 방식. 특히 사설 네트워크에 있던 클라이언트의 IP 주소가 공인 IP주소로 치환되어 전송(X-Forwarded-For 헤더에 클라이언트 IP주소를 별도 기록)하는 방식 지원

 


로드 밸런서의 장애 대비

  • Load Balancer 이중화

  • 장애시 시나리오

  1. 이중화된 Load Balancer들은 서로 Health Check
  2. Primary Load Balancer가 동작하지 않으면 VIP를 통해 Secondary Load Balancer로 통신
  3. Secondary Load Balanceer로 운영

Load Balancer의 주요 성능 지표

  1. 초당 연결수(Connections per second)
    • 최대 처리 가능한 초당 TCP 세션의 갯수를 의미
  2. 동시 연결 수 (Concurrent connections)
    • 동시에 최대로 세션을 유지할 수 잇는 개수를 의미
  3. 처리용량(Throughput) - L4 에 해당
    • 패킷 자체에 대해 연결이 성립되는 UDP 프로토콜에 대한 로드밸런싱 성능지표.
    • FWLB(Firwall Laod Balancing)에서 중요
    • 단위는 bps(bit per second) 또는 pps(packet per second)를 사용


2. AWS ELB(Elastic Load Balancer

배경 : 고가용성 환경 구성 요구

 


ELB 정의

  • Elastic Load Balancing : AWS에서 제공하는 로드 밸런싱 기술

  • 일반적인 서비스 환경 구성 : 최소 2개의 AZ사용(복수의 가용영역으로 고가용성 보장)하며 사용자는 Route 53을 통해 도메인 주소로 접근

 


ELB 구성

  • 리스너(Listener)와 대상 그룹(Target Group)

 


ELB 종류 및 기능

구분 ALB NLB CLB
프로토콜 HTTP, HTTPS TCP, UDP, TLS TCP, TLS, HTTP, HTTPS
처리속도 느림 빠름 중간
플랫폼 VPC VPC VPC, EC2-Classic
OSI 계층 7계층 4계층 -
동일 인스턴스로 다수 포트 전달 지원 지원 미지원
IP를 통한 관리 미지원 지원 미지원
프라이빗링크 지원 미지원 지원 미지원
경로 기반 라우팅 지원 미지원 미지원
호스트 기반 라우팅 지원 미지원 미지원
  • ALB : HTTP/HTTPS 처리에 특화된 애플리케이션 레벨의 로드 밸런서. L7 라우팅 동작 가능, 람다(Lambda)를 대상 그룹 지정 가능
  • NLB : TCP, UDP, TLS처리할 수 있는 OSI 4계층 레벨의 로드 밸런서. 높은 처리량, 고정 IP보유

 


ELB 통신 방식

 


교차 영역 로드 밸런싱(Cross-zone load balancing)

  • 비활성화

  • 활성화

 

출처 : https://www.stevenjlee.net/2020/06/30/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-load-balancing-%EA%B7%B8/

https://nesoy.github.io/articles/2018-06/Load-Balancer