URL 맵 사용

HTTP(S) 기반 부하 분산기를 사용하면 수신 URL을 기반으로 트래픽을 여러 인스턴스로 보낼 수 있습니다. 예를 들어 오디오 파일을 제공하도록 구성된 인스턴스가 포함된 한 백엔드 서비스http://www.example.com/audio를 요청하고 동영상 파일을 제공하도록 구성된 인스턴스가 포함된 다른 백엔드 서비스에 http://www.example.com/video를 요청할 수 있습니다.

URL 맵 구성

GCP Console, gcloud 명령줄 도구 또는 REST API를 통해 URL 맵 작업을 할 때 사용 가능한 속성에 대한 설명은 UrlMaps 리소스를 참조하세요.

URL 맵 추가

Console

GCP Console을 사용하여 URL 맵을 추가하려면 다음 단계를 수행합니다.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 호스트 및 경로 규칙 추가를 클릭합니다.
  6. 호스트 필드, 경로 필드 또는 둘 모두를 입력하고 백엔드 서비스 또는 백엔드 버킷을 선택합니다.
  7. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵을 추가하려면 url-maps create 명령어를 사용합니다.

gcloud compute url-maps create URL_MAP \
    --default-service BACKEND_SERVICE \
   [--description DESCRIPTION]

내부 HTTP(S) 부하 분산기의 경우 URL 맵을 만들 때 --region 플래그를 포함해야 합니다.

새로 생성된 URL 맵은 오직 하나의 경로, 즉 기본 경로(/*)와 일치합니다. 이 기본 경로 일치자는 자동으로 생성됩니다. 수동으로 생성된 경로 일치자 또는 호스트 규칙과 일치하지 않는 모든 트래픽은 URL 맵 기본 백엔드 서비스로 전송됩니다.

경로 일치자 추가

경로 일치자는 HTTP(S) 요청 경로 또는 경로 프리픽스(예: /video)를 백엔드 서비스에 매핑합니다. 지정된 경로와 일치하는 모든 트래픽은 경로 일치자의 경로 규칙에 의해 처리됩니다. 경로가 경로 규칙과 일치할 경우, 해당 경로 규칙과 연결된 백엔드로 요청이 전달됩니다. 요청이 경로 일치자 no path 규칙과 일치할 경우 해당 요청은 경로 일치자의 기본 백엔드로 전달됩니다.

Console

GCP Console을 사용하여 경로 일치자를 만들려면 다음 단계를 수행합니다.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙 화면에서 호스트 및 경로 규칙 추가를 클릭하거나 기존 경로 필드를 클릭합니다.
  5. 구성할 경로를 입력합니다(예: /video).
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

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

gcloud compute url-maps add-path-matcher URL_MAP \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules PATH=SERVICE]

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

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

url-maps create 명령어와 url-maps add-path-matcher 명령어에는 모두 --default-service 매개변수가 있습니다. create에서 기본 서비스는 어떤 경로 일치자도 수신 URL과 일치하지 않을 경우에 사용되는 서비스입니다. add-path-matcher에서 기본 서비스는 경로가 경로 일치자와 일치하지만 --path-rules 중 어느 것도 일치하지 않을 때 사용되는 서비스입니다.

경로 일치자 삭제

Console

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

  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 \
     [--path-matcher-name PATH_MATCHER]

호스트 규칙 추가

경로 일치자를 1개 이상 만들었으면 요청의 호스트 구성요소를 기반으로 트래픽을 특정 경로 일치자에게 보내는 호스트 규칙을 정의할 수 있습니다.

URL 맵에 호스트 규칙을 지정하면 URL 맵이 우선 호스트 규칙과 일치합니다. 호스트 규칙이 일치하면 경로 일치자가 평가됩니다. 호스트 규칙이 일치하지 않으면 트래픽이 URL 맵의 기본 백엔드 서비스로 전송되고 어떤 경로 일치자도 참조되지 않습니다.

*에 호스트 규칙을 하나 만들고 example.com과 같은 특정 호스트에 또 다른 호스트 규칙을 만들 경우 example.com에 대한 요청은 해당 호스트 규칙과 일치하고 다른 모든 호스트는 * 규칙과 일치합니다.

호스트 규칙을 지정하지 않으면 모든 호스트의 URL(예: example.com 및 example.net)이 경로와 일치할 수 있습니다.

개별 호스트 규칙(예: example.com에 대한 규칙과 example.net에 대한 규칙)을 만들 경우 example.com 및 example.net 모두에 대한 경로 규칙을 만들어야 합니다.

Console

GCP Console을 사용하여 호스트 규칙을 만들려면 다음 단계를 수행합니다.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙 화면에서 호스트 및 경로 규칙 추가를 클릭하거나 기존 호스트 필드를 클릭합니다.
  5. 정규화된 호스트 이름을 입력합니다(예: web.example.com).
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

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

  gcloud compute url-maps add-host-rule URL_MAP \
      --hosts HOSTS --path-matcher-name PATH_MATCHER

--hosts 플래그는 요청을 매칭할 호스트 집합을 정의합니다. 예를 들어 다음 --hosts 값은 요청을 www.example.comgoogle.com의 모든 하위 도메인과 매칭합니다.

  --hosts *.google.com,www.example.com

호스트 규칙 삭제

Console

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

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 기존 URL 맵의 호스트 필드에서 호스트 이름의 'x'를 클릭합니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

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

 gcloud compute url-maps remove-host-rule NAME --host HOST

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

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

백엔드 서비스 선택

Console

URL 맵의 백엔드 서비스를 선택하려면 다음 단계를 수행합니다.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙 화면의 백엔드 필드 풀다운 메뉴에서 사용 가능한 백엔드 서비스를 선택합니다.
  5. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 백엔드 서비스를 선택하려면 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 ...]

URL 맵 테스트

다수의 URL 맵을 관리하는 경우 각 URL 맵 파일에 테스트를 추가하여 호스트 및 경로 규칙이 예상대로 작동하는지 확인하는 것이 좋습니다. 호스트 및 경로 규칙은 와일드 카드를 포함할 수 있으며 중첩될 수 있습니다. 테스트는 단위 테스트와 같습니다. 특정 URL에 대한 요청이 올바른 백엔드 서비스로 전달되도록 합니다.

URL 맵을 수정하면 테스트가 즉시 실행되어 모든 맵 규칙이 검사됩니다. 테스트 중 하나라도 실패하면 부하 분산기 생성이 차단되고 다음과 같은 오류가 표시됩니다. Console 테스트와 gcloud 명령줄 테스트 모두에 대한 오류 메시지가 표시됩니다.

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

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

Console

GCP Console에서 테스트를 실행하려면 다음 안내를 따르세요.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙을 클릭합니다.
  5. 호스트 및 경로 규칙 아래에서 구성 테스트 표시를 클릭합니다.
  6. 구성 테스트 추가를 클릭합니다. 다음 테스트 URL 및 백엔드를 추가합니다.
    • 테스트 URL example.com백엔드 www-service.
    • 테스트 URL example.net백엔드 www-service.
    • 테스트 URL example.net/web백엔드 www-service.
    • 테스트 URL example.com/videos백엔드 video-service.
    • 테스트 URL example.com/videos/browse백엔드 video-service.
    • 테스트 URL example.net/static백엔드 static-service.
    • 테스트 URL example.net/static/images백엔드 static-service.
  7. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵에 테스트를 추가하려면 gcloud compute url-maps edit 명령어를 사용합니다.

  gcloud compute url-maps edit URL_MAP

이 명령어는 텍스트 편집기를 실행합니다. HTTP(S) 부하 분산기의 경우 테스트에 다음 형식을 사용해야 합니다.

<pre>
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</pre>

내부 HTTP(S) 부하 분산기의 경우 서비스 URL이 리전별 백엔드 서비스를 가리켜야 합니다. 예를 들면 다음과 같습니다.

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/[REGION]/backendServices//www-service

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

URL 맵 나열

Console

Console에서는 한 번에 한 부하 분산기의 URL 맵만 볼 수 있습니다.

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙을 확인합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵의 목록을 표시하려면 url-maps list 명령어를 사용합니다.

gcloud compute url-maps list

URL 맵에 대한 정보 가져오기

Console

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

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 호스트 및 경로 규칙을 확인합니다.

gcloud

gcloud 명령줄 도구를 사용하여 단일 URL 맵에 관한 정보를 가져오려면 url-maps describe 명령어를 사용합니다.

gcloud compute url-maps describe URL_MAP

URL 맵 삭제

URL 맵을 삭제하려면 먼저 URL 맵을 참조하는 모든 대상 HTTP(S) 프록시를 삭제해야 합니다. 대상 프록시 삭제에 대한 내용은 대상 프록시 사용을 참조하세요.

Console

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

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

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택된 부하 분산기 옆에 있는 수정(연필 모양 아이콘)을 클릭합니다.
  4. 부하 분산기 세부정보 화면에서 호스트 및 경로 규칙을 확인합니다.
  5. URL 맵 오른쪽의 'X'를 클릭하여 삭제합니다. URL 맵이 사라집니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

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

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

Cloud CDN 캐시 작업

Cloud CDN은 Cloud CDN 캐시에서 지정된 URL 맵 객체의 무효화를 지원합니다.

자세한 내용은 Cloud CDN 캐시 무효화 페이지를 참조하세요.

다음 단계