백엔드 버킷으로 부하 분산기 설정

백엔드 버킷을 사용하면 HTTP(S) 부하 분산과 함께 Google Cloud Storage 버킷을 사용할 수 있습니다.

Cloud Storage 버킷을 부하 분산기 백엔드로 사용

외부 HTTP(S) 부하 분산기는 URL 맵을 사용하여 지정된 URL에서 백엔드 서비스 또는 백엔드 버킷으로 트래픽을 전달합니다. 일반적인 사용 사례는 다음과 같습니다.

  • 데이터와 같은 동적 콘텐츠에 대한 요청을 백엔드 서비스로 보냅니다.
  • 이미지와 같은 정적 콘텐츠에 대한 요청을 백엔드 버킷으로 보냅니다.

다음 다이어그램에서 부하 분산기는 /static/eu/의 경로를 사용하여 europe-north 리전에 있는 Cloud Storage 버킷으로 트래픽을 전송합니다. 다른 모든 요청은 us-east 리전에 있는 Cloud Storage 버킷으로 이동합니다.

Cloud Storage로 트래픽 분산(클릭하여 확대)
Cloud Storage로 트래픽 분산(클릭하여 확대)

이 문서에서는 정적 콘텐츠 요청을 Cloud Storage 버킷으로 라우팅하기 위해 외부 HTTP(S) 부하 분산기를 만드는 방법을 보여줍니다. 백엔드 버킷으로 부하 분산기를 구성하면 /static/eu로 시작하는 URL 경로 요청은 europe-north Cloud Storage 버킷으로 전송되고 다른 모든 요청은 us-east Cloud Storage 버킷으로 전송됩니다.

시작하기 전에

설정이 기본 요건을 충족하는지 확인합니다.

기본 프로젝트 설정

  1. gcloud 또는 gsutil 유틸리티를 사용하는 경우 빠른 시작: gsutil 도구 사용 문서의 안내에 따라 두 유틸리티 모두 설치할 수 있습니다.
  2. 기본 프로젝트를 설정합니다.

    Console

    a. Google Cloud Console의 홈페이지로 이동합니다.
    Google Cloud 홈페이지로 이동

    b. Google Cloud 오른쪽의 풀다운 메뉴에서 프로젝트를 선택합니다.

    gcloud 또는 gsutil

     gcloud config set project [PROJECT_ID]
    

    또는

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID] - 이 가이드에 사용할 프로젝트입니다.

권한

이 가이드를 따르려면 프로젝트에 Cloud Storage 버킷과 부하 분산기를 만들어야 합니다. 이를 위해서는 프로젝트 소유자 또는 편집자이거나, 다음 Compute Engine IAM 역할을 보유해야 합니다.

작업 필요한 역할
부하 분산기 구성요소 만들기 네트워크 관리자
Cloud Storage 버킷 만들기 스토리지 객체 관리자

자세한 내용은 다음 가이드를 참조하세요.

Cloud Storage 버킷 및 콘텐츠 준비

Cloud Storage 버킷을 준비하는 프로세스는 다음과 같습니다.

  • 버킷을 만듭니다.
  • 버킷에 콘텐츠를 복사합니다.
  • 버킷에 공개 액세스를 제공합니다.

Cloud Storage 버킷 만들기

기존 Cloud Storage 버킷이 있는 경우 다음 단계로 건너뛸 수 있습니다.

HTTP(S) 부하 분산의 백엔드로 사용할 버킷을 만들 때 여러 Google Cloud 리전에 객체를 자동으로 복제하는 멀티 리전 버킷을 선택하는 것이 좋습니다. 이렇게 하면 콘텐츠의 가용성이 향상되고 애플리케이션 전체의 내결함성이 개선됩니다.

Console

  1. Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 생성을 클릭합니다.
  3. 다음 필드의 값을 지정하고 다른 모든 필드는 기본값으로 둡니다.

    속성 값(값 입력 또는 지정된 옵션 선택)
    이름 각 버킷에 대해 전역적으로 고유한 이름을 입력합니다. 입력한 이름이 고유하지 않은 경우 다른 이름을 입력하라는 메시지가 표시됩니다.
    위치 유형 이 예시에서는 리전을 선택합니다. 프로덕션 배포의 경우 멀티 리전 버킷을 사용하는 것이 좋습니다.
    위치 한 버킷에는 us-east1을 선택하고
    다른 버킷에는 europe-north1을 선택합니다.
    기본 스토리지 클래스 스탠더드
    액세스 제어 균일한 액세스 제어
  4. 만들기를 클릭합니다.

  5. 다음 단계를 위해 새로 생성된 Cloud Storage 버킷의 이름은 bucket-1-namebucket-2-name이라고 합니다.

gsutil

gsutil mb -p project-id -c standard -l us-east1 -b on gs://bucket-1-name
gsutil mb -p project-id -c standard -l europe-north1 -b on gs://bucket-2-name

Cloud Storage 버킷에 그래픽 파일 복사

설정을 테스트할 수 있도록 그래픽 파일을 공개 Cloud Storage 버킷에서 자체 Cloud Storage 버킷으로 복사합니다.

  1. Cloud Shell에서 다음 명령어를 실행하여 버킷 이름 변수를 Cloud Storage 버킷 이름으로 바꿉니다.

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://bucket-1-name/static/us/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://bucket-2-name/static/eu/
    
  2. Cloud Console에서 버킷 새로고침을 클릭하여 그래픽 파일이 복사되었는지 확인합니다.

Cloud Storage 버킷을 공개로 설정

Cloud Storage 버킷을 공개적으로 읽을 수 있도록 설정합니다. 이 설정을 사용하면 인터넷의 모든 사용자가 ACL을 제외한 객체와 메타데이터를 볼 수 있습니다. 인터넷의 모든 사용자가 버킷의 객체를 나열할 수도 있으므로, 공개 버킷에 민감한 정보를 포함하지 마세요.

민감한 정보가 실수로 노출되는 가능성을 줄이려면 공개 객체와 민감한 정보를 동일한 버킷에 저장하지 마세요. 자세한 내용은 권장 버킷 아키텍처를 참조하세요.

Console

모든 사용자에게 버킷의 객체를 볼 수 있는 액세스 권한을 부여합니다. 각 버킷에 이 절차를 반복합니다.

  1. Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷으로 이동하여 권한 탭을 클릭합니다.
  3. 구성원 추가를 클릭하여 선택합니다.
  4. 새 구성원allUsers를 입력합니다.
  5. 역할의 경우 스토리지 > 스토리지 객체 뷰어를 선택합니다.
  6. 저장을 클릭합니다.

gsutil

gsutil iam ch allUsers:objectViewer gs://bucket-1-name
gsutil iam ch allUsers:objectViewer gs://bucket-2-name

외부 IP 주소 예약

버킷이 준비되어 실행 중이므로 고객이 부하 분산기에 연결하는 데 사용하는 전역 고정 외부 IP 주소를 설정합니다.

정적 외부 IP 주소는 도메인을 가리키는 단일 주소를 제공하므로 이 단계는 선택사항이지만 권장됩니다.

Console

  1. Google Cloud Console의 외부 IP 주소 페이지로 이동합니다.
    외부 IP 주소 페이지로 이동
  2. 고정 주소 예약을 클릭하여 IPv4 주소를 예약합니다.
  3. example-ip이름을 할당합니다.
  4. 네트워크 등급을 프리미엄으로 설정합니다.
  5. IP 버전IPv4로 설정합니다.
  6. 유형전역으로 설정합니다.
  7. 예약을 클릭합니다.
  8. 유형전역으로 설정되어 있는지 확인합니다.
  9. 예약을 클릭합니다.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

예약된 IPv4 주소를 확인합니다.

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

백엔드 버킷으로 HTTP 부하 분산기 만들기

HTTPS 부하 분산기를 만들려면 부하 분산기의 프런트엔드에 SSL 인증서 리소스를 추가해야 합니다. 자세한 내용은 SSL 인증서 개요를 참조하세요.

  1. Google Cloud Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. HTTP(S) 부하 분산에서 구성 시작을 클릭합니다.
  3. 인터넷에서 내 VM으로를 선택합니다.
  4. 이름http-lb로 설정합니다.

백엔드 구성

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 서비스 및 백엔드 버킷에서 백엔드 서비스 및 백엔드 버킷 만들기 또는 선택을 클릭하고 백엔드 버킷 > 백엔드 버킷 만들기를 클릭합니다.
  3. 이름backend-bucket1로 설정합니다.
  4. Cloud Storage 버킷에서 찾아보기를 클릭합니다.
  5. bucket-1-name을 선택하고 선택을 클릭합니다.
  6. 만들기를 클릭합니다.

이 단계를 반복하여 backend-bucket2를 만들고 bucket-2-name으로 이동합니다.

호스트 규칙 및 경로 일치자 구성

호스트 규칙 및 경로 일치자는 외부 HTTP(S) 부하 분산기의 URL 맵 구성요소입니다.

  1. 호스트 및 경로 규칙을 클릭합니다.
  2. backend-bucket1의 경우 기본 호스트 및 경로를 변경할 수 없습니다. 즉, 일치하지 않는 모든 요청은 backend-bucket1로 이동합니다.
  3. backend-bucket2의 경우 호스트 필드에 *를 입력합니다.
  4. backend-bucket2의 경우 경로 필드에 /static/eu/*를 입력합니다.

    호스트 경로 백엔드
    일치하지 않는 모든 URL(기본값) 일치하지 않는 모든 URL(기본값) backend-bucket1
    * /static/eu/* backend-bucket2

프런트엔드 구성

  1. 프런트엔드 구성을 클릭합니다.
  2. 다음 옵션이 이러한 값으로 구성되었는지 확인합니다.

    속성 값(값 입력 또는 지정된 옵션 선택)
    프로토콜 HTTP
    네트워크 서비스 계층 프리미엄
    IP 버전 IPv4
    IP 주소 example-ip
    포트 80

    HTTP 부하 분산기 대신 HTTPS 부하 분산기를 만들려면 SSL 인증서(gcloud compute ssl-certificates list)가 있어야 하며 다음과 같이 필드를 작성해야 합니다.

    속성 값(값 입력 또는 지정된 옵션 선택)
    프로토콜 HTTP(S)
    네트워크 서비스 계층 프리미엄
    IP 버전 IPv4
    IP 주소 example-ip
    포트 443
    인증서 선택 또는 새 인증서 만들기
  3. 완료를 클릭합니다.

구성 검토

  1. 검토 및 완료를 클릭합니다.
  2. 백엔드 버킷, 호스트 및 경로 규칙프런트엔드를 검토합니다.
  3. 만들기를 클릭합니다.
  4. 부하 분산기가 생성될 때까지 기다립니다.
  5. 부하 분산기의 이름을 클릭합니다(http-lb).
  6. 다음 작업을 위해 부하 분산기의 IP 주소를 기록합니다. 이를 ip-address라고 합니다.

백엔드 버킷으로 트래픽 전송

부하 분산기를 구성했으므로 부하 분산기의 IP 주소로 트래픽을 전송할 수 있습니다.

Console

  1. Google Cloud Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. http-lb을 클릭하여 앞에서 만든 부하 분산기를 확장합니다.
  3. 백엔드 섹션에서 백엔드 버킷이 정상인지 확인합니다. 백엔드 버킷 옆에 녹색 체크표시가 있어야 합니다. 그렇지 않을 경우에는 우선 페이지를 새로고침해 보세요. Cloud Console이 백엔드가 정상임을 표시하는 데 몇 분 정도 걸릴 수 있습니다.
  4. Cloud Console에 백엔드 버킷이 정상으로 표시되면 https://ip-address/static/eu/2-dogs.jpg 및 https://ip-address/static/us/3-cats.jpg로 이동하여 웹브라우저를 사용하여 부하 분산기를 테스트할 수 있습니다. 여기서 ip-address부하 분산기의 IP 주소입니다. 브라우저는 그래픽 파일이 표시된 페이지를 렌더링해야 합니다.

    • http://ip-address/static/eu/two-dogs.jpg
    • http://ip-address/static/us/three-cats.jpg

gcloud

curl 명령어를 사용하여 URL의 응답을 테스트합니다. ip-address부하 분산기의 IPv4 주소로 바꿉니다.

curl http://ip-address/static/eu/two-dogs.jpg
curl http://ip-address/static/us/three-cats.jpg

제한사항

  • 백엔드 버킷은 외부 HTTP(S) 부하 분산기에서만 지원됩니다.
  • 백엔드 버킷은 IAP(Identity-Aware Proxy)에서 지원되지 않습니다.

다음 단계