이 예시에서는 기본 애플리케이션 부하 분산기의 요청에 지정된 경로를 재작성하는 방법을 보여줍니다.
전역 외부 애플리케이션 부하 분산기 및 리전 외부 애플리케이션 부하 분산기의 트래픽 관리를 구성하려면 다음 페이지를 참조하세요.
시작하기 전에
URL 재작성에 대해 알아보세요.
URL 재작성 예시에서는 Cloud Storage 버킷으로 부하 분산기 설정에 설명된 단계에 따라 외부 애플리케이션 부하 분산기를 이미 만들었다고 가정합니다.
해당 예시를 통해 다음 두 가지 리소스를 생성합니다.
http://IP_ADDRESS/never-fetch/three-cats.jpg
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
여기서
/never-fetch/three-cats.jpg
는 기본 서비스인/cats
에 저장되고/love-to-fetch/two-dogs.jpg
는/dogs
에 저장됩니다.이 시점에서 URL 맵은 다음과 같습니다.
gcloud compute url-maps describe http-lb
creationTimestamp: '2020-10-13T11:18:10.561-07:00' defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats fingerprint: MKfYsObzqgw= hostRules: - hosts: - '*' pathMatcher: path-matcher-1 id: '1420501688756228493' kind: compute#urlMap name: test-bucket pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /love-to-fetch/* service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
URL 맵 수정
이 예시에서는 사용자가 다음과 같은 약식 URL로 two-dogs.jpg
이미지에 도달할 수 있도록 /love-to-fetch/
URL을 다시 작성합니다.
http://IP_ADDRESS/two-dogs.jpg
이렇게 하려면 부하 분산기의 URL 맵을 다음과 같이 수정합니다.
콘솔
부하 분산기 수정
- Google Cloud 콘솔의 부하 분산 페이지로 이동합니다.
부하 분산 페이지로 이동 http-lb
를 클릭합니다.- 수정 을 클릭합니다.
- 계속하려면 창을 열어둡니다.
호스트 및 경로 규칙 변경
- 화면의 왼쪽 열에서 호스트 및 경로 규칙을 클릭합니다.
- 고급 호스트 및 경로 규칙(URL 리디렉션, URL 재작성)을 선택합니다.
- 기본이 아닌 경로 규칙이 포함된 행을 클릭합니다. 이 경우 모든 호스트에 별표(
*
)가 있는 행을 클릭합니다. /love-to-fetch/* Route traffic to a single backend: dogs
행의 연필 아이콘 을 클릭합니다.- 경로에서
/love-to-fetch/*
를 삭제하고/*
를 추가합니다. - 작업에서 단일 백엔드로 트래픽 라우팅을 선택합니다.
- 부가 작업(URL 재작성)을 클릭합니다.
- 호스트 재작성을 비워둡니다.
- 경로 프리픽스 재작성에
/love-to-fetch/
를 입력합니다. - 백엔드에서
dogs
를 선택합니다. - 저장을 클릭합니다.
완료를 클릭합니다. 새 호스트 및 경로 규칙은 다음과 같습니다.
경로 작업 백엔드 일치하지 않는 모든 항목(기본값) 단일 백엔드로 트래픽 라우팅 고양이 /* 단일 백엔드로 트래픽 라우팅 개 모든 설정이 올바른 것으로 확인되면 업데이트를 클릭하여 HTTP 부하 분산기를 업데이트합니다.
gcloud
PROJECT_ID를 프로젝트 ID로 바꿔 YAML 파일
/tmp/http-lb.yaml
을 만듭니다.사용자가
/*
경로를 요청하면 백엔드에서 콘텐츠의 실제 위치인/love-to-fetch/*
로 경로가 다시 작성됩니다.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: http-lb pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /* routeAction: urlRewrite: pathPrefixRewrite: /love-to-fetch/ service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs tests: - description: Test routing to backend bucket, dogs host: example.com path: /love-to-fetch/test service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
URL 맵의 유효성을 검사합니다.
gcloud compute url-maps validate --source /tmp/http-lb.yaml
테스트를 통과하고 명령어가 성공 메시지를 출력하는 경우 변경사항을 URL 맵에 저장합니다.
URL 맵을 업데이트합니다.
gcloud compute url-maps import http-lb \ --source /tmp/http-lb.yaml \ --global
테스트
예약된 IPv4 주소를 확인합니다.
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
변경사항이 적용될 때까지 몇 분 정도 기다린 후에 이 설정을 테스트할 수 있습니다.
명령줄에서 다음 curl 명령어를 실행합니다.
curl http://IP_ADDRESS/two-dogs.jpg
브라우저에서 http://IP_ADDRESS/two-dogs.jpg
를 엽니다.