1. 로드 밸런서(Load Balancer)
로드 밸런서의 필요성
- 트래픽이 많아져 서버에 부하가 생기면 서버가 느려지거나 멈출 수 있음
- 이를 해결하기 위한 방법
- Scale-up : Server의 하드웨어 성능을 올리는 방법
- 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 이중화
- 장애시 시나리오
- 이중화된 Load Balancer들은 서로 Health Check
- Primary Load Balancer가 동작하지 않으면 VIP를 통해 Secondary Load Balancer로 통신
- Secondary Load Balanceer로 운영
Load Balancer의 주요 성능 지표
- 초당 연결수(Connections per second)
- 최대 처리 가능한 초당 TCP 세션의 갯수를 의미
- 동시 연결 수 (Concurrent connections)
- 동시에 최대로 세션을 유지할 수 잇는 개수를 의미
- 처리용량(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
'Infra > cloud' 카테고리의 다른 글
[AFOS] 7주차 네트워크 서비스(ELB) - 실습 : NLB (0) | 2021.07.27 |
---|---|
[AFOS] 7주차 네트워크 서비스(ELB) - 실습 : ALB (0) | 2021.07.27 |
[AFOS] 6주차 데이터베이스 서비스 - 실습 : RDS (0) | 2021.07.19 |
[AFOS] 6주차 데이터베이스 서비스 (0) | 2021.07.19 |
[AFOS] 5주차 보안 서비스 - 실습 (0) | 2021.07.19 |