<설명>
- Server에 가해지는 부하(load) 를 분산(balancing) 하는 장치 또는 기술
- client와 server pool(분산 network를 구성하는 서버들의 그룹) 사이에 위치
- 서버 1대에 트래픽이 집중되어(client의 request 폭증) load가 걸리지 않도록 관리
<주요 기능>
1) Health Check
- Server들 (혹은 다음 Node)을 주기적으로 Health Check 하며 Server 장애 여부를 판단
- 이를 통해 Server 몇 대에 이상이 생겨도 정상 Server로 Traffic을 넘기는 Fail-over 가 가능
- TCP/UDP 분석이 가능하여 Firewall 역할도 수행
- [Layer Check 방법]
==> L3 Check : ICMP를 통해 Server의 IP 주소가 통신 가능 상태인지 파악
==> L4 Check : TCP의 3 Way-Handshaking 을 기반으로 서버 상태 파악
==> L7 Check : 실제 웹페이지 (/index.html 등)에 통신하여 이상 유무 파악
2) NAT (Network Address Translation)
- 내부 Network에서 사용하던 Private IP를 Load Balancer 외부의 Public IP로 변환 (반대도 가능)
==> 여러개의 Host가 1개의 public IP 주소(VIP) 를 통해 접속하는게 목적
3) Tunneling : Data를 캡슐화하여 연결된 Node만이 캡슐을 해제 가능케 함.
4) DSR (Dynamic Source Routing protocol) :
==> Server에서 Client로 request에 응답할 때, 목적지를 Client롤 설정 후 Load Balancer가 아닌 바로 Client의 IP로 찾아가게 함(request)
==> 이를 통해 Load Balancer 의 부하를 감량
<TMI>
- Scale up 은 서버 자체의 성능을 증가. ssd => m.2 되는 느낌
- Scale out 은 기존 서버와 동일 or 낮은 스펙의 서버를 2개 이상 증설하여 운영.
==> 1대의 Server에 각기 다른 Port 번호를 부여하여 다수의 프로그램을 운영할 때(Scale out), L4 가 적합
<장점>
- 고가의 Server로 확장하지 않고 저렴한 cost로 여러 Server를 증설. cost를 대폭 절감.
- 1대 Server에 몰리는 Traffic 분산 가능
- 1대의 Server에서 장애가 발생한들 Service 중단 없이 다른 Server로 적절히 자동 분배하여 Service를 계속 운용 가능케 함.
- 미래에 사용량이 많아져 Server를 확장할 때, Service 중단없이 Server 증설 가능
<Load Balancing 알고리즘>
==> Load Balancer 가 Server를 선택하는 방법
- 라운드로빈 (Round Robin Method)
* Server에 들어온 요청을 순서대로 돌아가며 배정.
* Client의 요청을 순서대로 분배하기에 여러 대의 Server가 동일한 스펙을 가지며, Server와의 연결(Session)을 짧은 시간 쓴다면 유용
- 가중 라운드로빈 (Weighted Round Robin Method)
* 각 Server 마다 가중치를 매기고, 가중치가 높은 Server에 Client 요청을 우선 배분.
* Server Traffic 처리 능력이 상이한 경우에 사용
==> 서버 A에 가중치 5, 서버 B에 가중치 2라면 Loadbalancer는 가중 라운드로빈 방식에 따라 A 서버에 5개, B 서버에 2개의 request를 전달.
- IP 해시 (IP Hash Method)
* Client의 IP 주소를 특정 Server로 매핑하여 요청 처리
* User의 IP를 Hashing하여 Load를 분배하기에, User가 항상 동일한 Server로 연결되는 걸 보장
- 최소 연결 (Least Connection)
* Request가 들어온 시점에서 가장 적은 연결 상태를 보이는 server에 Traffic을 우선 배분
* Session이 길어지는게 잦거나, Server에 분배된 Traffic들이 일정하지 않을 때 유용
<L4 vs L7 비교>
- L4 loadbalancing :
* Transport Layer 를 사용
* Network 계층(IP, IPX)이나 Transport 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산
* IP 주소, port 번호, MAC 주소, 전송 프로토콜에 따라 Traffic 을 나누는게 가능
- L7 loadbalancing :
* Application Layer 사용.
* Application 계층(HTTP, FTP, SMTP) 에서 load를 분산하기에, HTTP 헤더, 쿠키, URL 등의 user 요청을 기준으로 특정 server에 트래픽 분산이 가능
== > 즉, 패킷 내용 확인 및 그 내용에 따라 load를 특정 server에 분배 가능
* 특정 패턴을 가진 바이러스를 감지해 network 보호 가능
* DoS/DDoS 같은 비정상 트래픽 필터링 가능
<정리 이미지>
<출처 1> https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
<출처 2> https://www.incodom.kr/Load_Balancing
<출처 3> https://deveric.tistory.com/91
'Programing > Network' 카테고리의 다른 글
[Network] Autonomous System (0) | 2022.11.20 |
---|---|
[Network] Port Forwarding (0) | 2022.08.21 |
[Network] Topology (토폴로지) (0) | 2022.08.01 |
[Network] Segmentation (세그멘테이션) (0) | 2022.07.29 |
댓글