반응형
Notice
Recent Posts
Recent Comments
Link
뜌릅
로드밸런싱 - 네트워크 본문
반응형
왜 로드밸런싱을 사용할까?
결론부터 말하자면 병목현상을 방지하기 위함이다. 요즘 시대에는 웹사이트에 접속하는 인원이 급격하게 늘어났고, 이 모든 트래픽을 1개의 서버로 감당하기는 힘들어 졌다. 따라서 여러개의 서버들이 요청들을 분담해서 처리하기 시작했다.
그렇다면 누가 분담을 해주는 것일까? 마구잡이로 분담을 하게 되면 여러개의 서버중 특정 하나에만 요청이 쏠릴수 있고(또 다시 병목), 잠깐 문제가 생겼거나 점검중인 서버에 리소스를 분배할 수도 있다. 또 기존의 서버들로는 감당하기 힘들거나 오히려 놀고있는 서버가 존재할 수도 있다. 이런경우에 서버를 Scale-Out(새로운 서버를 늘리기), Scale-In(안쓰는 서버 없애기)을 해야 한다.
이것들을 고려하여 분담을 해주는 것을 로드 밸런스 서버라고 한다.
로드 밸런싱이란
인터넷 서비스에 부하가 발생할 경우 여러 것(서버의 로드율 증가, 부하량, 속도 저하)을 고려하여 트래픽을 분산시켜주는 서비스입니다.
- Health Check: 로드 밸런서는 서버에 대한 주기적인 체크를 통해 통신 서버의 장애 여부를 판단할 수 있다. 이로 인해, 서버에 문제가 생기면 정상적으로 동작하는 서버로 트래픽을 보내주는 FAIL-OVER가 가능하며, 또한 TCP/UDP분석이 가능해서 방화벽 기능을 실행하기도 한다.
- L3: ICMP을 이용하여 Check한다. (인터넷 레이어 프로토콜로서 전송계층에게 에러가 발생했는지 아닌지 알려주는 프로토콜)
- L4: TCP의 3-handShaking을 통해 각 서버의 포트 상태를 확인한다.
- L7: 애플리케이션 계층에서 체크하는 방식으로 실제 웹페이지에 통신을 시도하여 이상 유무를 판단한다.(예: CURL)
- 쿠버네티스 헬스체크: Master node에서 로드밸런싱을 담당하며, 스케줄링, 컨트롤러 관리자, API서버 등을 갖고있다. 이를 통해 분산화 된 컨테이너 환경을 제공합니다. 헬스체크 방식으로는 Readiness와 Liveness가 존재합니다.
- Readiness: 이는 파드가 정상적으로 작동 중인지 확인하는 방법입니다. 컨테이너가 활성 상태인지 아닌지를 판단합니다. 만약 Liveness 프로브가 실패한다면, 쿠버네티스는 해당 컨테이너를 재시작합니다. 이는테이너가 무한 루프에 빠지거나 데드락 상태에진 경우에 유용합니다.
- Liveness: 이는 파드가 요청을 처리할 준비가 되었는지 확인하는 방법입니다. 예를 들어, 애플리케이션이 데이터베이스 연결을 초기화하거나 다른 필요한 설정을 완료하는 데 시간이 필요한 경우에 유용합니다. 만약 Readiness 프로브가 실패한다면, 쿠버네티스는 해당 파드로의 트래픽을 제거합니다.
- Cloud-Based Health Check: AWS의 ELB는 등록된 인스턴스들에게 주기적으로 헬스체크를 실행하여 건강하지 못할 경우 다른 건강한 인스턴스로 교체합니다.
- Tunneling: 그냥 캡슐화 하여 전송해준다는 것이다. 작업서버에서 캡슐을 풀어서 요청을 처리한다.
- NAT: IP주소를 변환해주는 기능이다. 사설IP을 공인 IP로 변환해주거나, 공인 IP을 사설 IP로 변환해 준다. 위의 터널링 개념과 연결지어 생각해보면, 하나의 로드밸런서 서버(공인IP)로 요청이 몰리면 로드 밸런서 서버는 해당 요청들을 사설IP로 터널링하여 분산화 해준다.
- DSR(Direct Server Routing): 서버에서 클라이언트로 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음 네트워크 장비나 로드 밸런서를 거치지 않고 바로 클라이언트로 찾아가는 방식이다. 이 경우, 로드 밸런서의 부하를 줄여줄 수 있는 장점이 있다.
로드밸런서 주요 성능 지표
로드밸런서의 입장이다.
- 초당 연결 수 (Connections per second)
- 최대 처리 가능한 초당 TCP 세션 개수를 의미한다.
- 동시 연결 수 (Concurrent connections)
- 동시에 유지할 수 있는 최대 세션 개수를 의미한다.
- 처리 용량 (Throughput)
- UDP 프로토콜에 대한 로드 밸런싱 성능 지표
- FWLB (Firewall Load Balancing)에서 중요
- 단위는 bps (bit per second) 또는 pps (packet per second) 사용
만약 로드밸런서 서버가 문제 생긴다면
로드밸런서는 이를 해결하기위해 이중화의 구조를 만든다.
- 이중화된 로드 밸런서들은 서로 상태 확인을 한다.
- Master 서버가 Fail되면 Standby 서버가 자동으로 Master 서버의 역할을 한다.
- Standby 서버는 평상 시에는 대기 상태로 있다가 Master 서버가 Fail 되었을 경우에만 작동한다.
- 이 구성을 Fail Over라고 한다.
반응형
'네트워크' 카테고리의 다른 글
네트워크 - 대칭키 공개키 (0) | 2023.11.30 |
---|---|
TCP/ 흐름제어 및 혼잡제어 (0) | 2023.11.29 |
OSI 7계층과 모듈화 프로토콜 (0) | 2023.11.15 |