일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- server
- fluentd
- IP
- docker
- 쿠버네티스 컨트롤러
- SRE
- Site Reliability engineering
- 모캠
- 모두의캠퍼스
- Redux
- React.js
- #Swagger
- 프로세스 통신
- Reducer
- React
- 북딜
- #Swagger-ui
- #api 문서화
- Kubernetes
- ecs
- 카카오게임즈
- action
- #스웨거
- 프로세스
- javascript
- 기술PM
- 쿠버네티스
- AWS
- #Swagger-codegen
- #Swagger-editor
- Today
- Total
탕구리's 블로그
부하분산 Load Balancing 본문
시작하기 전에
해당 블로그에 작성되는 글은 주인장의 지극히 주관적인 생각이 다수이며, 대부분의 지식은 구글링을 통해 얻고 있기 때문에 옳지않은 정보가 있습니다.
잘못된 부분이나 수정해야 하는 부분이 있다면 과감히 덧글을 남겨주세요! 모르는게 많은 새싹입니다
오늘의 주제
오늘의 주제는 로드밸런싱! AWS를 이용할 계기가 생겨서 로드밸런서와 로드밸런싱에 대해 알아보던 도중 글을 작성하게 되었습니다. 간단한 내용이지만 재밋게 읽어주세요.
부하분산, 로드밸런싱(Load Balancing)이란?
컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미합니다. 부하를 여러대의 서버 컴퓨터가 나누어 갖기 때문에 가용성 및 응답시간을 최소화 시킬 수 있습니다. 로드 밸런싱은 트래픽의 과부하를 막기위해 가상의 아이피(Virtual IP)를 통해 여러대의 서버로 접속을 분배하는 기능을 합니다.
인터넷 서비스에서는 소프트웨어를 이용한 부하분산이 적용되며, 소프트웨어는 중간에 위치해 실제 서비스하는 서버와 클라이언트 포트를 이용해 중개한다. 내부의 네트워크 구조를 공개하지 않기 때문에 크래킹을 막을 수 있습니다.
각 계층에서 사용하는 스위치의 역할과 무엇을 기준으로 스위치 기능을 하는지는 다음과 같습니다.
L2(DataLink Layer)에서는 MAC address를 이용한 스위칭을 합니다. 외부 호스트에 접근할 수 있는 방법이 없습니다. 또한 상위 계층으로의 프로토콜 기반 스위칭이 불가능 합니다.
L3(Network Layer)에서는 IP address를 이용한 진행하며, L2 + Routing의 기능을 합니다. IP주소를 이용하기 때문에 외부망에 있는 호스트에게도 스위칭이 가능한 구조를 갖추고 있습니다.
L4(Transport Layer)는 TCP / UDP 프로토콜을 이용합니다. IP와 Port를 기반으로 한 스위칭이 발생합니다.
L7(Application Layer)에서는 IP와 Port 그리고 패킷의 내용을 통해 스위칭을 합니다.
보통 상위 계층에 있는 스위치는 하위 계층에 있는 스위칭을 지원합니다. 하지만 각 계층에는 고유의 문제점들이 존재합니다. L2, L3 장비는 요즘에는 많이 사용하는 추세는 아닌것 같아. L4와 L7 스위치에 대해서만 좀 더 상세하게 정리하였습니다.
L4 스위치
L4 스위치의 로드 밸런서는 위와 같은 형태를 갖추고 있습니다. 중간의 스위치를 통해 각각의 서버에 접속을 분산시켜 보내주는 역할을 합니다. 트랜스포트 레이어에서 작동합니다. IP, PORT, SESSION 을 기반으로한 로드밸런싱을 담당합니다. TCP/UDP 프로토콜을 이용하며 프로토콜의 헤더를 보고 로드 밸런싱을 수행 한다고 합니다. 주로 Round Robin 방식을 이용하여 부하를 분산합니다.
눈 크게 뜨고, 그림을 봅시다. (O_O)
DSR(Direct Server Return) 모드
L4가 양방향 프록시라면 모든 웹서버가 받는 트래픽을 L4가 다 받야아 합니다. DSR 기능은 응답시 L4 스위치를 거치지 않고 출발지 IP로 다이렉트하게 응답하여 줍니다. L4 스위치에서 제공하는 DSR 기능을 통해서 스위치는 양방향에서 발생하는 모든 트래픽을 받는게 아닌 클라이언트에서 발생한 트래픽만 처리해주게 됩니다.
NAT(Network Access Traslation)
- TCP/UDP 포트 숫자와 소스 및 목적지 IP주소등을 재기록하여 라우터를 통해 네트워크 트래픽을 주고 받는 기술입니다.
- 사설 네트워크에 속한 여러개의 호스트가 하나의 공개 IP를 통해 접속하는 것을 목적으로 합니다.
L4 스위치의 사용이 적절한 경우와 적절하지 않은 경우입니다.
적절한 경우는 다음과 같아요
- 요청 패킷이 적은 경우
- 일반적인 웹 요청의 경우
- 파일 다운로드의 경우
다음 경우는 적절하지 못합니다.
- 요청 패킷이 많은 경우
- 파일 업로드와 같은 웹 요청의 경우
- SMTP
L7 스위치
쿠키정보, 플레이로드 정보 등을 분석(패킷의 정보를 이용하여 원하는 장비나 서버로전송을 합니다) 좀 더 정교한 로드밸런싱이 가능 합니다.
L7 스위치는 L4 스위치보다 보안적으로 우수합니다. 데이터 분석을 통해 DDoS 공격 방어가 가능하고, 감염 패킷의 필터링이 가능합니다.
주요기능
- 전송제어 : IP 헤더 및 페이로드 등 패킷을 분석
- 로드밸런싱 : HTTP, URL 등 컨텐츠 내용 기반 부하분산
- Qos : 세션별, 유저별, 애플리케이션별 대역 관리
- 모니터링: 응용 프로그램 수준의 트래픽 감시 및 통제
L4와 L7 스위치 차이점
L7 스위치는 Client - Switch의 세션과 Switch - Server의 세션을 각각 맺어 두 세션을 연결시켜 관리합니다.
L7 스위치는 "URL 스위칭 방식"과 "Cookie 스위칭 방식"을 사용하여 부하를 분산합니다.
- 초당연결수(connections per second) : (3 Way Handshake를 통한) TCP 세션 open의 시간당 처리 개수
- 동시연결수(concurrent connections) : 동시 세션 유지 개수
- 처리용량(throughput) : (패킷 자체에 대해 연결이 성립되는) UDP 프로토콜에 대한 로드밸런싱 성능 지표. FWLB에서 중요. 단위는 bps(bit per second) 또는 pps(packet per second)를 사용.
'Conception > Computer Network' 카테고리의 다른 글
[OSI 참조모델과 TCP/IP 기초] #1 TCP/IP란? (0) | 2019.03.18 |
---|---|
프로토콜(Protocol)? 그래서 그게 뭔데? (0) | 2019.03.15 |
[네트워크 개론] 네트워크 서비스 2편 - DNS (0) | 2019.02.28 |
[네트워크 개론] 네트워크 서비스 1편 DHCP (1) | 2019.02.27 |
[네트워크 개론] 네트워크를 구성하는 장치 (1) | 2019.02.27 |