로드밸런서란?
- 대용량 서비스를 운영하려면 부하 분산이 필요함(한 서버에 트래픽이 몰리는 현상 해결)
- 로드밸런싱이란 기본적으로 부하를 나누는 것으로 서버 앞단에서 클라이언트의 요청을 여러 대의 컴퓨터에 작업을 나누는 것을 말함
- 로드 밸런서는 로드 밸런싱을 하는 소프트웨어/하드웨어를 칭함
- 운영체제 로드밸런서(물리적 프로세서-작업 스케줄링), 네트워크 로드밸런서(백엔드에서 네트워크 작업 스케쥴링)
로드밸런싱 알고리즘
- Round Robin: 분할 시스템을 위해 설계된 선점형 스케줄링. 요청이 들어올 때 마다 일정한 순서대로 요청을 넘긴다. 서버 부하에 대한 고려가 없어 상황에 따라 비효율적인 부하 분산이 발생할 수도 있다.
- Weighed Round Robin, Least Connection Method, Least Response Time Method, IP hash(클라이언트의 IP 주소를 특정 서버로 매핑, 동일 서버 연결 보장) 등
DNS 라운드로빈 방식 로드밸런싱 문제
- 보통 DNS 서버의 부하를 줄이고 성능을 향상하기 위해 일정 시간 동안 캐싱하기 때문에 부하 분산이 균등하게 되지 않는다.
- 특정 서버에 장애가 발생하더라도 장애 여부가 감지되지 않아 서비스에서 해당 서버를 제거할 수 없다.
L2, L4, L7 로드밸런싱이란?
L은 OSI model의 층(Layer)을 뜻함
- L2 로드 밸런싱 : Layer 2(Data Link 계층)에서의 로드밸런싱, MAC 주소를 이용하여 전달할 서버를 결정, 로드밸런서가 알 수 있는 게 MAC 주소 밖에 없어 부하 분산 전략이 제한적
- L4 로드 밸런싱 : Layer 4(Transport 계층)의 로드밸런싱, IP 주소와 포트를 기반으로 로드밸런싱, 패킷 헤더의 source IP와 destination IP를 NAT(Network Address Translation)을 통해 바꿔서 서버에게 전달, VIP(virtual IP) 단위로 로드밸런싱
- L7 로드 밸런싱 : Layer 7(Application 계층)의 로드밸런싱, 가장 섬세한 라우팅이 가능하지만 비용이 비쌈(소프트웨어로 조절)
(ex. tistory.com/movie , ~/book 등 카테고리에 따라)
기타 참고
NAT(Network Address Translation)
- 사설 ip주소를 공인 IP주소로 변경(주소변경의 역할)
DSR(Dynamic Source Routing protocol)
- 서버에서 클라이언트로 되돌아가는 경우 로드밸런서를 거치지 않고 바로 클라이언트를 도달하는 개념
Tunneling
- 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념, 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있음
스위치와 로드밸런서
- 허브: 한 포트로 들어온 신호를 다른 모든 포트로 전달
- 스위치: 신호를 필요로하는 포트로만 전달
- 따라서 스위치에서는 불필요한 트래픽이 감소해 네트워크 데이터 전송 속도 향상, 동의어는 아니지만 동의어처럼 쓰기도 함
- L2스위치 : 포트에 연결된 각 호스트의 맥주소를 기억해 통신할 당사자 간에만 데이터를 전달해 통신 과정에서 다른 호스트가 보내는 패킷 신호와의 충도릉ㄹ 피할 수 있음
- L3스위치 : Vritual LAN, LAN을 몇 개의 가상적인 네트워크로 분할해서 통신 효율을 높이기 위해 사용, 브로드캐스트 패킷을 VLAN 내의 호스트 범위로만 제한하여 전달할 수 있음
동작 방식 내용 추가 필요
참고
- Scale up, 스케일업 : 서버 자체의 능력을 증강, 구축 설계가 쉬움, 비싸고 확장성 한계
- 정합성 유지가 어려운 경우(db 서버) 사용
- Scale out, 스케일아웃 : 여러대의 서버, 확장성 가능, 장애 가능성 낮음(분산), 관리 비용, 설계 복잡
- 병렬 실현이 쉬운 경우, 메일 게시판 서버 등
DNS round robin 방식
- DNS만을 이용해서 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법
- DNS가 여러대의 웹서버 중 라운드 로빈 형태로 랜덤하게 하나 혹은 여러개를 선택하여 사용자에게 알려주는 것으로 자연스럽게 서버의 부하가 분산됨
- 로드밸런싱은 서버들의 헬스체크 정보를 수반하지만 라운드로빈 DNS는 특정 웹서버에 문제가 생겨도 알기 어려워 HA 용도로는 적합하지 않다.
- 캐싱 때문에 균등하게 분산되지 않는 경우가 있다.
- Weighted round robin (WRR), Least connection(접속 클라이언트 수가 가장 적은 서버를 선택) 로드밸런서와 같이 사용 등
'CS' 카테고리의 다른 글
[CS]TDD란? (0) | 2021.04.20 |
---|---|
[OS]스레드 동기화 기법 (0) | 2021.04.18 |
[네트워크] DMZ, 포트주소변환(PAT), 네크워크주소변환(NAT) (0) | 2021.04.16 |
[네트워크] 쿠키와 세션 차이(..그리고 캐시) (0) | 2021.04.15 |
[네트워크]REST와 RESTful API (0) | 2021.04.13 |