이 가이드에서는 Google Cloud URL 맵을 구성하는 방법을 설명합니다. URL 맵은 들어오는 HTTP(S) 요청을 특정 백엔드 서비스 또는 백엔드 버킷으로 라우팅하기 위한 규칙 집합입니다.
최소 URL 맵은 모든 수신 요청 경로(/*
)와 일치합니다.
이 가이드를 수행하기 전에 URL 맵 개념을 숙지하세요.
URL 맵은 다음 Google Cloud 제품과 함께 사용됩니다.
전역 외부 애플리케이션 부하 분산기, 리전별 외부 애플리케이션 부하 분산기, 내부 애플리케이션 부하 분산기, Traffic Director와 함께 사용되는 URL 맵에서는 일부 고급 트래픽 관리 기능도 지원합니다. 자세한 내용은 URL 맵 개념: 고급 트래픽 관리를 참조하세요.
URL 맵 기본값
URL 맵에는 다음 표에 설명된 기본값 두 개가 있습니다.
기본 유형 | 설정 | 의미 |
---|---|---|
URL 맵 기본값 | gcloud compute url-maps create
|
경로 일치자나 호스트 규칙이 수신 URL과 일치하지 않으면 지정된 기본 백엔드 서비스 또는 백엔드 버킷이 사용됩니다. |
경로 일치자 기본값 | gcloud compute url-maps add-path-matcher
|
URL의 경로가 경로 일치자와 일치하지만 지정된 --path-rules 와 일치하지 않으면 지정된 기본 백엔드 서비스나 백엔드 버킷이 사용됩니다. |
호스트 규칙
호스트 규칙은 요청을 일치시킬 호스트 집합을 정의합니다.
호스트 규칙에서 호스트 이름은 정규화된 도메인 이름(FQDN)이어야 합니다. 호스트 이름은 IPv4 또는 IPv6 주소일 수 없습니다. 예를 들면 다음과 같습니다.
- 사용 가능:
example.com
- 사용 가능:
web.example.com
- 사용 가능:
*.example.com
- 사용 불가능:
35.244.221.250
URL 맵 구성
URL 맵은 트래픽을 백엔드 서비스 또는 백엔드 버킷으로 전송할 수 있습니다. 리전별 외부 애플리케이션 부하 분산기 및 내부 애플리케이션 부하 분산기에서는 백엔드 버킷이 지원되지 않습니다.
콘솔
Google Cloud 콘솔을 사용하여 URL 맵을 추가하려면 다음 단계를 수행합니다.
- 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 호스트 및 경로 규칙을 선택합니다.
- 호스트 및 경로 규칙 추가를 클릭합니다.
호스트 필드, 경로 필드 또는 둘 모두를 입력하고 백엔드 서비스 또는 백엔드 버킷을 선택합니다.
- 정규화된 호스트 이름을 입력합니다(예:
web.example.com
). - 경로를 입력합니다(예:
/video
). - 호스트 및 경로 규칙 페이지의 백엔드 메뉴에서 사용 가능한 백엔드 서비스나 백엔드 버킷을 선택합니다.
- 정규화된 호스트 이름을 입력합니다(예:
호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.
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.com
및 google.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 맵을 만들려면 google_compute_region_url_map resource를 사용합니다.
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 맵을 변경해야 하는 경우 이러한 구성 변경사항을 실제로 적용하기 전에 테스트할 수 있습니다.
부하 분산기의 기존 URL 맵을 YAML 파일로 내보냅니다.
gcloud compute url-maps export URL_MAP_NAME \ --destination PATH_TO_URL_MAP_CONFIG_FILE \ --global
새 구성으로 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
새 구성의 유효성을 검사합니다.
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'.
새 구성이 작동하고 기존 설정에 영향을 미치지 않는다는 것을 확인했다면 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 콘솔에서 테스트를 실행하려면 다음 안내를 따르세요.
- 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 라우팅 규칙을 클릭합니다. 기본 애플리케이션 부하 분산기의 경우 호스트 및 경로 규칙입니다.
- 구성 테스트 표시를 클릭합니다.
- 구성 테스트 추가를 클릭합니다. 다음 테스트 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.
- 테스트 호스트 및 경로 1
- 라우팅 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다. 기본 애플리케이션 부하 분산기의 경우 호스트 및 경로 규칙 옆에 있는 파란색 체크표시를 확인합니다.
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 맵에 대한 정보를 가져오려면 다음 단계를 수행합니다.
- 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 호스트 및 경로 규칙을 확인합니다.
gcloud
Google Cloud CLI를 사용하여 단일 URL 맵에 대한 정보를 가져오려면 url-maps describe
명령어를 실행합니다.
gcloud compute url-maps describe URL_MAP_NAME
URL 맵 삭제
URL 맵은 URL 맵을 참조하는 모든 대상 프록시를 삭제한 후에만 삭제할 수 있습니다. 자세한 내용은 대상 프록시 삭제를 참조하세요.
콘솔
URL 맵을 삭제하려면 다음 단계를 수행합니다.
- 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 호스트 및 경로 규칙을 확인합니다.
- URL 맵 오른쪽의 'X'를 클릭하여 삭제합니다. URL 맵이 사라집니다.
- 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.
gcloud
Google Cloud CLI를 사용하여 URL 맵을 삭제하려면 url-maps delete
명령어를 실행합니다.
URL 맵을 삭제하려면 먼저 URL 맵을 참조하는 모든 대상 HTTP 프록시를 삭제해야 합니다.
gcloud compute url-maps delete URL_MAP_NAME [--quiet]
경로 일치자 삭제
콘솔
경로 일치자를 삭제하려면 다음 단계를 수행합니다.
- 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 호스트 및 경로 규칙을 선택합니다.
- 기존 URL 맵의 경로 필드에서 경로 일치자 이름의 'x'를 클릭합니다.
- 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.
gcloud
경로 일치자를 삭제하려면 gcloud compute url-maps remove-path-matcher
명령어를 실행합니다.
gcloud compute url-maps remove-path-matcher URL_MAP_NAME \ [--path-matcher-name PATH_MATCHER]
호스트 규칙 삭제
콘솔
호스트 규칙을 삭제하려면 다음 단계를 수행합니다.
- 호스트 및 경로 규칙 페이지가 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.
- 부하 분산기의 이름을 클릭합니다.
- 부하 분산기 세부정보 페이지에서 선택한 부하 분산기에 대해 수정을 클릭합니다.
- 호스트 및 경로 규칙을 선택합니다.
- 기존 URL 맵의 호스트 필드에서 호스트 이름의 'x'를 클릭합니다.
- 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.
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 맵 기능 및 트래픽 관리 가이드 |
---|---|
전역 외부 애플리케이션 부하 분산기 | 부하 분산기의 기능: 라우팅 및 트래픽 관리 |
기본 애플리케이션 부하 분산기 | 부하 분산기의 기능: 라우팅 및 트래픽 관리 |
리전 외부 애플리케이션 부하 분산기 | 부하 분산기의 기능: 라우팅 및 트래픽 관리 |
내부 애플리케이션 부하 분산기 | 부하 분산기의 기능: 라우팅 및 트래픽 관리 |
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는 다음을 참조하세요.
- gcloud compute url-maps
- 전역:
--global
- 리전:
--region=[REGION]
- 전역:
고급 트래픽 관리의 경우는 YAML 파일을 사용하고 gcloud compute url-maps import
명령어로 가져오세요.
다음 단계
- URL 맵의 작동 방식에 대한 내용은 URL 맵 개요를 참조하세요.
- 외부 애플리케이션 부하 분산기에서 URL 맵의 작동 방식에 대한 내용은 외부 애플리케이션 부하 분산기 개요를 참조하세요.
- 내부 애플리케이션 부하 분산기에서 URL 맵의 작동 방식에 대한 내용은 내부 애플리케이션 부하 분산기 개요를 참조하세요.