본문 바로가기
  • 클라우드야 나랑 친해지자!
클라우드/GCP

로드 밸런싱(Load Balancing) 구축 실습

by 정민규 2021. 2. 4.
반응형

수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다

개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.

 

잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!


 

 

 

 

로드밸런싱

 

 

 

교재 '구글 클라우드 플랫폼 인 액션' 를 기반으로 로드 밸런싱을 구축해봤습니다.

위의 이미지는 이해를 돕기 위한 예제로 참고해주시기 바랍니다.

 

 

 

 

부하분산 또는 로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 이로써 가용성 및 응답시간을 최적화 시킬 수 있다. 예를 들어, 메인프레임 1대(단일 구성체) 보다 IA-32와 같은 일반적인 서버(복합 구성체)가 안정성 면에서 유리한 위치에 있다. 부하분산 서비스는 그에 적합한 하드웨어와 소프트웨어에 의해 제공된다. 이 기술은 보통 내부 네트워크를 이용한 병렬처리(특히, 고가용성의 병렬처리)에 사용된다.

부하분산을 위한 대부분의 응용 프로그램은 다수의 서버(다른 말로, 서버 팜)를 가지고 한 가지 종류의 인터넷 서비스를 지원하는 방식이다. 보통 부하 분산은 트래픽이 많은 웹 사이트, IRC 네트워크, FTP 사이트, NNTP 서버 그리고 DNS서버에 적용이 되고 있다.

인터넷 서비스를 위해서는 소프트웨어를 이용한 부하분산이 적용되며, 이 소프트웨어는 중간에 위치에 실제 서비스하는 서버와 클라이언트를 포트를 이용해 중개하고 있다. 그러나 사용자는 이를 알아차리지 못한다. 이를 투명성이라한다.

또한, 보안이라는 측면에서 내부 네트워크 구조를 숨김으로서 크래킹을 막을 수 있다.

일부 부하분산 소프트웨어는 실서비스 서버들을 관리하는 역할을 수행하기도 한다. (예를 들어, 서버 다운 혹은 백업에 관련된 작업과 같은)

부하분산의 다른 방식으로는 Round Robin DNS 라고 하는 특별한 하드웨어 및 소프트웨어가 필요가 없는 방식이 있다. 이 방식에서는 여러 개의 IP주소를 동일한 도메인 네임에 연관지어 놓고 클라이언트들이 어떤 서버를 사용할 것인지 결정하게 하는 방식이다. 일반적인 부하분산과는 다르게 "투명성"이 존재하지 않는다. 왜냐하면 이미 내부의 서버들의 주소가 이미 노출되어 있기 때문이다.

이 방식은 장단점이 혼재되어 있다. DNS서버에 대한 의존도가 높고 부하분산이 원하는 대로 될 수 있다는 것이다.

 

- 출처 : 위키백과 -

 

 

 

 

1) 인스턴스 템플릿 만들기 ( Compute Engine -> 인스턴스 템플릿 )

 

 

먼저, Apache 웹 서버를 켜는 새 인스턴스 탬플릿을 만들겠습니다.

이름과 머신구성 그리고 부팅 디스크, 방화벽, 자동화 등의 주요 변경사항을 설정했습니다.

 

자동화 스크립트의 경우 방화벽 아래에 관리,보안,디스크,네트워킹,단독 임대를 클릭하시면 나타납니다.

 

 

 

 

2) 인스턴스 그룹 만들기

 

 

apache-template 을 클릭하고 '인스턴스 그룹 만들기' 를 클릭합니다.

인스턴스 그룹 설정은 위와 같이 했습니다.

3개의 인스턴스가 생성되고난 후, 인스턴스 그룹의 외부 IP로 접속해보시면 Apache 웹사이트가 뜨는 것을 확인하실 수 있습니다.

 

 

이 때, 인스턴스의 최대 개수는 10개로 두면 에러가 나타나므로 5개로 설정하겠습니다.

에러 내용과 설명이 궁금하신 분은 아래 링크를 참고하시면 되겠습니다.

stackoverflow.com/questions/63423413/instance-group-exceeded-limit-quota-for-instances-on-resource-us-instance-g

 

Instance Group : Exceeded limit 'QUOTA_FOR_INSTANCES' on resource 'us-instance-group-1'. Limit: 8.0

I am using GCE on Asia-Southeast-b with 2vCPU 10GM for my website I am trying to test CDN and LB, so was halfway to create an instance group in the US but it threw me an error no matter how. Instance

stackoverflow.com

 

 

 

 

3) 로드 밸런싱 ( 네트워크 서비스 -> 부하 분산 )

 

 

백엔드 -> 부하 분산기 만들기 -> HTTP(S) 부하 분산 구성 시작 -> 인터넷 트래픽을 VM으로 분산

-> 백엔드 구성 -> 백엔드 서비스 만들기

 

 

백엔드 서비스
상태 확인 설정

 

'상태 확인' 을 클릭하면 위의 설정이 나타납니다.

 

 

상태 확인 설정 된 후

 

 

 

백엔드 구성을 마친 후,  호스트 경로 및 규칙 클릭 후 별다른 설정 없이 프론트 엔드 구성으로 넘어갑니다.

 

 

프론트엔드 구성

 

검토 및 완료

 

검토 및 완료를 통해 설정한 값을 확인한 후 만들어줍니다.

 

게시물 맨 위에 첨부한 이미지와 같이 이런 방법으로 백엔드를 여러 개 만들었다고 가정했을 때, 하나의 로드밸런서를 통해 서버로부터의 부하를 분산해서 트래픽의 과부하를 방지하고 가용성과 응답시간을 최적화할 수 있게 됩니다!

 

4) 로드밸런서로 Apache 웹사이트 접속하기

 

만들어진 로드 밸런스 클릭 후,

프론트엔드의 IP로 웹사이트 접속 시 Apache 웹사이트에 접속되면 성공!

 

단, 로드 밸런스가 만들어진 후 1~5분의 시간 후에 접속이 됩니다. ( 프로비저닝 시간으로 추정 됨 )

반응형

'클라우드 > GCP' 카테고리의 다른 글

App Engine : 완전 관리형 애플리케이션  (0) 2021.02.08
Node.js 설치  (0) 2021.02.05
Cloud Spanner : 대규모 SQL 실습  (0) 2021.02.05
Wordpress 실습 (Ubuntu)  (0) 2021.01.29
SDK 설치 및 인스턴스 연결  (0) 2021.01.29

댓글