백엔드 버킷 설정

Cloud CDN은 전역 외부 애플리케이션 부하 분산기 또는 기존 애플리케이션 부하 분산기를 활용하여 라우팅, 상태 점검, Anycast IP 지원을 제공합니다. 전역 외부 애플리케이션 부하 분산기에는 Compute Engine VM 인스턴스, Google Kubernetes Engine Pod, Cloud Storage 버킷 또는 Google Cloud외부의 외부 백엔드와 같은 여러 백엔드 인스턴스 유형이 있을 수 있으므로 백엔드(원본)를 선택하여 Cloud CDN을 사용 설정할 수 있습니다.

이 설정 가이드에서는 Cloud CDN이 사용 설정된 외부 애플리케이션 부하 분산기를 만드는 방법을 설명합니다. 이 예시에서는 다음 리소스를 사용합니다.

  • 기본 가상 프라이빗 클라우드(VPC) 네트워크
  • 기본 URL 맵
  • 예약된 외부 IP 주소
  • 백엔드로서의 Cloud Storage 버킷
  • Cloud Storage 버킷의 래퍼 역할을 하는 단일 부하 분산기 백엔드 버킷

백엔드 버킷은 다음을 지원합니다.

Cloud CDN 작동 방식은 Cloud CDN 개요를 참조하세요.

기본적으로 Cloud Storage는 Cloud CDN에서 사용하는 동일한 캐시를 사용합니다. 백엔드 버킷에서 Cloud CDN을 사용 설정하면 콘텐츠에 Cloud CDN 제어를 사용할 수 있습니다. 예를 들어 Cloud CDN 제어에는 캐시 모드, 서명된 URL, 무효화가 포함됩니다. Cloud CDN을 사용하면 대용량 콘텐츠(10MB 초과)를 캐시할 수도 있습니다. 백엔드 버킷에서 Cloud CDN을 사용 설정하지 않으면 Cloud Storage 메타데이터에서 설정한 대로 더 작은 콘텐츠의 캐싱을 제어하는 데 원본 Cache-Control 헤더만 사용할 수 있습니다.

부하 분산기 백엔드

외부 애플리케이션 부하 분산기는 URL 맵을 사용하여 지정된 URL에서 지정된 서비스로 트래픽을 전달합니다. 다음 표에는 콘텐츠와 서비스를 호스팅할 수 있는 백엔드 유형이 요약되어 있습니다.

부하 분산기 백엔드 구성 일반적인 미디어 유형 백엔드 유형
백엔드 서비스 동적(예: 데이터)
  • 비관리형 인스턴스 그룹
  • 관리형 인스턴스 그룹
  • Google Cloud내부의 네트워크 엔드포인트 그룹
  • Google Cloud외부의 네트워크 엔드포인트 그룹
백엔드 버킷 정적(예: 이미지)
  • Cloud Storage 버킷(이 페이지에서 설명)

시작하기 전에

콘솔

  1. Google Cloud 콘솔에서 페이지로 이동합니다.

    Google Cloud 홈페이지로 이동

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

gcloud

     gcloud config set project PROJECT_ID
   

PROJECT_ID를 Google Cloud프로젝트 ID로 바꿉니다.

Terraform

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
   

(선택사항) BYOIP 주소 사용

사용자 IP 사용(BYOIP)을 사용하면 사용자의 공개 주소를Google Cloud 로 가져와 Google Cloud 리소스와 함께 주소를 사용할 수 있습니다. 예를 들어 사용자의 IPv4 주소를 가져오는 경우 부하 분산기를 구성할 때 전달 규칙에 하나를 할당할 수 있습니다. 이 문서의 안내에 따라 외부 애플리케이션 부하 분산기를 만드는 경우 BYOIP 주소를 IP 주소로 제공합니다.

BYOIP 사용에 대한 자세한 내용은 사용자 IP 주소 사용을 참조하세요.

Cloud Storage 버킷 만들기

부하 분산기에 아직 할당되지 않은 기존 Cloud Storage 버킷이 있는 경우 다음 단계로 건너뛸 수 있습니다.

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

콘솔

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지를 엽니다.

    버킷 페이지 열기

  2. 버킷 만들기를 클릭합니다.
  3. 다음 표의 필드 값을 지정하고 다른 모든 필드를 기본값으로 둡니다.

    속성 값(값 입력 또는 지정된 옵션 선택)
    이름 각 버킷에 대해 전역적으로 고유한 이름을 입력합니다. 입력한 이름이 고유하지 않은 경우 다른 이름을 입력하라는 메시지가 표시됩니다.
    위치 유형 멀티 리전
    위치 us(미국의 여러 리전)와 같은 리전을 선택합니다.
    기본 스토리지 클래스 스탠더드
    액세스 제어 균일한 액세스 제어
  4. 만들기를 클릭합니다.

  5. 다음 단계를 위해 새로 생성된 Cloud Storage 버킷의 이름을 확인합니다.

gcloud

gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access

Terraform

버킷을 만들려면 google_storage_bucket 리소스를 사용합니다.

# Cloud Storage bucket
resource "random_id" "bucket_prefix" {
  byte_length = 8
}

resource "google_storage_bucket" "default" {
  name                        = "${random_id.bucket_prefix.hex}-my-bucket"
  location                    = "us-east1"
  uniform_bucket_level_access = true
  storage_class               = "STANDARD"
  // delete bucket and contents on destroy.
  force_destroy = true
  // Assign specialty files
  website {
    main_page_suffix = "index.html"
    not_found_page   = "404.html"
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

Cloud Storage 버킷으로 그래픽 파일 복사

설정을 테스트하려면 공개 Cloud Storage 버킷의 그래픽 파일을 사용자의 Cloud Storage 버킷으로 복사합니다.

gcloud

Cloud Shell에서 다음 명령어를 실행합니다. BUCKET_NAME을 고유한 Cloud Storage 버킷 이름으로 바꿉니다.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/

Terraform

객체를 복사하려면 gcloud storage cp 명령어로 local-exec Provisioner를 사용합니다.

resource "null_resource" "upload_image" {
  provisioner "local-exec" {
    command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/ --recursive"
  }
}

또는 객체를 업로드하려면 google_storage_bucket_object 리소스를 사용합니다.

# image object for testing, try to access http://<your_lb_ip_address>/test.jpg
resource "google_storage_bucket_object" "test_image" {
  name = "test-object"
  # Uncomment and add valid path to an object.
  #  source       = "/path/to/an/object"
  #  content_type = "image/jpeg"

  # Delete after uncommenting above source and content_type attributes
  content      = "Data as string to be uploaded"
  content_type = "text/plain"

  bucket = google_storage_bucket.default.name
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

Google Cloud 콘솔에서 새로고침을 클릭하여 그래픽 파일이 복사되었는지 확인합니다.

Cloud Storage 버킷을 공개로 설정

이 예시에서는 Cloud Storage 버킷을 공개적으로 읽을 수 있도록 설정합니다. 이 방법은 공개 콘텐츠에 권장되는 방법입니다. 이 설정을 사용하면 인터넷의 모든 사용자가 ACL을 제외한 객체와 메타데이터를 보고 나열할 수 있습니다. 의도하지 않은 데이터 노출 위험을 줄이려면 일반적으로 공개 객체에 특정 Cloud Storage 버킷을 할당해야 합니다.

다음은 전체 Cloud Storage 버킷을 공개하는 대신 사용할 수 있는 방법입니다.

다음 절차는 모든 사용자가 Cloud Storage 버킷의 객체를 볼 수 있는 액세스 권한을 부여하여 버킷을 공개적으로 읽을 수 있도록 합니다.

콘솔

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지를 엽니다.

    버킷 페이지 열기

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

gcloud

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer

Terraform

Cloud Storage 버킷을 공개로 설정하려면 google_storage_bucket_iam_member 리소스를 사용합니다.

# make bucket public
resource "google_storage_bucket_iam_member" "default" {
  bucket = google_storage_bucket.default.name
  role   = "roles/storage.objectViewer"
  member = "allUsers"
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

외부 IP 주소 예약

이제 Cloud Storage 버킷이 준비되어 실행 중이므로 고객이 부하 분산기에 도달하기 위해 사용하는 전역 고정 외부 IP 주소를 설정합니다.

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

콘솔

  1. Google Cloud 콘솔에서 외부 IP 주소 페이지로 이동합니다.

    외부 IP 주소 페이지로 이동

  2. IPv4 주소를 예약하려면 고정 주소 예약을 클릭합니다.
  3. example-ip이름을 할당합니다.
  4. 네트워크 서비스 등급프리미엄으로 설정합니다.
  5. IP 버전IPv4로 설정합니다.
  6. 유형전역으로 설정합니다.
  7. 예약을 클릭합니다.

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

Terraform

IP 주소를 예약하려면 google_compute_global_address 리소스를 사용합니다.

# reserve IP address
resource "google_compute_global_address" "default" {
  name = "example-ip"
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

외부 애플리케이션 부하 분산기 만들기

이 절차에서는 Cloud Storage 버킷의 래퍼 역할을 하는 부하 분산기의 백엔드 버킷을 만듭니다. 백엔드 버킷을 만들거나 수정할 때 Cloud CDN을 사용 설정할 수 있습니다.

콘솔

외부 애플리케이션 부하 분산기 구성 프로세스 시작

  1. Google Cloud 콘솔에서 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. HTTP(S) 부하 분산에서 구성 시작을 클릭합니다.
  3. 인터넷 트래픽을 VM으로 분산을 선택하고 계속을 클릭합니다.
  4. 고급 트래픽 관리에서 다음 중 하나를 선택합니다.
    • 기존 애플리케이션 부하 분산기의 경우 기존 HTTP(S) 부하 분산기를 선택합니다.
    • 전역 외부 애플리케이션 부하 분산기의 경우 고급 트래픽 관리를 사용하는 HTTP(S) 부하 분산기를 선택합니다.
  5. 이름http-lb로 설정한 후 다음 단계로 이동합니다.

백엔드 구성 및 Cloud CDN 사용 설정

Cloud Storage 버킷의 래퍼 역할을 하는 부하 분산기의 백엔드 버킷을 만듭니다. 백엔드 버킷을 만들거나 수정할 때 Cloud CDN을 사용 설정할 수 있습니다.

  1. 백엔드 구성을 클릭합니다.
  2. 백엔드 서비스 및 백엔드 버킷에서 백엔드 서비스 및 백엔드 버킷 만들기 또는 선택을 클릭한 후 백엔드 버킷 > 백엔드 버킷 만들기를 클릭합니다.
  3. 이름cat-backend-bucket로 설정합니다. 이 이름은 전역적으로 고유할 필요는 없으며 실제 Cloud Storage 버킷의 이름과 다를 수 있습니다.
  4. Cloud Storage 버킷에서 찾아보기를 클릭합니다.
  5. 만든 전역적으로 고유한 Cloud Storage BUCKET_NAME을 선택한 후 선택을 클릭합니다.
  6. Cloud CDN 사용 설정을 클릭합니다.

  7. (선택사항) 캐시 모드TTL 설정을 수정합니다.

  8. 만들기를 클릭합니다.

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

호스트 규칙 및 경로 일치자는 외부 애플리케이션 부하 분산기의 URL 맵 구성 구성요소입니다.

호스트 및 경로 규칙에서 기본 설정을 유지할 수 있습니다.

맞춤설정 예시는 부하 분산기에 백엔드 버킷 추가를 참조하세요.

호스트 규칙 및 경로 일치자에 대한 자세한 내용은 URL 맵 개요를 참조하세요.

프런트엔드 구성

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

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