본문 바로가기
CSP (Cloud Service Provider)/GCP

[GCP] 부하 분산기

by BTC_김승윤 2022. 5. 13.

트래픽의 집중

트래픽이 집중 되며 서버에 부하가 늘어가면 서버 관리자는 들어오는 트래픽에 대한 고민을 해야합니다.

서버의 하드웨어 성능을 늘릴 것인가 서버 한 대를 더 구매할것인가
여기서 스케일 업 , 스케일 아웃 으로 말할 수있습니다.

이름설명

스케일 업 서버의 하드웨어(CPU,메모리 등)업그레이드
스케일 아웃 서버를 한대 더 구매

스케일 아웃처럼 서버를 한대 더 구비하여 서비스를 제공할때 각 서버에 몰리는 트래픽에 관리에 대한 문제점이 생깁니다

만약, 서버-A에는 만대의 트래픽이 몰리고 서버-B에는 수백 대의 트래픽만이 몰린다면 우리가 만족할 만한 서비스가 이뤄지기 힘들기 때문입니다.

하지만 이러한 문제점은 로드밸런싱으로 해결 할 수 있습니다.

그래서 로드 밸런싱이 뭔데?

컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미

Load Balacing 는 서비스에 들어오는 트래픽이 몰릴때 준비 된 서버 중 하나의 서버에 트래픽이 몰리는걸 방지하고 트래픽을 분산 시켜 서버에 부하의 덜어 주는 서비스 입니다.

로드 밸런싱의 종류

로드 밸런싱의 종류는 OSI 7계층에 따라 나눠져 있습니다.

  • OSI 4 계층: Transport 계층 ,TCP/UDP/RTP/SCTP/SPX 프로토콜의 기능을 사용할 수 있습니다.
  • OSI 7 계층 : Application 계층 , HTTP/SMTP/FTP/NFS/Telnet 프로토콜의 기능을 사용할 수 있습니다.

로드 밸렁싱은 위 프로토콜 중

  • L4에서 IP와 포트번호로 부하 분산이 가능 합니다.
  • L7에서는 URL과 HTTP 헤더에서 부하 분산이 가능합니다.

L4의 기능에 비해 L7의 기능이 좀 더 좋아보이는게 느껴 지시죠?

기능이 더 좋은 L7는 L4보다 가격이 좀 더 비쌉니다

로드 밸런싱의 알고리즘

참고 사이트 -디벨로퍼IO 블로그

라운드 로빈 방식

라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식입니다.

첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버 할당합니다.

로드밸런싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식 입니다.

가중 라운드 로빈 방식

실제 서버에 서로 다른 처리 용량을 지정할 수 있습니다. 각 서버에 가중치를 부여 여기서 지정한 값을 통해 처리 용량을 지정합니다.

최소 연결 방식

최소 연결 방식은 연결 수가 가장 적은 서버에 네트워크 연결방향을 정합니다.

동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 동적으로 변하는 요청에 대한 부하를 분산시킬 수 있습니다.

GCP 부하분산기 만들기

GCP 부하 분산기의 종류

  1. HTTP(S) 부하분산
    HTTP 및 HTTPS 애플리케이션용 레이어 7 부하 분산입니다
  2. TCP 부하 분산
    TCP/SSL 프로토콜을 사용하는 애플리케이션용 레이어 4 부하 분산 또는 프록시입니다
  3. UDP 부하 분산
    UDP 프로토콜을 사용하는 애플리케이션용 레이어 4 부하 분산입니다

여기서 우리는 1 HTTP(S) 부하분산을 만들어 로드밸런싱을 할 것입니다.

1. 백엔드 구성

백엔드 서비스, 백엔드 버킷

  1. 백엔드 구성 선택하기
    백엔드 서비스는 서버로 만들수있는 인스턴스들에 연결을 하기위한 서비스이고 -- (선택)
    백엔드 버킷은 저장소에 연결을 하기 위한 서비스입니다.
  2. 백엔드 서비스 생성
    2-1. 백엔드 유형 지정
    백엔드 유형에는 아래와 같이 존재합니다.

그룹 명설명

인스턴스 그룹 인스턴스 그룹이 백엔드 서비스와 작동하는 방식
영역별 네트워크 엔드포인트 그룹 (NEG) 인스턴스 그룹에서 VM을 참조하는 대신 IP 주소/포트 조합별로 서비스를 나타냅니다.
  네트워크 엔드포인트 그룹은 네트워크 엔드포인트의 논리적 그룹입니다.
인터넷 네트워크 엔드포인트 그룹 외부 백엔드를 정의하는 전역리소스입니다.
  외부 백엔드는 온프레미스 인프라 또는 타사에서 제공하는 인프라에서 호스팅되는 백엔드 입니다.
서버리스 네트워크 엔드포인트 그룹 NEG는 부하 분산기의 백엔드 엔드포인트 구릅을 지정합니다 .
  서버리스 NEG는 Cloud Run,App Engine,Cloud Functions 서비스를 가리키는 백엔드 입니다.

여기서 우리는 인스턴스 그룹으로 로드밸런싱 서비스를 만들것입니다.

우선, 간단히 HTTP 프로토콜만 사용하도록 하겠습니다. SSL 인증을 받을려면 별도의 인증을 거쳐야하기때문에 추후 내용을 추가 하도록 하겠습니다.

2-2. 새 백엔드 지정

인스턴스 그룹에는 만들어준 instance-group-vm-web을 지정합니다.

포트번호는 HTTP 프로토콜을 사용하므로 80번 포트를 사용 하겠습니다.

분산모드

GCP 설명
부하 분산기가 어떻게 백엔드 인스턴스 그룹이나 NEG에 요청을 분산하는지 결정합니다. HTTP(S)의 경우 지원되는 부하 분산 모드는 사용률(예: 그룹 백엔드)과 속도(예: 인스턴스 그룹 및 NEG)입니다. 백엔드가 구성된 최대 사용률이나 속도에 도달하면 부하 분산기가 새로운 요청을 구성된 최댓값에 도달하지 않은 다른 백엔드로 전달합니다. 모든 백엔드가 구성된 최댓값에 도달하면 부하 분산기가 해당 값을 초과하게 됩니다.

분산모드에서 인스턴스 최대 사용률과 인스턴스 요청 최대 속도를 지정할 수 있습니다.

Cloud CDN 은 나중에 추가 하도록 하겠습니다.

상태확인

백엔드 인스턴스가 트래픽에 제대로 응답하는지 확인하는 상태 확인 메커니즘을 제공합니다

상태확인할 프로토콜과 포트를 지정하고 상태기준 조건을 지정하여 서비스가 제대로 동작하고 있는지 상태를 확인 할 수 있습니다.

2. 호스트 및 경로 규칙

호스트 및 경로 규칙은 트래픽의 전달 방식을 결정합니다. 백엔드 서비스나 스토리지 버킷으로 트래픽을 전달할 수 있습니다. 고급 모드를 사용하면 트래픽을 전달하기 전에 사용자 요청 URL을 재작성하거나 URL 리디렉션으로 클라이언트에 응답할 수도 있습니다.

위 과정을 거지면 호스트 및 경로 규칙이 자동적으로 통과되는 모습이 보일겁니다. URL를 조정하여 리다이렉션이나 URL 재작성 기능을 이용하시고 싶으시면 눌러서 수정을 해주시면 됩니다.

3. 프런트엔드 구성

간단한 설정이라 사진만 첨부하고 넘어 가도록 하겠습니다.

부하 분산기 완성

댓글