백엔드 버킷으로 Cloud CDN 설정

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

이 설정 가이드에서는 Cloud CDN이 사용 설정된 간단한 외부 HTTP(S) 부하 분산기를 만드는 방법을 설명합니다. 이 예시에서는 다음 리소스를 사용합니다.

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

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

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

부하 분산기 백엔드

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

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

시작하기 전에

Cloud Storage 버킷 만들기

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

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

콘솔

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.

    Storage 브라우저 열기

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

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

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

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_NAME

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

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

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

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

Cloud Storage 버킷을 공개로 설정

이 예시에서는 Cloud Storage 버킷을 공개적으로 읽을 수 있도록 설정합니다. 이 방법은 공개 콘텐츠에 권장되는 방법입니다. 이 설정을 사용하면 인터넷의 모든 사용자가 ACL을 제외한 객체와 메타데이터를 보고 나열할 수 있습니다. 공개 객체에 특정 Cloud Storage 버킷을 전용으로 지정하는 것이 좋습니다. 자세한 내용은 권장 버킷 아키텍처를 참조하세요.

다음은 Cloud Storage 버킷을 공개하는 방법의 대안입니다.

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

콘솔

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.

    Storage 브라우저 열기

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

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_NAME

외부 IP 주소 예약

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

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

콘솔

  1. Google Cloud Console에서 외부 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

외부 HTTP(S) 부하 분산기 만들기

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

콘솔

외부 HTTP(S) 부하 분산기 구성 프로세스 시작

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

    부하 분산 페이지로 이동

  2. HTTP(S) 부하 분산에서 구성 시작을 클릭합니다.
  3. 인터넷에서 내 VM으로를 선택한 후 계속을 클릭합니다.
  4. 이름http-lb로 설정한 후 다음 단계로 이동합니다.

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

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

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

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

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

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

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

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

프런트엔드 구성

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

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

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

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

구성 검토

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

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

전역 전달 규칙을 만든 후에 구성이 전역적으로 전파되는 데 몇 분 정도 걸릴 수 있습니다. 몇 분 후에 부하 분산기의 IP 주소로 트래픽을 보낼 수 있습니다.

콘솔

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

    부하 분산 페이지로 이동

  2. http-lb을 클릭하여 앞에서 만든 부하 분산기를 확장합니다.

    백엔드 섹션에서 백엔드 버킷이 정상인지 확인합니다. 백엔드 버킷 옆에 녹색 체크표시가 있어야 합니다. 그렇지 않을 경우에는 우선 페이지를 새로고침해 보세요. Cloud Console에서 백엔드가 정상임을 표시하는 데 몇 분 정도 걸릴 수 있습니다.

  3. Cloud Console에 백엔드 버킷이 정상으로 표시되면 http://IP_ADDRESS/static/us/three-cats.jpg로 이동하고 웹브라우저를 사용하여 부하 분산기를 테스트할 수 있습니다. IP_ADDRESS부하 분산기의 IP 주소로 바꿉니다. 브라우저에서 그래픽 파일을 표시하는 콘텐츠가 포함된 페이지를 렌더링해야 합니다.

gcloud

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

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

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

curl 요청을 보냅니다.

curl http://IP_ADDRESS/static/us/three-cats.jpg

Cloud CDN이 작동하는지 확인

연속해서 http://ip-address/static/us/three-cats.jpg 페이지를 여러 번 새로고침하면 캐시 적중이 여러 번 발생할 수 있습니다.

다음 로그 항목은 캐시 적중을 보여줍니다. Google Cloud Console에서 로그 뷰어를 열고 전달 규칙 이름으로 필터링하여 캐시 적중을 볼 수 있습니다.

로그 뷰어 열기

로그 뷰어

2020-06-08 16:41:30.078 PDT
GET
304
157 B
null
Chrome 83
http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg

CLIENT_IP_ADDRESS - "GET http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" 304 157 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" Expand all | Collapse all{ httpRequest: { cacheHit: true cacheLookup: true remoteIp: "CLIENT_IP_ADDRESS" requestMethod: "GET" requestSize: "577" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" responseSize: "157" status: 304 userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" } insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } logName: "projects/PROJECT_ID/logs/requests" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" resource: { labels: { backend_service_name: "" forwarding_rule_name: "http-lb-forwarding-rule" project_id: "PROJECT_ID" target_proxy_name: "http-lb-target-proxy" url_map_name: "http-lb" zone: "global" } type: "http_load_balancer" } severity: "INFO" spanId: "7b6537d3672e08e1" timestamp: "2020-06-08T23:41:30.078651Z" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" }

Cloud CDN 중지

콘솔

단일 백엔드 버킷에 Cloud CDN 중지

  1. Google Cloud Console에서 Cloud CDN 페이지로 이동합니다.

    Cloud CDN 페이지로 이동

  2. 원본 행의 오른쪽에서 메뉴 를 클릭한 후 수정을 선택합니다.
  3. Cloud CDN 사용을 중지할 백엔드 버킷의 체크박스를 선택 취소합니다.
  4. 업데이트를 클릭합니다.

원본의 모든 백엔드 버킷에 대한 Cloud CDN 삭제

  1. Cloud Console에서 Cloud CDN 페이지로 이동합니다.

    Cloud CDN 페이지로 이동

  2. 원본 행의 오른쪽에서 메뉴 를 클릭한 후 제거를 선택합니다.
  3. 삭제를 클릭하여 확인합니다.

gcloud

gcloud compute backend-buckets update BACKEND_BUCKET_NAME \
    --no-enable-cdn

Cloud CDN 사용을 중지해도 캐시가 무효화되거나 삭제되지 않습니다. Cloud CDN 사용을 중지했다가 다시 사용하면 대부분 또는 모든 캐시된 콘텐츠가 여전히 캐시될 수 있습니다. 캐시가 콘텐츠를 사용하지 못하게 하려면 해당 콘텐츠를 무효화해야 합니다 .

다음 단계

  • 캐시되는 콘텐츠에 대한 자세한 내용은 캐싱 개요를 참조하세요.
  • GKE에서 Cloud CDN을 사용하려면 인그레스 기능을 참조하세요.
  • Cloud CDN이 캐시에서 응답을 제공하고 있는지 확인하려면 로그 보기를 참조하세요.
  • 일반적인 문제 및 해결책에 대한 자세한 내용은 문제해결을 참조하세요.