본문 바로가기
이론 공부 내용 정리

네트워크3-로드밸런싱, 웹 통신의 큰 흐름

by mazayong 2021. 5. 24.

1. 로드밸런싱?

정의

= 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술.

 

사용하는 이유

=클라이언트의 수가 늘어나면 트래픽이 증가해 서버 1대만으로는 정상적인 서비스가 불가능하기 때문.

-> Scale-up(서버 자체의 성능 확장)이 아닌 Scale-out(기존 서버와 동일/낮은 성능의 서버를 2대 이상 증설해 운영하는 것 의미.)을 사용할 경우에 로드밸런싱 필요.

 

로드밸런싱 구현에 대한 알고리즘

= 라운드로빈 방식

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합.

 

= 가중 라운드로빈 방식

각각 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분. 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식.

 

= IP 해시 방식

클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식입니다. 사용자의 IP를 해싱해(Hashing, 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것, 또는 그러한 함수) 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장합니다.  

 

=최소 연결 방식

요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분합니다. 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식입니다.

 

=최소 리스폰 타임

서버의 현재 연결 상태와 응답시간(Response Time, 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간)을 모두 고려하여 트래픽을 배분합니다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식입니다.

 

+로드밸런싱에는 L4, L7 로드밸런싱이 많이 이용된다. 그 이유는 L4로부터 포트 정보를 바탕으로 로드를 분산하는 것이 가능하기 때문.

 

 

2. 웹 통신의 큰 흐름

 

웹 통신의 큰 흐름:https://www.google.com/을 접속할 때 일어나는 일

(+OSI 7계층과도 연관지어 설명해보기)

 

브라우저가 URL에 적힌 값을 파싱해서 HTTP Request Message를 만들고, OS에 전송 요청을 합니다. 이 때, Domain으로 요청을 보낼 수 없기 떄문에 DNS Lookup을 수행합니다.

DNS 룩업 과정은 크롬의 경우 브라우저 --> hosts 파일 --> DNS Cache의 순서로 도메인에 매칭되는 ip를 찾습니다. 

hosts 파일
hosts파일이란 호스트 네임에 대응하는 IP주소를 저장하는 파일로서, DNS 서버에서 주소정보를 제공받지 않고도 서버의 위치를 찾게하는 파일 입니다.

OS 별로 가지고 있으며, DNS 서버가 존재하기 전(1984)에 아이피 주소를 매핑하는 테이블로서 사용하였다.
현재는 그 역할을 DNS서버가 잘 해주고 있기 때문에 일반적인 상황에서 사용할 일을 드물다.

일반적으로 설명하는 DNS Lookup은 루트 도메인 서버에서부터 서브 도메인 서버순으로 찾게 됩니다.

이 요청은 찾은 IP주소와 함께 프로토콜 스택이라는 OS에 내장된 네트워크 제어용 소프트웨어에 의해 패킷에 담기고 패킷에 제어정보를 덧붙여 LAN어댑터에 전송하고, LAN 어댑터는 이를 전기 신호로 변환시켜 송출합니다.

패킷은 스위칭 허브등을 경유하여 인터넷 접속용 라우터에서 ISP로 전달되고 인터넷으로 이동합니다.
액세스 회선에 의해 통신사용 라우터로 운반되고 인터넷의 핵심부로 전달됩니다. 고속 라우터들 사이로 목적지까지 패킷이 흘러들어가게 됩니다.
핵심부를 통과한 패킷을 목적지의 LAN에 도착하고, 방화벽이 패킷을 검사한 후 캐시 서버로 보내어 웹 서버에 갈 필요가 있는지 검사합니다.
웹 서버에 도착한 패킷은 프로토콜 스택이 패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘깁니다. 애플리케이션은 요청에 대한 응답 데이터를 작성하여 클라이언트로 회송하고, 이는 전달된 방식 그대로 전동됩니다.

 

브라우저에서 "www.naver.com " 값을 입력하면 어떤 일이 벌어질까?

1. 브라우저는 입력된 url을 파싱하여, HTTP request 메시지를 만듭니다.

2. 로컬 PC의 hosts파일과 브라우저 캐시를 확인하여 입력한 도메인의 맵핑정보가 있는지 확인합니다. (있으면 DNS 쿼리를 생략)

3. DHCP 서버로부터 사용자 자신의 IP주소, 가장 가까운 라우터의 IP주소, 가장 가까운 DNS서버의 IP주소를 받습니다.

4. ARP 프로토콜을 이용하여 IP주소를 기반으로 가장 가까운 라우터의 MAC 주소를 알아냅니다.

5. DNS 쿼리를 DNS 서버에 송신하여, 웹 서버의 IP주소를 받습니다.

   5-1) 구체적으로.. Root 네임서버 -> .com 네임서버 -> naver.com 네임서버를 거쳐서 IP주소를 수신하게 됩니다.

6. TCP 소켓을 개방하고, 3-way handshaking을 통해 연결합니다.

7. TCP 연결에 성공하면, HTTP Request가 TCP 소켓을 통해 보내지고, 응답으로 리소스를 받습니다.

8. 브라우저는 요청 받은 리소스를 구문 분석, DOM 트리 생성, 렌더링 등 과정을 거쳐 화면에 표시한다.

 

 

https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 

 

로드밸런서(Load Balancer)의 개념과 특징

[BY 가비아] 현대의 모든 정보는 인터넷을 통해 연결되어있습니다. 인터넷의 발달은 데이터 통신을 보다...

m.post.naver.com

https://k39335.tistory.com/24

https://velog.io/@ljh95/백엔드-면접-질문-따라써보기

https://hongchan.tistory.com/46

 

백엔드 면접 질문 따라써보기 TIL(3)

원본 사이트를 보며 만들었고 질문을 하나하나 적어보는 것과 나중에 채워가는 것이 도움이 되리라 생각하고 적습니다. Information 백엔드 개발자를 준비하면서 받았던 면접 질문, 학습했던 내용,

velog.io

 

[Network] 웹 통신의 큰 흐름 ( 브라우저 주소창에 URL 입력 시 과정 )

[Network] 웹 통신의 큰 흐름 ( 브라우저 주소창에 URL 입력 시 과정 ) 웹 통신의 큰 흐름 우리가 Chrome 을 실행시켜 주소창에 특정 URL 값을 입력시키면 어떤 일이 일어나는가? in 브라우저 url 에 입력

k39335.tistory.com