실습 설정 안내 및 요구사항
계정과 진행 상황을 보호하세요. 이 실습을 실행하려면 항상 시크릿 브라우저 창과 실습 사용자 인증 정보를 사용하세요.

네트워크 및 HTTP 부하 분산기 설정하기 [ACE]

실습 40분 universal_currency_alt 크레딧 5개 show_chart 입문
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
이 콘텐츠는 아직 휴대기기에 최적화되지 않음
최상의 경험을 위해 데스크톱 컴퓨터에서 이메일로 전송된 링크를 사용하여 방문하세요.

개요

이 실습에서는 네트워크 부하 분산기와 HTTP 부하 분산기의 차이점과 Google Compute Engine 가상 머신에서 애플리케이션을 실행하기 위해 이를 설정하는 방법을 배웁니다.

Google Cloud Platform에서 부하를 분산하는 방법에는 여러 가지가 있습니다. 이 실습에서는 다음 부하 분산기의 설정 방법을 알아봅니다.

핵심 개념을 더욱 효율적으로 학습하기 위해서는 수강자가 직접 명령어를 입력해 보는 것이 좋습니다. 대부분의 실습에는 필요한 모든 명령어가 포함된 코드 블록이 포함되어 있습니다. 실습을 수강하는 동안 간편하게 코드 블록의 명령어를 복사하여 적절한 위치에 붙여넣을 수 있습니다.

실습할 내용

  • 네트워크 부하 분산기를 설정합니다.

  • HTTP/HTTPS 부하 분산기를 설정합니다.

  • 네트워크 부하 분산기와 HTTP 부하 분산기의 차이점에 관해 실습합니다.

기본 요건

vim, emacs 또는 nano 등의 표준 Linux 텍스트 편집기 사용에 익숙하면 도움이 됩니다.

설정

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Qwiklabs에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다.
    일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
    다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.

Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

    강조 표시된 Cloud Shell 아이콘

  2. 계속을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

Cloud Shell 터미널에 강조 표시된 프로젝트 ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  • 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list

출력:

Credentialed accounts: - @.com (active)

출력 예시:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project

출력:

[core] project =

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.

기본 리전 및 영역을 설정합니다.

Cloud Shell에서 기본 영역을 설정합니다.

gcloud config set compute/zone us-central1-a

기본 리전을 설정합니다.

gcloud config set compute/region us-central1

영역 및 리전 설정에 대해 자세히 알아보려면 리전 및 영역 문서를 참고하세요.

다중 웹 서버 인스턴스 만들기

머신 클러스터 제공을 시뮬레이션하려면 인스턴스 템플릿관리형 인스턴스 그룹을 사용하여 정적 콘텐츠를 제공하는 간단한 Nginx 웹 서버 클러스터를 만듭니다. 인스턴스 템플릿은 클러스터 내 모든 가상 머신(디스크, CPU, 메모리 등)의 스타일을 정의합니다. 관리형 인스턴스 그룹은 인스턴스 템플릿을 사용하여 여러 가상 머신 인스턴스를 인스턴스화합니다.

Nginx 웹 서버 클러스터를 만들려면 다음을 만드세요.

  • 모든 가상 머신 인스턴스 시작 시 Nginx 서버를 설정하는 데 사용할 시작 스크립트
  • 시작 스크립트를 사용하기 위한 인스턴스 템플릿
  • 대상 풀
  • 인스턴스 템플릿을 사용하는 관리형 인스턴스 그룹

Cloud Shell에서 모든 가상 시스템 인스턴스에서 사용할 시작 스크립트를 만듭니다. 이 스크립트는 시작 시 Nginx 서버를 설정합니다.

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

시작 스크립트를 사용하는 인스턴스 템플릿을 만듭니다.

gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh

(출력)

Created [...].
NAME           MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
nginx-template n1-standard-1             2015-11-09T08:44:59.007-08:00

대상 풀을 만듭니다. 대상 풀은 그룹의 모든 인스턴스에 단일 액세스 포인트를 사용할 수 있도록 하며 이후 단계에서 부하를 분산할 때 필요합니다.

gcloud compute target-pools create nginx-pool

(출력)

Created [...].
NAME       REGION       SESSION_AFFINITY BACKUP HEALTH_CHECKS
nginx-pool us-central1

인스턴스 템플릿을 사용하는 관리형 인스턴스 그룹을 만듭니다.

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

(출력)

Created [...].
NAME         LOCATION       SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE  AUTOSCALED
nginx-group  us-central1-a  zone   nginx               0     2            nginx-template     no

이름이 nginx-로 시작되는 2개의 가상 머신 인스턴스가 생성되며 이 작업에는 몇 분 정도 소요될 수 있습니다.

Compute Engine 인스턴스 목록을 출력합니다. 정상적인 경우 위에서 생성한 모든 인스턴스가 표시됩니다.

gcloud compute instances list

(출력)

NAME       ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
nginx-7wvi us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING
nginx-9mwd us-central1-a n1-standard-1             10.240.X.X  X.X.X.X           RUNNING

이제 EXTERNAL_IP 주소를 통해 포트 80으로 머신과 연결할 수 있도록 방화벽을 구성합니다.

gcloud compute firewall-rules create www-firewall --allow tcp:80

위의 명령어를 실행함으로써 표시되는 외부 IP 주소(http://EXTERNAL_IP/)를 통해 각 인스턴스에 연결할 수 있습니다.

실습 진행 상황을 확인합니다. 아래의 진행 상황 확인을 클릭하여 웹 서버 그룹을 생성했는지 확인합니다.

웹 서버 그룹 만들기

네트워크 부하 분산기 만들기

네트워크 부하 분산을 사용하면 주소, 포트, 프로토콜 유형과 같은 수신 IP 프로토콜 데이터를 기준으로 시스템의 부하를 분산할 수 있습니다. 또한 HTTP/HTTPS 부하 분산에서는 제공되지 않는 옵션을 사용할 수 있습니다. 예를 들어 SMTP 트래픽과 같은 추가 TCP/UDP 기반 프로토콜의 부하를 분산할 수 있습니다. 또한 애플리케이션이 TCP 연결 관련 특성을 사용하는 경우 네트워크 부하 분산을 통해 패킷을 검사할 수 있습니다. 이에 반해 HTTP/HTTPS 부하 분산은 이와 같은 작업을 지원하지 않습니다.

인스턴스 그룹을 대상으로 하는 L4 네트워크 부하 분산기를 만듭니다.

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].

프로젝트의 모든 Google Compute Engine 전달 규칙의 목록을 출력합니다.

gcloud compute forwarding-rules list

(출력)

NAME     REGION       IP_ADDRESS     IP_PROTOCOL TARGET
nginx-lb us-central1 X.X.X.X        TCP         us-central1/targetPools/nginx-pool

그런 다음 브라우저에서 http://IP_ADDRESS/로 부하 분산기에 접속할 수 있습니다. IP_ADDRESS는 위 명령어를 실행하면 표시되는 주소입니다.

실습 진행 상황을 확인합니다. 아래의 진행 상황 확인을 클릭하여 웹 서버를 가리키는 L4 네트워크 부하 분산기를 만들었는지 확인합니다.

웹 서버를 가리키는 L4 네트워크 부하 분산기 만들기

HTTP/HTTPS 부하 분산기 만들기

HTTP/HTTPS 부하 분산은 인스턴스를 대상으로 하는 HTTP(S) 요청에 관한 글로벌 부하 분산을 제공합니다. 일부 URL을 여러 특정 인스턴스로 전달하고 다른 URL은 다른 인스턴스로 전달하도록 URL 규칙을 구성할 수 있습니다. 그룹의 용량이 충분하고 요청에 적합하면 요청이 항상 사용자에게 가장 가까운 인스턴스 그룹으로 라우팅됩니다. 가장 가까운 그룹에 용량이 충분하지 않으면 용량이 있는 가장 가까운 그룹으로 요청이 전송됩니다.

먼저 상태 확인을 만듭니다. 상태 확인을 통해 인스턴스가 HTTP/HTTPS 트래픽에 응답하는지 확인할 수 있습니다.

gcloud compute http-health-checks create http-basic-check

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME             HOST PORT REQUEST_PATH
http-basic-check      80   /

인스턴스 그룹에 관한 HTTP 서비스를 정의하고 관련 포트에 포트 이름을 매핑합니다. 이제 부하 분산 서비스가 이름이 지정된 포트로 트래픽을 전달합니다.

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

(출력)

Updated [https://www.googleapis.com/compute/v1/projects/...].

백엔드 서비스를 만듭니다.

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-basic-check --global

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          BACKENDS PROTOCOL
nginx-backend          HTTP

백엔드 서비스에 인스턴스 그룹을 추가합니다.

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-central1-a \
    --global

(출력)

Updated [https://www.googleapis.com/compute/v1/projects/...].

수신되는 모든 요청을 내 모든 인스턴스로 전달하는 기본 URL 맵을 만듭니다.

gcloud compute url-maps create web-map \
    --default-service nginx-backend

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME    DEFAULT_SERVICE
Web-map nginx-backend

대상 HTTP 프록시를 만들어 URL 맵에 요청을 라우팅합니다.

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].
NAME          URL_MAP
http-lb-proxy web-map

수신되는 요청을 처리하고 라우팅하는 전역 전달 규칙을 만듭니다. 전달 규칙은 명시된 IP 주소, IP 프로토콜 및 포트에 따라서 특정 대상 HTTP/HTTPS 프록시로 트래픽을 전송합니다. 전역 전달 규칙은 다중 포트를 지원하지 않습니다.

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

(출력)

Created [https://www.googleapis.com/compute/v1/projects/...].

전역 전달 규칙을 만든 후에 구성이 적용되는 데 몇 분 정도 걸릴 수 있습니다.

gcloud compute forwarding-rules list

(출력)

NAME              REGION IP_ADDRESS    IP_PROTOCOL TARGET
http-content-rule        X.X.X.X       TCP         http-lb-proxy
nginx-lb   us-central1  X.X.X.X       TCP         us-central1/....

전달 규칙에 사용할 http-content-rule의 IP_ADDRESS를 기록해 둡니다.

브라우저에서 http://IP_ADDRESS/로 연결할 수 있습니다. 3~5분정도 걸릴 수 있습니다. 연결되지 않으면 잠시 기다렸다가 브라우저를 새로고침하세요.

실습 진행 상황을 확인합니다. 아래의 진행 상황 확인을 클릭하여 L7 HTTP(S) 부하 분산기를 생성했는지 확인합니다.

L7 HTTP/HTTPS 부하 분산기 만들기

학습한 내용 테스트

퀴즈를 통해 Google Cloud Platform에 대해 얼마나 알고 있는지 테스트해 보세요. 필요한 경우 여러 개의 보기를 선택할 수 있습니다.

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

Copyright 2026 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하는 가장 좋은 방법은 시크릿 모드 또는 시크릿 브라우저 창을 사용하는 것입니다. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.