본문 바로가기
웹개발자 v2.0

로드 밸런서(Load Balancer)란

by "뭉치" 2020. 7. 29.
728x90

 개요


로드 밸런서란 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산처리하여 해결해 주는 서비스입니다.

 로컬에서만 작업하다 보면 Load Balancer에 대해 고려를 할 필요가 없지만 이에 대해 기본적인 개념은 가지고 개발을 진행을 할 필요가 있습니다. 특히나 요즘에는 특히 무중단 배포로 개발/운영이 진행되다 보니 어떻게 무중단 배포가 가능한지에 대해서 같이 생각을 해보고 넘어가 보면 도움이 많이 될 것입니다.

Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법.

하드웨어 성능을 높이는 게 왜 load balancer랑 연관이 있느냐 의문이 들 수 있는데요. 처리되는 방식이 하나의 서버에서 모든 요청을 처리할 경우에 사용할 수 있는 방법입니다.
즉, 현재 서버가 요청 300건에 대해 처리할 수 있는 사양인데 사용자가 늘어서 500건에 대해 처리를 할 수 있도록 서버 사양을 높이는 방법입니다.

Scale-out : 하나의 Server보다는 여러 대의 Server가 나눠서 일을 하는 방법.

하드웨어 성능을 높던 낮던 여러 대의 서버로 요청을 분산하여 처리하는 경우에 사용할 수 있는 방법입니다.
L2, L3, L4, L7 각 레벨에서 로드 밸런싱 할 수 있는 종류가 있습니다.

레이어 7계층 자세한 블로그 : https://jhnyang.tistory.com/194

1. Physical Layer

2. Data Link Layer

3. Network Layer

4. Transport Layer

5. Session Layer

6. Presentation Layer

7. Application Layer

 

[네트워크 network] OSI 7계층 모델 완벽 이해- 이유를 알고 개념을 이해하고 전체 보기(7 layer)

안녕하세요~~! 맨날 운영체제 리눅스 관련 글만 쓰다가 처음쓰는 네트워크 글이네요! 원래 네트워크도 굉장히 좋아했는데,,, 포스팅 쓰는게 아무래도 쉽게 되는게 아니다보니 미루고 미뤄지다 ��

jhnyang.tistory.com


https://nesoy.github.io/articles/2018-06/Load-Balancer  참조


Load Balancer 기준

[로그 밸런싱에 대한 자세한 참조]
https://jins-dev.tistory.com/entry/L4-L7-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1Load-Balancing-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

L4 로드 밸런싱

Round Robin 세션을 순차적으로 맺어주는 방식이다. 일반적으로 5:5의 분산이 가능하나 경로별로 같은 처리량이 보장이 안된다.
Least Connections 가장 적은 Open Session을 가진 서버로 연결을 붙여준다. 가장 많이 사용되는 방식이다.
Response Time 각 Real Server들이 다루는 Resource의 양과 Connection 시간, 데이터양이 다른 경우 사용하기 적합하다. 로드밸런서가 서버와 직접 통신을 하면서 응답시간이 빠른 쪽으로 많은 세션을 할당해 준다.
Hash 특정 클라이언트는 특정 서버로만 할당시키는 방식. 경로가 보장되며 접속자 수가 많을수록 분산 및 효율이 뛰어나다. 다만 접속자 수가 적을 수록 공평하게 분산이 안 될 수도 있다.
Min miss 해시 기법과 유사하지만 특정 서버 다운시 해시값의 재할당이 이루어진다. Source IP 기반으로 해싱을 하기 때문에 프록시를 사용하는 경우 Hashing이나 Min miss를 사용하면 안 된다.
Bandwidth Based 서버들과의 대여폭을 고려하여 분산한다.

L7 로드밸런싱

Persistence with Cookies

주로 쿠키를 활용한 Connection Persistence를 유지하며, 쿠키 정보를 분석한다. WAS로 이루어지는 연결에 대해 해당 연결을 동일한 서버로 연결되게끔 해준다.
Context Switching 클라이언트가 요청한 리소스에 대해 Context를 전환할 수 있다. 가령 Static 이미지 리소스 등에 대해 Load Balancer가 확장명에 따른 분류로 Image Server로 연결해 줄 수 있다.
Content Rewriting 전달받은 Request를 변환해서 재전송이 가능하다.

apache modjk 이용

아래 링크를 통해 직접 설치해보고 apache+tomcat 연동 및 로드 밸런싱을 어떻게 설정할지 확인해보면 좋을 것 같습니다.

https://blog.naver.com/pigohno/221124911147

 

apache 설치

centos 6 기준 apache 설치.참조사전 작업1. 구글 클라우드에서 VM 인스턴스 하나 만듬.2. 주어진 계정 p...

blog.naver.com

https://waspro.tistory.com/266

 

[Apache] lbfactor를 이용한 Load Balancing (부하분산)

본 포스팅은 Apache의 Load Balancing에 대한 가이드입니다. 본 포스팅은 Apache의 worker별 load balancing 을 구성하는 시나리오입니다. 먼저 Standalone Mode에서의 Clustering환경 구성과 Apache와의 연동이..

waspro.tistory.com

https://goddaehee.tistory.com/77

 

6. [CentOS7] 아파치와 톰캣 연동하기 (mod_jk) & 로드밸런스 설정

[CentOS7] 아파치와 톰캣 연동하기 (mod_jk) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 로드 밸런싱 설정 해보기 ] 입니다. :) ▶ 아파치와 톰캣을 연동하는 이유  - Tomcat 서버는 본연의 임무인 서��

goddaehee.tistory.com


쿠버네티스에서의 로드밸런싱

알기 쉽게 설명을 하고 싶으나 알기 쉬우라고 적은 간단한 내용이 다소 어설퍼 보이거나 성의 없어 보일 수 있으니 쿠버네티스의 복잡한 부분에 대해서 잘 설명해 놓은 블로그를 참조하여 전반적인 이해를 하는 게 좋을 것 같습니다.

[쿠버네티스 개념 잡기]

https://blog.naver.com/alice_k106/221502890249

 

162. [Kubernetes] 1편 : 쿠버네티스 Ingress 개념 및 사용 방법, 온-프레미스 환경에서 Ingress 구축하기

이번 포스트에서는 쿠버네티스에서 인그레스 (Ingress) 를 사용하는 방법, 그리고 Public 클라우드를 쓰...

blog.naver.com


[쿠버네티스 무중단 배포 개념 잡기]

https://bcho.tistory.com/1256

 

쿠버네티스 #2 - 개념 이해 (1/2)

쿠버네티스 #2 개념 이해 (1/2) 조대협 (http://bcho.tistory.com) 쿠버네티스를 공부하면서 가장 헷갈리는 부분이 용어와 컨셉이다. 이 컨셉만 잘 이해하면 쿠버네티스를 쉽게 이해하고 사용할 수 있지��

bcho.tistory.com


로드밸런싱에 대해 좀 더 간단하면서 이거다! 싶을 만한 직관적인 설명을 하고 싶었는데 아무래도 명확하게 생각 정리가 되어 있지 않아 다른 사람들의 블로그를 참조할 수 밖에 없는 상황입니다.

요지는 apache modjk를 통해서 로드 밸런싱을 구축할 수 있고 쿠버네티스의 Deployment, Service에 대한 이해와 Deployment에서 replicaset을 통한 배포 방법(rolling-update 등)에 대해서 이해를 하고 넘어가면 좋을 것 같습니다. 해당 서비스들이 배포 툴(jenkins, gitlab)을 사용하여 배포 파이프라인 스크립트 작성을 통해 무중단 CI/CD가 가능하다는 점입니다.

각 서비스는 MSA의 각각의 서비스로... (이하 설명은 다음 기회에..)

참조

https://nesoy.github.io/articles/2018-06/Load-Balancer
https://jhnyang.tistory.com/194
https://jins-dev.tistory.com/entry/L4-L7-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1Load-Balancing-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
https://blog.naver.com/pigohno/221124911147
https://waspro.tistory.com/266
https://goddaehee.tistory.com/77
https://blog.naver.com/alice_k106/221502890249
https://bcho.tistory.com/1256

 

728x90

'웹개발자 v2.0' 카테고리의 다른 글

캐싱 서비스(Caching service) 란  (0) 2020.07.29
데이터베이스(Database)란  (0) 2020.07.29
WAS(Web Application Server) 란  (0) 2020.07.29
DNS(Domain Name Service/System/Server) 란  (0) 2020.07.29
웹 개발이란  (0) 2020.07.29

댓글