해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기)
✅ 로드밸런서가 무엇인가요?
▶ 로드밸런싱
로드밸런싱: 네트워크 트래픽을 여러 서버나 네트워크 장치에 고르게 분산시켜, 특정 서버에 과부하가 걸리지 않도록 하는 기술이다. 이를 통해 시스템의 성능, 가용성, 신뢰성을 높이고, 장애 발생 시에도 서비스가 중단되지 않도록 보장한다.
▶ 로드밸런서
로드밸런서: 로드밸런싱을 수행하는 장치 또는 소프트웨어를 의미한다. 로드밸런서는 클라이언트의 요청을 받아, 이를 여러 서버 중 하나로 전달하며, 요청에 따라 가장 적합한 서버를 선택한다.
🔽 로드밸런서의 필요성
서버를 운영할 때, 서버가 감당하지 못할 정도의 트래픽이 몰릴 경우, 이를 해결할 수 있는 방법은 크게 두 가지가 있다.
- scale-up: 서버 자체의 성능을 높이는 방법
- scale-out: 여러 대의 서버를 두는 방법
로드 밸런서는 scale-out 방식으로, 여러 서버에 트래픽을 균등하게 분산시키는 역할을 한다.
🔽 로드밸런서의 역할
- 트래픽 분산: 클라이언트 요청을 여러 서버에 분산하여 특정 서버에 과부하가 걸리지 않도록 한다.
- 고가용성: 서버 중 일부에 장애가 발생하더라도, 나머지 서버가 트래픽을 처리하여 서비스의 중단을 방지한다.
- 성능 최적화: 요청을 가장 적합한 서버로 보내어 전체 시스템의 성능을 최적화한다.
- 확장성 지원: 서버를 추가하여 쉽게 시스템을 확장할 수 있도록 지원한다.
✅ L4 로드밸런서와, L7 로드밸런서의 차이에 대해 설명해 주세요.
▶ L4 로드밸런서
🔽 특징
- IP 주소와 포트 번호를 사용하여 트래픽을 분산한다.
- 빠르고 간단한 처리가 가능하다.
- 트래픽의 내용을 분석하지 않고, 패킷 레벨에서만 트래픽을 처리한다.
- TCP/UDP 트래픽을 처리한다.
🔽 사용 예시
- 여러 웹 서버가 동일한 애플리케이션에 호스팅하는 경우, L4 로드밸런서가 클라이언트 요청을 서버 간에 고르게 분배한다.
- 단지 부하만 분산시킬 용도로 사용할 때
▶ L7 로드밸런서
🔽 특징
- 트래픽의 내용을 기반으로 트래픽을 분산한다.
- HTTP, HTTPS, FTP 등의 프로토콜을 처리한다.
- 특정 URL이나 쿠키를 기준으로 라우팅이 가능하다.
- 트래픽을 더 세밀하게 제어할 수 있으며, 다양한 정책을 적용할 수 있다.
🔽 사용 예시
- 사용자의 요청 URL을 분석하여 특정 URL에 대한 특정 서버나 서버 풀로 요청을 전달할 수 있다.
- 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리하여 사용할 때
▶ L4 로드밸런서와 L7 로드밸런서의 차이점
L4 로드밸런서 | L7 로드밸랜서 | |
작동 계층 | OSI 모델의 4계층 (Transport 계층) | OSI 모델의 7계층 (Application 계층) |
기반 | IP 주소와 포트 번호 | 애플리케이션 레벨의 데이터 (URL, 쿠키, 헤더 등) |
속도 | 빠르고 효율적 | 상대적으로 느림 (데이터 분석 필요) |
처리 범위 | TCP/UDP 트래픽 | HTTP, HTTPS, FTP 등 애플리케이션 트래픽 |
트래픽 분석 | 패킷의 헤더만 분석 | 트래픽의 내용을 분석하여 더 정교한 라우팅 가능 |
사용 사례 | 간단한 트래픽 분산 (예: 여러 웹 서버에 트래픽 분배) | 세밀한 트래픽 관리 (예: 특정 URL에 따라 서버 분배) |
✅ 로드밸런서 알고리즘에 대해 설명해 주세요.
▶ 라운드 로빈(Round Robin)
서버에 트래픽을 순차적으로 분배하는 방식
🔽 특징
- 모든 서버에 트래픽이 균등하게 분배된다.
- 서버의 성능이나 상태를 고려하지 않기 때문에, 서버의 처리 능력이 동일하거나 유사한 단순한 환경에 적합하다.
🔽 사용 예시
- 소규모 네트워크나, 동일한 사양의 서버로 구성된 환경
▶ 가중치 라운드 로빈(Weighted Round Robin)
각 서버에 가중치를 부여하여 트래픽을 분배하는 방식
🔽 특징
- 각 서버의 처리 능력에 따라 트래픽을 분배할 수 있다.
- 성능에 맞는 비율로 트래픽을 분산할 수 있어, 서버 간 성능 차이가 있는 경우 적합하다.
🔽 사용 예시
- 서로 다른 성능의 서버가 혼재된 환경
▶ 최소 연결(Least Connection)
현재 가장 적은 연결 수를 가진 서버에 트래픽을 분배하는 방식
🔽 특징
- 각 서버의 현재 부하 상태를 고려하여 트래픽을 분배하므로, 서버 간 부하가 균등하게 유지된다.
- 서버의 성능뿐만 아니라 실시간 부하를 고려하므로, 동적으로 변하는 트래픽 환경에 적합하다.
🔽 사용 예시
- 웹 서버와 같이 연결 수가 변동이 큰 환경
▶ IP 해시(IP Hash)
클라이언트의 IP 주소를 해시함수로 변환하여 특정 서버에 트래픽을 분배하는 방식
🔽 특징
- 동일한 IP 주소를 가진 클라이언트는 항상 같은 서버에 연결되도록 보장한다.
- 클라이언트와 서버 간 세션을 유지해야 하는 환경에 적합하다.
🔽 사용 예시
- 세션 유지를 필요로 하는 웹 애플리케이션
✅ 로드밸런싱 대상이 되는 장치 중 일부 장치가 문제가 생겨 접속이 불가능하다고 가정해 봅시다. 이 경우, 로드밸런서가 해당 장비로 요청을 보내지 않도록 하려면 어떻게 해야 할까요?
- 헬스 체크(Health Check)를 설정하여 로드밸런서가 서버나 장치의 상태를 주기적으로 모니터링하도록 해야 한다. 헬스 체크는 서버가 정상적으로 응답하는지 확인하는 과정이다. 로드밸런서는 주기적으로 각 서버에 간단한 요청을 보내 서버가 정상적으로 응답하는지 확인한다. 정상적인 응답이 없을 경우 해당 서버를 비활성화 상태로 간주하고, 서버가 정상 상태로 복구되면 로드밸런서는 다시 해당 서버를 활성화하여 트래픽 분산 대상에 포함시킨다.
✅ 로드밸런서 장치를 사용하지 않고, DNS를 활용해서 유사하게 로드밸런싱을 하는 방법에 대해 설명해 주세요.
- 서버 준비: 트래픽을 분산시킬 여러 서버를 준비한다. 각 서버는 동일한 콘텐츠와 서비스를 제공하도록 구성되어야 한다.
- DNS 레코드 설정: DNS 서버에 동일한 도메인에 대해 여러 IP 주소를 등록한다. 각 IP 주소는 준비된 서버 중 하나를 가리키게 된다.
- 라운드 로빈 방식: DNS 서버는 클라이언트의 요청을 받을 때마다 순차적으로 다른 IP 주소를 반환한다. 이를 통해 트래픽이 여러 서버로 고르게 분산된다.
📍 문제 출처
Tech-Interview / 03-NETWORK.md
📍 참고 자료
'Programming > Network' 카테고리의 다른 글
[Network] 멀티플렉싱, 디멀티플렉싱 (0) | 2024.08.26 |
---|---|
[Network] 서브넷 마스크, 게이트웨이 (0) | 2024.08.26 |
[Network] 라우팅, 포워딩 (0) | 2024.08.25 |
[Network] Stateless, Connectionless (0) | 2024.08.18 |
[Network] SOP, CORS (0) | 2024.08.18 |