마짱짱의 지식창고
LoadBalance 란? 본문
알아보기전 어떤 경우에 로드밸런서 라는걸 사용한지 알아보자
클라이언트가 한두명일 경우는 서버가 여유롭게 클라이언트가 원하는 결과를 응답할 수 있다.
하지만 만약 한두명이아닌 수천명 수만명 이면..?
서버는 응답하려하지만 과부화와 동작을 멈추게 된다.
이를 히결하기 위한 방법으로
Scale-up : 서버가 더 빠르게 동작하기위해 하드웨어 성능을 올리는 방법
Scale-Out : 여러대의 서버가 나눠서 일을 하는 방법
이 중 Scale-Out 방법을 많이 사용하는데 장점으로
: 하드웨어 향상비용보다 서버한대 비용이 더 적고,
여러대의 서버 덕분에 [무 중단 서비스]를 제공 할 수있다.
여러대의 서버에게 균등학게 트래픽을 분산시켜주는 역할이 바로 LoadBalancer 이다.
LoadBalance 란?
- 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러대의 서버가 분산 처리하여 해결해주는 서비스 이다.
주요기능?
- NAT(Network ADdress Translation)
: 사설 IP주소를 공인 IP 주소로 바꾸는데 사용하는 통신망의 주소 변조기이다.
- tunneling
: 인터넷상에서 눈이 보이지 않는 통로를 만들어 통신할 수있게 하는 개념
: 데이터를 캡슐화해서 연결된 상호간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.
- DSR(Dynamic Source Routing protocol)
: 로드 밸런서를 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치 IP주소가 아닌
클라이언트의 IP주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념이다.
주로 사용하는 종류
L4 : IP와 Port 이용 , TCP,UDP
L7 : HTTP, HTTPS FRPT
HTTP
- X-forwarded-For : HTTP 또는 HTTPS 로드밸런서를 사용할때 클라이언트의 IP주소를 식별하는데 도움을 준다
- X-Forwarded-Proto : 클라이언트가 로드밸런서 연결에 사용한 프로토콜(HTTP,HTTPS)를 식별하는데 도움을 준다
- X-Forwarded-Port : 클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는데 도움을 준다.
로드밸런스 종류
- Round Robin
: 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식,
클라이언트의 요청을 순서대로 분배하기 떄문에 여러대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결이
오래 지속되지 않는 경우 활용하기 적합하다.
- Weighted Round Robin Method
: 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트의 요청을 우선적으로 배분한다.
- IP Hash Method
: 클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식
사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.
(Hashing,임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑 하는것)
- Least Connection Method
: 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분한다.
자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식
- Least Response Time Method
: 서버의 현재 연결상태와 응답시간을 모두 고려하여 트래픽을 분배한다.
가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식
(ResponseTime: 서버에 요청을 보내고 최초 응답을 받을때 까지 소요되는 시간)
로드밸런스 장애 대비 및 시나리오
이중화 하여 대비한다.
이중화된 로드밸런서들은 서로 Health Check를 한다.
메인 로드밸런서가 동작하지 않으면 가상IP는 여분의 로드밸런서로 변경된다.
여분의 로드밸런서로 운영하게 된다.
---
참고
'Network' 카테고리의 다른 글
MAC 주소 / IP 주소 (0) | 2021.03.25 |
---|---|
유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트 (0) | 2021.03.25 |
Proxy 란? (HAProxy) (0) | 2020.09.16 |
Switch Protocol (0) | 2020.05.15 |
Routing(라우팅) (0) | 2020.05.15 |