PSC로 리전 장애 조치를 위한 활성 상태 점검 구성

이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.

Apigee Edge 문서 보기

이 문서에서는 Northbound 네트워크 라우팅(클라이언트에서 Apigee로 전송되는 트래픽)에 Private Service Connect(PSC)를 사용하려는 경우 활성 상태 점검을 구성하도록 Apigee를 구성하는 방법을 설명합니다. 활성 상태 점검은 리전 장애 발생 시 네트워크 트래픽의 손실을 방지하는 데 유용합니다.

개요

Apigee Northbound 네트워크 라우팅에 PSC를 사용하려는 경우 이 문서의 안내에 따라 활성 상태 점검을 구성합니다. 현재 PSC는 활성 상태 점검 모니터링을 지원하지 않습니다. PSC의 이러한 제한사항을 해결하려면 활성 상태 점검 기능을 제공하는 관리형 인스턴스 그룹(MIG)을 사용하도록 Apigee 설치 구성을 수정하면 됩니다.

상태 모니터링에 이상점 감지를 사용할 수 있습니다. 하지만 이상점 감지에 실시간 트래픽이 표시기로 사용되기 때문에 리전 장애 발생 시 주기적으로 트래픽이 일정량 손실될 수 있습니다. 이상점 감지는 라이브 트래픽의 일부를 주기적으로 다시 라우팅하여 장애가 발생한 리전의 상태를 확인합니다.

제안된 아키텍처 모습은 그림 1과 같습니다. 서비스 엔드포인트는 Apigee 인스턴스의 서비스 연결에 연결되고 MIG는 트래픽을 서비스 엔드포인트로 프록시합니다. MIG에서 상태 점검 모니터링을 사용 설정합니다.

그림 1. VPC 피어링 없이 활성 상태 점검을 위한 Apigee 아키텍처

MIG 기반 상태 점검 접근 방식

기본 요건

이 문서에 설명된 기법은 VPC 피어링을 사용하거나 VPC 피어링을 사용하지 않는 Apigee 설치에 적용할 수 있습니다. 하지만 VPC 피어링 설치의 경우 여기에 설명된 활성 상태 점검 기법은 라우팅 구성에 PSC를 사용하는 경우에만 적용됩니다.

이 섹션의 단계를 수행하기 전에 다음을 수행하세요.

  • 비VPC 피어링 설치의 경우:
    1. 구독 기반 또는 사용한 만큼만 지불 설치에 대한 Apigee 프로비저닝 1~6단계를 완료합니다. 현재 유일한 옵션은 명령줄 인터페이스를 사용하여 이러한 단계를 수행하는 것입니다.
    2. 7단계 건너뛰기: 라우팅 구성. 대신 다음 단계를 수행합니다.
  • 라우팅에 PSC를 사용하는 VPC 피어링 설치의 경우:
    1. 구독 기반 또는 사용한 만큼만 지불 설치에 대한 Apigee 프로비저닝 1~7단계를 완료합니다. 현재 유일한 옵션은 명령줄 인터페이스를 사용하여 이러한 단계를 수행하는 것입니다.
    2. 8단계 건너뛰기: 라우팅 구성. 대신 다음 단계를 수행합니다.

1. Apigee 서비스 연결을 위한 PSC 서비스 엔드포인트 구성

이 단계에서는 Apigee 인스턴스의 서비스 연결을 가리키는 PSC 서비스 엔드포인트를 만듭니다.

  1. 이전에 만든 Apigee 인스턴스에서 서비스 연결을 가져옵니다.
    curl -i -X GET -H "Authorization: Bearer $AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    다음 샘플 출력에서 serviceAttachment 값은 굵게 표시됩니다.

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "host": "10.82.192.2",
          "port": "443",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-7-0-20220228-190814",
          "ipRange": "10.82.192.0/22,10.82.196.0/28",
          "consumerAcceptList": [
            "875609189304"
          ],
          "serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1"
        }
      ]
    }
  2. Private Service Connect 엔드포인트 만들기에 설명된 대로 이전 단계의 인스턴스 응답 본문에서 얻은 서비스 연결을 가리키는 PSC 서비스 엔드포인트를 만듭니다.

2. 서비스 엔드포인트를 가리키는 MIG 구성

이 단계에서는 트래픽을 서비스 엔드포인트로 프록시하는 MIG를 만듭니다. 그런 다음 MIG에서 활성 상태 점검을 사용 설정할 수 있습니다.

2A. VPC 네트워크의 서브넷에 대해 비공개 Google 액세스 사용 설정

VPC 네트워크의 서브넷에 비공개 Google 액세스를 사용 설정하려면 비공개 Google 액세스 사용 설정에 나와 있는 단계를 따르세요.

2B. 환경 변수 설정하기

이 섹션의 절차에서는 환경 변수를 사용하여 반복적으로 사용되는 문자열을 참조합니다. 계속하기 전에 이를 설정하는 것이 좋습니다.

MIG_NAME=YOUR_MIG_NAME  # A name you provide for the MIG
VPC_NAME=default       # If you are using a shared VPC, use the shared VPC name
VPC_SUBNET=default     # Private Google Access must be enabled for this subnet
REGION=RUNTIME_REGION        # The same region as your Apigee runtime instance
SERVICE_ENDPOINT_IP=YOUR_SERVICE_ENDPOINT_IP.  ## The endpoint IP of the service endpoint you just created

나머지 프로세스에서는 이러한 변수를 여러 번 사용합니다. 여러 리전을 구성하려면 각 리전별 값으로 변수를 만듭니다.

2C. 관리형 인스턴스 그룹 만들기

이 단계에서는 관리형 인스턴스 그룹(MIG)을 만들고 구성합니다.

  1. 다음 명령어를 실행하여 인스턴스 템플릿을 만듭니다.
    gcloud compute instance-templates create $MIG_NAME \
    --project $PROJECT_ID \
    --region $REGION \
    --network $VPC_NAME \
    --subnet $VPC_SUBNET \
    --tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
    --machine-type e2-medium --image-family debian-12 \
    --image-project debian-cloud --boot-disk-size 20GB \
    --no-address \
    --metadata ENDPOINT=$SERVICE_ENDPOINT_IP,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh

    이 명령어에서 볼 수 있듯이 머신은 e2-medium 유형입니다. 이러한 머신은 Debian 12를 실행하며 20GB의 디스크를 보유하고 있습니다. startup-script.sh 스크립트는 MIG가 부하 분산기에서 Apigee 인스턴스로 인바운드 트래픽을 라우팅하도록 MIG를 구성합니다.

  2. 다음 명령어를 실행하여 관리형 인스턴스 그룹을 만듭니다.
    gcloud compute instance-groups managed create $MIG_NAME \
    --project $PROJECT_ID --base-instance-name apigee-mig \
    --size 2 --template $MIG_NAME --region $REGION
  3. 다음 명령어를 실행하여 그룹의 자동 확장을 구성합니다.
    gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
    --project $PROJECT_ID --region $REGION --max-num-replicas 3 \
    --target-cpu-utilization 0.75 --cool-down-period 90
  4. 다음 명령어를 실행하여 이름이 지정된 포트를 정의합니다.
    gcloud compute instance-groups managed set-named-ports $MIG_NAME \
    --project $PROJECT_ID --region $REGION --named-ports https:443

3. 상태 점검 모니터링으로 부하 분산기 구성

다음 단계에서는 상태 점검 모니터링을 사용하여 부하 분산기를 구성합니다.

3A. 부하 분산기에 대한 SSL 인증서 및 키 만들기

단일 리전 또는 멀티 리전 등 어디에 설치하든 상관없이 사용자 인증 정보를 한 번만 만들면 됩니다. 이후 단계에서 이러한 사용자 인증 정보를 부하 분산기의 대상 HTTPS 프록시와 연결하게 됩니다.

다음을 사용하여 사용자 인증 정보를 만들 수 있습니다.

Google Cloud 부하 분산기의 SSL 인증서 만들기 및 사용에 대한 자세한 내용은 SSL 인증서SSL 인증서 개요를 참조하세요.

다음 예시에서는 Google 관리 SSL 인증서를 만듭니다.

  1. 다음 환경 변수를 만듭니다.
    CERTIFICATE_NAME=YOUR_CERT_NAME
    DOMAIN_HOSTNAME=YOUR_DOMAIN_HOSTNAME 

    DOMAIN_HOSTNAME을 등록한 유효한 도메인 호스트 이름으로 설정합니다. 이후 단계에서 부하 분산기의 IP 주소를 가져오고 이 주소를 가리키도록 도메인 A 레코드를 업데이트하게 됩니다. 예를 들어 도메인 호스트 이름은 foo.example.com과 같습니다.

  2. gcloud compute ssl-certificates create 명령어를 실행합니다.
    gcloud compute ssl-certificates create $CERTIFICATE_NAME \
    --domains=$DOMAIN_HOSTNAME \
    --project $PROJECT_ID \
    --global

    인증서를 프로비저닝하려면 최대 1시간까지 걸릴 수 있습니다. 프로비저닝 상태를 확인하려면 다음 명령어를 실행합니다.

    gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
    --global \
    --format="get(name,managed.status, managed.Status)"

3B. 상태 점검 만들기

  1. 상태 점검을 만듭니다.
    gcloud compute health-checks create https HEALTH_CHECK_NAME \
    --project $PROJECT_ID --port 443 --global \
    --request-path /healthz/ingress

    이 상태 확인을 사용하여 백엔드 서비스가 실행 중인지 확인합니다. 특정 프록시에 대해 고급 상태 확인을 구성하려면 상태 점검 수행을 참조하세요.

  2. 백엔드 서비스를 만듭니다.
    gcloud compute backend-services create PROXY_BACKEND_NAME \
    --project $PROJECT_ID \
    --protocol HTTPS \
    --health-checks HEALTH_CHECK_NAME \
    --port-name https \
    --timeout 302s \
    --connection-draining-timeout 300s \
    --global
  3. 다음 명령어를 사용하여 백엔드 서비스에 MIG를 추가합니다.
    gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
    --project $PROJECT_ID --instance-group $MIG_NAME \
    --instance-group-region $REGION \
    --balancing-mode UTILIZATION --max-utilization 0.8 --global
  4. 다음 명령어를 사용하여 부하 분산 URL 지도를 만듭니다.
    gcloud compute url-maps create MIG_PROXY_MAP_NAME \
    --project $PROJECT_ID --default-service PROXY_BACKEND_NAME
  5. 다음 명령어를 사용하여 부하 분산 대상 HTTPS 프록시를 만듭니다.
    gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
    --project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
    --ssl-certificates $CERTIFICATE_NAME

3C. 예약된 IP 주소 가져오기 및 방화벽 규칙 만들기

부하 분산기에 IP 주소를 할당한 다음 부하 분산기가 MIG에 액세스하도록 허용하는 규칙을 만들어야 합니다. 이 단계는 단일 리전에 설치하든 멀티 리전에 설치하든 한 번만 실행하면 됩니다.

  1. 부하 분산기의 IP 주소를 예약합니다.
    gcloud compute addresses create ADDRESSES_NAME \
    --project $PROJECT_ID \
    --ip-version=IPV4 \
    --global
  2. 다음 명령어를 사용하여 전역 전달 규칙을 만듭니다.
    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --project $PROJECT_ID --address ADDRESSES_NAME --global \
    --target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
  3. 다음 명령어를 실행하여 예약된 IP 주소를 가져옵니다.
    gcloud compute addresses describe ADDRESSES_NAME \
    --project $PROJECT_ID --format="get(address)" --global
  4. 중요 단계: DNS 레코드가 관리되는 사이트, DNS 호스트, ISP로 이동하고 도메인의 DNS 레코드가 Google Cloud 부하 분산기의 IP 주소로 확인되는지 확인합니다. 이 주소는 마지막 단계에서 반환된 IP 값입니다. 자세한 내용은 부하 분산기의 IP 주소를 가리키도록 DNS A 및 AAAA 레코드 업데이트를 참조하세요.
  5. 다음 명령어를 사용하여 부하 분산기가 MIG에 액세스할 수 있도록 허용하는 방화벽 규칙을 만듭니다.
    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
    --project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy

    IP 주소 범위 130.211.0.0/2235.191.0.0/16은 Google 부하 분산의 소스 IP 주소 범위입니다. 이 방화벽 규칙을 사용하면 Google Cloud Load Balancing이 MIG에 상태 확인을 요청할 수 있습니다.

Apigee 프로비저닝이 완료되었습니다. 샘플 프록시 배포로 이동합니다.