URL 맵 사용

이 가이드에서는 Google Cloud URL 맵을 구성하는 방법을 설명합니다. URL 맵은 들어오는 HTTP(S) 요청을 특정 백엔드 서비스 또는 백엔드 버킷으로 라우팅하기 위한 규칙 집합입니다. 최소 URL 맵은 모든 수신 요청 경로(/*)와 일치합니다.

이 가이드를 수행하기 전에 URL 맵 개념을 숙지하세요.

URL 맵은 다음 Google Cloud 제품과 함께 사용됩니다.

전역 외부 애플리케이션 부하 분산기, 리전별 외부 애플리케이션 부하 분산기, 내부 애플리케이션 부하 분산기, Traffic Director와 함께 사용되는 URL 맵에서는 일부 고급 트래픽 관리 기능도 지원합니다. 자세한 내용은 URL 맵 개념: 고급 트래픽 관리를 참조하세요.

URL 맵 기본값

URL 맵에는 다음 표에 설명된 기본값 두 개가 있습니다.

기본 유형 설정 의미
URL 맵 기본값 gcloud compute url-maps create

--default-service | --default-backend-bucket

경로 일치자나 호스트 규칙이 수신 URL과 일치하지 않으면 지정된 기본 백엔드 서비스 또는 백엔드 버킷이 사용됩니다.
경로 일치자 기본값 gcloud compute url-maps add-path-matcher

--default-service | --default-backend-bucket

URL의 경로가 경로 일치자와 일치하지만 지정된 --path-rules와 일치하지 않으면 지정된 기본 백엔드 서비스나 백엔드 버킷이 사용됩니다.

호스트 규칙

호스트 규칙은 요청을 일치시킬 호스트 집합을 정의합니다.

호스트 규칙에서 호스트 이름은 정규화된 도메인 이름(FQDN)이어야 합니다. 호스트 이름은 IPv4 또는 IPv6 주소일 수 없습니다. 예를 들면 다음과 같습니다.

  • 사용 가능: example.com
  • 사용 가능: web.example.com
  • 사용 가능: *.example.com
  • 사용 불가능: 35.244.221.250

URL 맵 구성

URL 맵은 트래픽을 백엔드 서비스 또는 백엔드 버킷으로 전송할 수 있습니다. 리전별 외부 애플리케이션 부하 분산기 및 내부 애플리케이션 부하 분산기에서는 백엔드 버킷이 지원되지 않습니다.

콘솔

Google Cloud 콘솔을 사용하여 URL 맵을 추가하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 호스트 및 경로 규칙 추가를 클릭합니다.
  6. 호스트 필드, 경로 필드 또는 둘 모두를 입력하고 백엔드 서비스 또는 백엔드 버킷을 선택합니다.

    1. 정규화된 호스트 이름을 입력합니다(예: web.example.com).
    2. 경로를 입력합니다(예: /video).
    3. 호스트 및 경로 규칙 페이지의 백엔드 메뉴에서 사용 가능한 백엔드 서비스나 백엔드 버킷을 선택합니다.
  7. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 URL 맵을 추가하려면 url-maps create 명령어를 사용합니다.

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

리전별 외부 애플리케이션 부하 분산기와 내부 애플리케이션 부하 분산기의 경우 URL 맵을 만들 때 --region 플래그를 포함해야 합니다.

경로 일치자를 만들려면 gcloud compute url-maps add-path-matcher 명령어를 사용합니다.

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE or BUCKET"]

이 명령어를 사용하려면 일치하지 않는 요청을 전송할 수 있는 기본 백엔드 서비스나 백엔드 버킷이 필요합니다. --path-rules 플래그는 요청 경로와 백엔드 서비스 또는 버킷 간의 매핑을 정의합니다. 다음 예시에서는 요청 경로 /video//video/*video-service 백엔드 서비스로 라우팅합니다.

--path-rules="/video=video-service,/video/*=video-service"

호스트 규칙을 만들려면 gcloud compute url-maps add-host-rule 명령어를 사용합니다.

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=[HOSTS] --path-matcher-name=PATH_MATCHER

예를 들어 다음 --hosts 값은 www.example.comgoogle.com의 모든 하위 도메인과 일치합니다.

--hosts=[*.google.com,www.example.com]

URL 맵의 기본 서비스나 기본 버킷을 변경하려면 url-maps set-default-service 명령어를 사용합니다.

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
  | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

Terraform

전역 URL 맵을 만들려면 google_compute_url_map 리소스를 사용합니다.

# url map
resource "google_compute_url_map" "default" {
  name            = "http-lb"
  default_service = google_compute_backend_bucket.default.id
}

리전별 URL 맵을 만들려면 google_compute_region_url_map resource를 사용합니다.

resource "google_compute_region_url_map" "default" {
  name            = "regional-l7-xlb-map"
  region          = "us-west1"
  default_service = google_compute_region_backend_service.default.id
}

URL 맵 구성 유효성 검사

URL 맵을 배포하기 전에 URL 맵 구성의 유효성을 검사하여 맵이 의도한 대로 적절한 백엔드로 요청을 라우팅하는지 확인합니다. 이렇게 하려면 URL 맵 구성에 테스트를 추가하면 됩니다. 다양한 URL 맵 규칙을 실험하고 맵이 배포될 때 트래픽을 적절하게 라우팅하는지 확인하기 위해 필요한 만큼 테스트를 실행할 수 있습니다. 또한 향후 규칙 변경이 필요할 경우 실제로 새 구성을 적용하기 전에 변경사항을 테스트할 수 있습니다.

gcloud compute url-maps validate 명령어를 사용하여 URL 맵 구성의 유효성을 검사합니다. 이 명령어는 제공된 구성만 테스트합니다. 테스트 성공 여부와 관계없이 배포된 URL 맵에는 변경사항이 저장되지 않습니다. 이 동작은 다른 URL 맵 명령어(edit, import)와 달리 같은 테스트를 실행하지만 테스트에 통과하면 새 구성을 실제로 저장합니다. 배포된 URL 맵을 변경하지 않고 새 라우팅 구성을 테스트하려면 validate 명령어를 사용합니다.

validate 명령어를 사용하면 헤더 및 쿼리 매개변수를 기반으로 하는 라우팅, HTTP에서 HTTPS로 리디렉션, URL 재작성과 같은 고급 경로로 구성을 테스트할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 URL 맵 구성의 유효성을 검사할 수 없습니다. gcloud 또는 REST API를 대신 사용하세요.

gcloud

URL 맵 구성의 유효성을 검사하려면 gcloud compute url-maps validate 명령어를 사용합니다.

전역 외부 애플리케이션 부하 분산기의 경우:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --global

기본 애플리케이션 부하 분산기의 경우:

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE \
    --load-balancing-scheme=EXTERNAL \
    --global
  • PATH_TO_URL_MAP_CONFIG_FILE: 유효성을 검사할 수 있도록 URL 맵 구성이 포함된 파일의 경로로 바꿉니다.

기존 부하 분산기의 URL 맵 변경사항의 유효성 검사

기존 부하 분산기의 URL 맵을 변경해야 하는 경우 이러한 구성 변경사항을 실제로 적용하기 전에 테스트할 수 있습니다.

  1. 부하 분산기의 기존 URL 맵을 YAML 파일로 내보냅니다.

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. 새 구성으로 YAML 파일을 수정합니다. 예를 들어 외부 애플리케이션 부하 분산기를 수정하고 경로가 /video인 모든 요청을 video-backend-service라는 새 백엔드 서비스로 전송하려면 다음과 같이 URL 맵 구성에 테스트를 추가할 수 있습니다.

    단일 기본 web-backend-service가 있는 기존 URL 맵 구성:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     

    기본 web-backend-service 및 새로운 video-backend-service 백엔드 서비스 모두에 대한 경로 일치자와 테스트가 추가되어 수정된 URL 맵 구성입니다.

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     hostRules:
     - hosts:
       - '*'
       pathMatcher: pathmap
     pathMatchers:
     - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
       name: pathmap
       pathRules:
       - paths:
         - /video
         - /video/*
         service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
     tests:
     - description: Test routing to existing web service
       host: foobar
       path: /
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     - description: Test routing to new video service
       host: foobar
       path: /video
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
    
  3. 새 구성의 유효성을 검사합니다.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    모든 테스트를 통과하면 다음과 같은 성공 메시지가 표시됩니다.

    Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME]
    

    테스트가 실패하면 오류 메시지가 표시됩니다. URL 맵 구성 파일에 필요한 수정 사항을 작성하고 다시 유효성 검사를 시도합니다.

    Error: Invalid value for field 'urlMap.tests': ''.
    Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
    
  4. 새 구성이 작동하고 기존 설정에 영향을 미치지 않는다는 것을 확인했다면 URL 맵으로 가져올 수 있습니다. 이 단계에서는 새 구성과 함께 URL 맵도 배포합니다.

    gcloud compute url-maps import URL_MAP_NAME \
       --source PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    

URL 맵에 테스트 추가

URL 맵에 구성 테스트를 추가하여 의도대로 URL 맵이 백엔드 서비스 또는 백엔드 버킷으로 요청을 라우팅할 수 있습니다.

참고: 이 섹션에서는 이미 배포된 URL 맵에 테스트를 추가하는 방법을 설명합니다. 실제로 맵을 배포하지 않고 URL 맵의 새 변경사항을 테스트하려면 URL 맵 구성 유효성 검사를 참조하세요.

URL 맵을 수정하면 테스트가 실행되고 테스트에 실패하면 오류 메시지가 표시됩니다.

Error: Invalid value for field 'urlMap.tests': ''.
Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.

URL 맵에 테스트를 추가하는 것은 선택사항입니다.

콘솔

Google Cloud 콘솔에서 테스트를 실행하려면 다음 안내를 따르세요.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 라우팅 규칙을 클릭합니다. 기본 애플리케이션 부하 분산기의 경우 호스트 및 경로 규칙입니다.
  5. 구성 테스트 표시를 클릭합니다.
  6. 구성 테스트 추가를 클릭합니다. 다음 테스트 URL 및 백엔드를 추가합니다.
    • 테스트 호스트 및 경로 1 example.com백엔드 www-service.
    • 테스트 호스트 및 경로 2 example.net백엔드 www-service.
    • 테스트 호스트 및 경로 3 example.net/web백엔드 www-service.
    • 테스트 호스트 및 경로 4 example.com/videos백엔드 video-service.
    • 테스트 호스트 및 경로 5 example.com/videos/browse백엔드 video-service.
    • 테스트 호스트 및 경로 6 example.net/static백엔드 static-service.
    • 테스트 호스트 및 경로 7 example.net/static/images백엔드 static-service.
  7. 라우팅 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다. 기본 애플리케이션 부하 분산기의 경우 호스트 및 경로 규칙 옆에 있는 파란색 체크표시를 확인합니다.

gcloud

Google Cloud CLI를 사용하여 URL 맵에 테스트를 추가하려면 gcloud compute url-maps edit 명령어를 실행합니다.

gcloud compute url-maps edit URL_MAP_NAME

이 명령어는 텍스트 편집기를 실행합니다. 외부 애플리케이션 부하 분산기의 경우 테스트 형식은 다음과 같아야 합니다.

  tests:
    - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.com
      path: /videos
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.com
      path: /videos/browse
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.net
      path: /web
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
      path: /static
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
    - host: example.net
      path: /static/images
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service

호스트 규칙에 호스트를 지정하지 않으면 모든 호스트의 URL(예: example.com 및 example.net)이 일치할 수 있습니다. 호스트 규칙이 있는 경우 example.com 및 example.net과 모두 일치하는 규칙을 만들어야 합니다.

URL 맵 나열

콘솔

Google Cloud 콘솔에서 모든 URL 맵을 나열할 수 없습니다.

gcloud

Google Cloud CLI를 사용하여 URL 맵 목록을 표시하려면 url-maps list 명령어를 실행합니다.

gcloud compute url-maps list

URL 맵에 관한 정보 가져오기

콘솔

URL 맵에 대한 정보를 가져오려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 호스트 및 경로 규칙을 확인합니다.

gcloud

Google Cloud CLI를 사용하여 단일 URL 맵에 대한 정보를 가져오려면 url-maps describe 명령어를 실행합니다.

gcloud compute url-maps describe URL_MAP_NAME

URL 맵 삭제

URL 맵은 URL 맵을 참조하는 모든 대상 프록시를 삭제한 후에만 삭제할 수 있습니다. 자세한 내용은 대상 프록시 삭제를 참조하세요.

콘솔

URL 맵을 삭제하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 부하 분산기 세부정보 페이지에서 호스트 및 경로 규칙을 확인합니다.
  5. URL 맵 오른쪽의 'X'를 클릭하여 삭제합니다. URL 맵이 사라집니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 URL 맵을 삭제하려면 url-maps delete 명령어를 실행합니다. URL 맵을 삭제하려면 먼저 URL 맵을 참조하는 모든 대상 HTTP 프록시를 삭제해야 합니다.

gcloud compute url-maps delete URL_MAP_NAME [--quiet]

경로 일치자 삭제

콘솔

경로 일치자를 삭제하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 기존 URL 맵의 경로 필드에서 경로 일치자 이름의 'x'를 클릭합니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

경로 일치자를 삭제하려면 gcloud compute url-maps remove-path-matcher 명령어를 실행합니다.

gcloud compute url-maps remove-path-matcher URL_MAP_NAME \
   [--path-matcher-name PATH_MATCHER]

호스트 규칙 삭제

콘솔

호스트 규칙을 삭제하려면 다음 단계를 수행합니다.

  1. 호스트 및 경로 규칙 페이지가 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.

    부하 분산으로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 기존 URL 맵의 호스트 필드에서 호스트 이름의 'x'를 클릭합니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

URL 맵에서 호스트 규칙을 삭제하려면 gcloud compute url-maps remove-host-rule 명령어를 실행합니다.

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

예를 들어 my-map이라는 URL 맵에서 google.com 호스트를 포함하는 호스트 규칙을 삭제하려면 다음 명령어를 실행합니다.

gcloud compute url-maps remove-host-rule my-map --host google.com

트래픽 관리 가이드

모든 제품에서 모든 URL 맵 기능이 제공되는 것은 아닙니다. URL 맵은 기본 애플리케이션 부하 분산기에서 지원되지 않는 여러 고급 트래픽 관리 기능을 지원하기 위해 부하 분산기와 함께 사용됩니다.

다음 표를 사용해서 관리 작업의 URL 맵 기능에 대해 알아보세요.

제품 URL 맵 기능 및 트래픽 관리 가이드
전역 외부 애플리케이션 부하 분산기 부하 분산기의 기능: 라우팅 및 트래픽 관리

트래픽 관리 개요

트래픽 관리 설정

URL 리디렉션 설정

HTTP에서 HTTPS로 리디렉션 설정

호스트 이름 및 경로

요청 라우팅

쿠키

기본 애플리케이션 부하 분산기 부하 분산기의 기능: 라우팅 및 트래픽 관리

트래픽 관리 개요

URL 리디렉션 설정

HTTP에서 HTTPS로 리디렉션 설정

호스트 이름 및 경로

헤더 및 쿼리 매개변수 기반 라우팅

리전 외부 애플리케이션 부하 분산기 부하 분산기의 기능: 라우팅 및 트래픽 관리

트래픽 관리 개요

트래픽 관리 설정

URL 리디렉션 설정

HTTP에서 HTTPS로 리디렉션 설정

호스트 이름 및 경로

요청 라우팅

쿠키

내부 애플리케이션 부하 분산기 부하 분산기의 기능: 라우팅 및 트래픽 관리

트래픽 관리 개요

트래픽 관리 설정

URL 리디렉션 설정

HTTP에서 HTTPS로 리디렉션 설정

쿠키

호스트 이름 및 경로

Traffic Director Traffic Director의 기능: 라우팅 및 트래픽 관리

고급 트래픽 관리 개요

고급 트래픽 관리 구성

API 및 gcloud CLI 참조

Google Cloud 콘솔 외에도 API 및 gcloud CLI를 사용해서 URL 맵을 만들 수 있습니다.

API

REST API를 통해 URL 맵으로 작업할 때 사용할 수 있는 속성 및 메서드에 대한 설명은 다음을 참조하세요.

제품 API 문서
외부 애플리케이션 부하 분산기 urlMaps
내부 애플리케이션 부하 분산기 regionUrlMaps
Traffic Director urlMaps

gcloud CLI

Google Cloud CLI의 Google Cloud CLI는 다음을 참조하세요.

고급 트래픽 관리의 경우는 YAML 파일을 사용하고 gcloud compute url-maps import 명령어로 가져오세요.

다음 단계