(오늘 삽질만 한 관계로...)
1. 로드밸런싱이란?
둘 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 부하를 나누는 것
가용성 및 응답시간을 최적화 할 수 있음
2. 주요 기능
부하 분산
- Auto-Scaling : 조건에 맞춰 필요 시 server에 컴퓨터 수를 늘리거나 줄여서 부하 관리 가능(scale out, scale in)
- Health Check : 해당 포트에 트래픽을 보내 애플리케이션이 올바르게 작동하는지 여부를 판별
- L3 체크 : ICMP를 이용하여 서버의 IP주소가 통신 가능한지 확인
- L4체크 : TCPdml 3 Way-Handshaking 특성을 바탕으로 각 포트 상태를 체크
- L7 체크 : 애플리케이션 계층에서 체크 수행, 실제 웹페이지에 통신을 시도하여 이상 유무 파악
- 보안 서비스 WAF, NAT
- Web Application Firewall(WAF) : 웹의 비정상 트래픽을 탐지하고 차단하기 위한 방화벽
- NAT(Network Address Translation) : private IP와 public IP간의 변환으로, 외부 연결에 노출되는 IP를 관리하여 위험을 최소화함
3. 로드밸런싱 종류
1) L4 로드밸런싱
- 트래픽을 전송계층의 로드밸런서가 받아 네트워크, 전송 계층 정보를 바탕으로 서버들에게 분산
- IP주소, 포트번호, MAC 주소, 전송 프로토콜 등에 따라 트래픽 분산하는 것이 가능
- 패킷 내용 확인 없이 로드를 분산 > 속도 빠르고 효율 좋음
- 데이터 내용 복호화 필요 없음 > 안전함
- L7보다 가격이 저렴
2) L7 로드밸런싱
- 트래픽을 응용계층의 로드밸런서가 받아 서버들에게 분산
- 애플리케이션 계층에서 헤더, 쿠키 같은 사용자 요청을 기준으로 로드를 특정 서버에 분배하는 것이 가능함
- 특정 패턴의 바이러스 감지 > 네트워크 보호 가능
- 디도스 공격 차단 가능
- URL 스위칭 : 특정 하위 URL들은 특정 서버로 처리
- 컨텍스트 스위칭 : 클라이언트가 요청한 특정 리소스에 대해 특정 서버로 연결 가능
- 쿠키 지속성 : 쿠키 정보를 바탕으로 클라이언트가 연결했던 동일한 서버에 계속 할당
- L4 로드밸런서 기능 + 패킷 내용에 따라 로드 분배 가능 > 더 섬세한 라우팅 가능
- 캐싱 기능 제공
- 패킷 내용 복호화 필요 > 비용 높음
- 클라이언트가 로드밸런서와 인증서를 공유해야함 > 공격자가 로드밸런서를 통해 데이터에 접근할 수 있는 보안상의 위험성 존재
4. 로드밸런싱 기법
1) 라운드 로빈
- 요청을 순서대로 서버에 분배
- 로드밸런싱 대상 서버의 스펙이 동일
- 처리시간, 세션 지속시간이 짧은 애플리케이션에 적합
2) 가중 라운드 로빈
- 각 서버마다 가중치 설정 > 가중치만큼 세션 할당
- 스펙이 좋은 서버에 가중치를 더 주어 세션을 많이 할당
3) 최소 연결
- 가장 적게 연결된 서버에 세션을 할당
- 서버에 분배된 세션들이 일정하지 않은 경우에 적합
- 부하를 줄일 때 많이 사용
4) 최소 응답
- 서버의 응답시간을 고려하여 세션 할당
- 가장 짧은 응답시간을 보이는 서버에 우선적으로 세션 할당
5) 해시
- 특정 사용자는 특정 서버로만 할당
- 특정 IP 주소나 포트에서 접속량이 특히 많을 때 적합
오토스케일링도 적으려고했는데..다음포스트에
'TIL' 카테고리의 다른 글
TIL 240805 - 로컬에서 https 테스트하기 + 인증서 발급 (0) | 2024.08.05 |
---|---|
TIL 240802 - unsigned 속성 / foreign key 에러 (0) | 2024.08.02 |
TIL 240731 - node-media-server 이용한 라이브스트리밍 구현 (1) | 2024.07.31 |
TIL 240729 - Nest.js Socket 실시간 채팅 (0) | 2024.07.29 |
TIL 240726 - typeorm / scheduler를 이용해서 자동으로 데이터 삭제하기 (0) | 2024.07.26 |