本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
您可以跨多個區域擴展 Apigee 機構。擴展至多個地區可改善下列各方面:
- 高可用性: 如果某個區域發生故障,流量仍可由其他區域提供服務,進而提高 API 的整體可用性。
- 高容量:額外區域可提供額外容量,用於放送 API 流量,並為任何非預期的流量尖峰預留空間,不會對單一環境造成太大壓力,進而提高 API 的整體容量。
- 低延遲時間:額外區域可為用戶端提供地理位置較近的區域,藉此處理要求,降低整體交易延遲時間。
本文說明如何將 Apigee 新增至新區域,以及如何從區域中移除 Apigee。
將 Apigee 加入新的區域
每個區域只能有一個執行階段執行個體,因此如要新增區域,必須在該區域中建立全新的執行個體。
新增區域的一般程序如下:
- 如先決條件所述,請確保對等互連網路中有適當的 IP 位址範圍。此外,請確認您的帳戶支援新區域,如「限制」一節所述。
- 定義環境變數
- 建立新的金鑰環和金鑰
- 保留新的位址範圍
- 建立新執行個體
- 將環境連結至新執行個體
- 設定轉送
以下各節將說明這些步驟。
必要條件
確認網路有 /22 和 /28 這兩個不重疊的可用 IP 位址範圍。除了其他地區使用的範圍外,也包含這個範圍。
限制
根據預設,初始機構通常會以單一區域建立。決定是否要建立第二個 (或後續) 區域時,請注意,只有在授權權利允許的情況下,您才能新增區域。您也可以視需要購買機構套裝組合。
- 如果採用訂閱式價格模式,您可能需要購買額外的機構單位,才能擴展至多個區域。請參閱「訂閱授權」。
- 如果採用「即付即用」定價模式,擴展至多個區域會產生額外費用,詳情請參閱「為即付即用方案新增區域」。
- 評估帳戶只能在一個區域使用,無法擴展至第二個區域。
詳情請參閱「隨用隨付總覽」。
每個機構最多只能有 10 個區域 (混合式機構為 11 個)。
定義環境變數
建議您定義下列環境變數,確保本文件所用指令的一致性。
export NEW_REGION_LOCATION="NEW_REGION_LOCATION"export NEW_INSTANCE_NAME="NEW_INSTANCE_NAME"
export NETWORK_NAME"=NETWORK_NAME"
export DISK_KEY_RING_NAME="YOUR_DISK_KEY_RING_NAME"
export DISK_KEY_NAME="YOUR_DISK_KEY_NAME"
export PROJECT_ID=YOUR_PROJECT_ID
export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
其中:
NEW_REGION_LOCATION
是新執行個體的實體位置。 有效值為任何 Compute Engine 區域。詳情請參閱地區和區域。例如:us-west1
。NEW_INSTANCE_NAME
是新區域的名稱。必須是貴機構的唯一值。例如:my-instance-2
。NETWORK_NAME
是指貴機構對等互連網路的名稱。例如my-network
。請參閱「設定服務網路」。DISK_KEY_RING_NAME
是磁碟金鑰環的名稱。DISK_KEY_NAME
是磁碟環的名稱。AUTH
會使用不記名憑證定義Authentication
標頭。呼叫 Apigee API 時,您會使用這個標頭。請注意,權杖會在一段時間後過期,屆時您只要使用相同指令重新產生即可。詳情請參閱 print-access-token 指令的參考頁面。PROJECT_ID
是您的 Cloud 專案 ID。PROJECT_NUMBER
是 Cloud 專案的 Cloud 專案編號。
建立新的金鑰環和金鑰
每個區域都需要專屬的網路磁碟加密金鑰。Google 建議您也為新區域建立個別的金鑰環。您不需要建立新的資料庫加密金鑰,因為機構中的所有執行個體都會共用同一個資料庫加密金鑰。
詳情請參閱「關於 Apigee 加密金鑰」。
如要建立新的磁碟加密金鑰環和金鑰:
- 使用
gcloud
指令建立新的磁碟金鑰環:gcloud kms keyrings create $DISK_KEY_RING_NAME \ --location $NEW_REGION_LOCATION \ --project $PROJECT_ID
確認磁碟金鑰環與執行個體位於相同位置。每個執行個體和金鑰環都應有自己的位置。
gcloud kms keyrings list \ --location $NEW_REGION_LOCATION \ --project $PROJECT_ID
gcloud kms keyrings describe $DISK_KEY_RING_NAME \ --location $NEW_REGION_LOCATION \ --project $PROJECT_ID
- 使用
kms keys create
指令建立新的磁碟金鑰,例如:gcloud kms keys create $DISK_KEY_NAME --keyring $DISK_KEY_RING_NAME \ --location $NEW_REGION_LOCATION --purpose "encryption" --project $PROJECT_ID
您可以透過金鑰路徑參照金鑰。您可以使用下列指令取得金鑰路徑:
gcloud kms keys list \ --location=$NEW_REGION_LOCATION \ --keyring=$DISK_KEY_RING_NAME \ --project=$PROJECT_ID
金鑰路徑如下所示:
projects/PROJECT_ID/locations/NEW_REGION_LOCATION/keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
- 執行
gcloud kms keys add-iam-policy-binding
指令,授予 Apigee 服務代理使用新金鑰的權限。舉例來說:gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \ --location $NEW_REGION_LOCATION \ --keyring $DISK_KEY_RING_NAME \ --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
確認金鑰已繫結至 Apigee 服務代理程式。
gcloud kms keys get-iam-policy $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location $NEW_REGION_LOCATION \ --project $PROJECT_ID
gcloud kms keys describe $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location $NEW_REGION_LOCATION \ --project $PROJECT_ID
保留新的位址範圍
為對等互連網路的位址範圍保留 IP 位址。如需更多資訊和重要注意事項,請參閱「瞭解對等互連範圍」。
- 建立下列環境變數:
export NEW_RANGE_NAME_22=YOUR_CIDR_22_RANGE_NAME
export NEW_RANGE_NAME_28=YOUR_CIDR_28_RANGE_NAME
export NETWORK_NAME=YOUR_NETWORK_NAME
其中:
NEW_RANGE_NAME_22
是您要建立的 CIDR 長度為 /22 的 IP 位址範圍名稱。您可以隨意命名範圍。例如:google-svcs-new_22
NEW_RANGE_NAME_28
是您要建立的 CIDR 長度為 /28 的 IP 位址範圍名稱。您可以隨意命名範圍。例如:google-svcs-new_28
NETWORK_NAME
是要保留位址的網路資源名稱。Google 會為每個新專案建立預設網路 (名為
default
),因此您可以直接使用該網路。不過,Google 不建議將預設網路用於測試以外的任何用途。
- 建立 CIDR 長度為 /22 的網路 IP 範圍:
gcloud compute addresses create $NEW_RANGE_NAME_22 \ --global \ --prefix-length=22 \ --description="Peering range for Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --project=$PROJECT_ID
成功後,
gcloud
會傳回下列內容:Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs-new].
驗證建立的運算位址:
gcloud compute addresses list \ --global \ --project=$PROJECT_ID
gcloud compute addresses describe $NEW_RANGE_NAME_22 \ --global \ --project=$PROJECT_ID
建立 IP 位址範圍後,這些位址就會與專案建立關聯,直到您釋出為止。
- 建立 CIDR 長度為 /28 的網路 IP 範圍。這個範圍是必要項目,Apigee 會用於疑難排解,且無法自訂或變更。
gcloud compute addresses create $NEW_RANGE_NAME_28 \ --global \ --prefix-length=28 \ --description="Peering range for supporting Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --project=$PROJECT_ID
- 取得對等互連範圍的名稱:
gcloud services vpc-peerings list \ --network=$NETWORK_NAME \ --project=$PROJECT_ID
- 使用下列指令,將新預留的範圍新增至對等互連網路,其中
$NEW_RANGE_NAME_22
和$NEW_RANGE_NAME_28
是新的範圍名稱,ORIGINAL_RANGE_NAME_1 和 ORIGINAL_RANGE_NAME_n 則是上一個指令傳回的預留對等互連範圍名稱:gcloud services vpc-peerings update --service=servicenetworking.googleapis.com \ --network=$NETWORK_NAME \ --ranges=$NEW_RANGE_NAME_22,$NEW_RANGE_NAME_28,ORIGINAL_RANGE_NAME_1,ORIGINAL_RANGE_NAME_n \ --project=$PROJECT_ID
驗證建立的運算位址:
gcloud compute addresses list \ --global \ --project=$PROJECT_ID
gcloud compute addresses describe $NEW_RANGE_NAME_28 \ --global \ --project=$PROJECT_ID
驗證已更新的 vpc-peering 變更:
gcloud services vpc-peerings list \ --network=$NETWORK_NAME \ --project=$PROJECT_ID
建立新執行個體
使用 Instances API 為該區域建立新的執行個體。
使用虛擬私有雲對等互連
如果 Apigee 設定為使用 VPC 對等互連,請使用下列 API 呼叫建立執行個體:
curl -X POST -H "$AUTH" \ -H "Content-Type: application/json" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \ -d '{ "name":"'"$NEW_INSTANCE_NAME"'", "location":"'"$NEW_REGION_LOCATION"'", "diskEncryptionKeyName":"KEY_PATH", "ipRange":"IP_ADDRESS_1/28, IP_ADDRESS_2/22" # OPTIONAL }'
其中:
- KEY_PATH 是您在「建立新的金鑰環和金鑰」中建立的磁碟加密金鑰路徑。
- IP_ADDRESS_* 是用於建立 Apigee 執行個體的 /22 和 /28 CIDR 範圍的 CIDR IP 位址。請注意,
ipRange
為選用。如果您未提供這個欄位,Apigee 會自動向 Service Networking 要求可用的 /22 和 /28 CIDR 區塊。另請參閱 Apigee 執行個體 API。
這項要求最多可能需要 20 分鐘才能完成,因為 Apigee 必須建立及啟動新的 Kubernetes 叢集、在該叢集上安裝 Apigee 資源,並設定負載平衡。
沒有虛擬私有雲對等互連
如果 Apigee 未設定為使用 VPC 對等互連,請使用下列 API 呼叫建立執行個體:
curl -X POST -H "$AUTH" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances" \ -d '{ "name":"'"$INSTANCE_NAME"'", "location":"'"$RUNTIME_LOCATION"'", "diskEncryptionKeyName":"'"KEY_PATH"'", "consumerAcceptList":[ARRAY_OF_PROJECT_IDS] }'
其中:
- KEY_PATH 是您在「建立新的金鑰環和金鑰」中建立的磁碟加密金鑰路徑。 另請參閱 Apigee 執行個體 API。
-
consumerAcceptList
(選用) 指定可私下連線至 Apigee VPC 服務附件的 Google Cloud 專案 ID 清單。服務連結是搭配 Google Cloud Private Service Connect 使用的實體,可讓服務供應商 (在本例中為 Apigee) 向消費者 (在本例中為您擁有的 Cloud 專案) 公開服務。根據預設,我們會使用已與 Apigee 機構建立關聯的 Cloud 專案。例如: "consumerAcceptList": ["project1", "project2", "project3"]
這項要求最多可能需要 20 分鐘才能完成,因為 Apigee 必須建立及啟動新的 Kubernetes 叢集、在該叢集上安裝 Apigee 資源,並設定負載平衡。
計時器:建立執行個體作業約需 30 分鐘才能完成。
如要檢查執行個體建立要求狀態,請執行下列指令。狀態為「ACTIVE」時,即可繼續下一個步驟。
curl -i -X GET -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$NEW_INSTANCE_NAME"
如要進一步瞭解如何建立執行階段執行個體,包括其他背景資訊和疑難排解資訊,請參閱「步驟 5:建立 Apigee 執行階段執行個體」。
將環境連結至新執行個體
建立執行個體後,您必須將環境附加至執行個體,否則執行個體無法回應 API 要求。
環境會在執行個體之間共用,因此您應將現有環境連結至新區域。您沒有為新區域定義新環境。如果您為新區域定義新環境,並為相同主機提供與原始環境相同的基本路徑,則執行階段呼叫可能會傳回 HTTP 503
錯誤。
在新的區域中填入環境時,您不需要將環境連結至環境群組,因為環境已連結至所屬群組。您只需要將環境附加至新的執行個體。
如要將環境附加至新區域,請使用 Instances attachment API,如下列範例所示:
curl -X POST -H "$AUTH" \ -H "Content-Type: application/json" \ https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances/$NEW_INSTANCE_NAME/attachments \ -d '{ "environment":"ENVIRONMENT_NAME" }'
如要取得環境清單,請執行下列指令:
curl -i -X GET -H "$AUTH" \ "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments"
您必須透過對 Instances Attachment API 的個別呼叫,附加每個環境。單次通話最多只能附加一個環境。
設定轉送
您可以使用受管理執行個體群組 (MIG) 或Private Service Connect (PSC) 型設定,在新區域中設定網路路由。
設定 PSC 轉送
下列步驟說明如何使用 PSC 在新區域中設定路由。
總覽
下圖顯示多區域 PSC 的高層級北向架構:
如圖 1 所示,您會在專案中建立網路端點群組 (NEG),與新 Apigee 執行個體所在區域的服務附件通訊。所有區域的 Apigee NEG 都會連線至 Apigee 生產環境全域外部負載平衡器的後端服務。
為新區域建立網路端點群組
請按照下列步驟,使用網路端點群組 (NEG) 為新區域建立及設定負載平衡器:
- 建立新的 NEG:
- 從先前建立的執行個體取得服務附件:
curl -i -X GET -H "$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/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7" } ] }
建立 NEG,指向您在上一個步驟中從執行個體回應主體取得的服務附件。
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=private-service-connect \ --psc-target-service=TARGET_SERVICE \ --region=$NEW_REGION_LOCATION \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --project=PROJECT_ID
更改下列內容:
- NEG_NAME:網路端點群組的名稱。
- TARGET_SERVICE:要連線的服務連結。例如:
projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
- NETWORK_NAME:(選用) 建立 NEG 的網路名稱。如果省略這個參數,系統會使用
default
專案網路。 - SUBNET_NAME:用於與生產者建立私有連線的子網路名稱。 子網路大小可以很小:PSC NEG 只需要子網路中的一個 IP。如果是 Apigee,每個區域只需要一個 PSC NEG。VM 或其他實體可以共用及使用子網路。如果未指定子網路,網路端點可能會屬於建立網路端點群組的區域中任何子網路。
- PROJECT_ID 已與 Apigee 機構建立關聯的 Cloud 專案,或
consumerAcceptlist
中包含的 Cloud 專案 (建立 Apigee 執行階段例項時)。
- 從先前建立的執行個體取得服務附件:
- 取得正式版 Apigee 負載平衡器的後端服務名稱:
gcloud compute backend-services list --project=$PROJECT_ID
- 將 NEG 新增至後端服務,以做為後端使用:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=$NEW_REGION_LOCATION \ --global --project=$PROJECT_ID
更改下列內容:
- BACKEND_SERVICE_NAME:後端服務的名稱。
- NEG_NAME:網路端點群組的名稱。
- (選用) 您可以在後端服務上設定離群值偵測流量政策,自動處理容錯移轉情境。詳情請參閱下列說明:
測試最終設定
呼叫 API Proxy。請參閱部署範例 Proxy。
設定 MIG 轉送
下列步驟說明如何使用代管執行個體群組 (MIG),在新區域中設定路由。
總覽
下圖顯示使用代管執行個體群組 (MIG) 的多區域高層級北向架構:
如圖 2 所示,您會在專案中建立 MIG,與部署在新的 Apigee 執行個體所在區域的負載平衡器通訊。所有區域的 MIG Proxy 都會連線至 Apigee 生產環境全域外部負載平衡器的後端。
為新區域建立代管執行個體群組 (MIG)
請按照下列步驟,為新區域建立及設定 MIG:
為虛擬私有雲網路的子網路啟用私人 Google 存取權。
如要為虛擬私有雲網路的子網路啟用私人 Google 存取權,請按照「啟用私人 Google 存取權」一文中的步驟操作。
設定環境變數:
本節的操作說明會使用環境變數,參照重複使用的字串。建議您先設定下列項目,再繼續操作:
MIG_NAME=YOUR_MIG_NAME
VPC_NAME=YOUR_VPC_NAME # If you are using a shared VPC, use the shared VPC name
VPC_SUBNET=YOUR_SUBNET_NAME # Private Google Access must be enabled for this subnet
NEW_REGION_LOCATION=YOUR_NEW_REGION # The same region as your new Apigee runtime instance
APIGEE_ENDPOINT=APIGEE_INSTANCE_IP
# See the tip below for details on getting this IP address value- 建立代管執行個體群組。在這個步驟中,您會建立及設定代管執行個體群組 (MIG)。
- 執行下列指令,建立執行個體範本。
gcloud compute instance-templates create $MIG_NAME \ --project $PROJECT_ID \ --region $NEW_REGION_LOCATION \ --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=$APIGEE_ENDPOINT,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh
如您從這項指令中看到的,機器類型為
e2-medium
。這些 VM 執行 Debian 12,並有 20 GB 的磁碟。startup-script.sh
指令碼會設定 MIG,將負載平衡器的連入流量轉送至 Apigee 執行個體。 - 執行下列指令來建立代管執行個體群組:
gcloud compute instance-groups managed create $MIG_NAME \ --project $PROJECT_ID --base-instance-name apigee-mig \ --size 2 --template $MIG_NAME --region $NEW_REGION_LOCATION
- 執行下列指令,為群組設定自動調度資源:
gcloud compute instance-groups managed set-autoscaling $MIG_NAME \ --project $PROJECT_ID --region $NEW_REGION_LOCATION --max-num-replicas 3 \ --target-cpu-utilization 0.75 --cool-down-period 90
- 執行下列指令,定義具名通訊埠:
gcloud compute instance-groups managed set-named-ports $MIG_NAME \ --project $PROJECT_ID --region $NEW_REGION_LOCATION --named-ports https:443
- 執行下列指令,建立執行個體範本。
- 取得正式版 Apigee 負載平衡器的後端服務名稱:
gcloud compute backend-services list --project=$PROJECT_ID
- 使用下列指令將 MIG 新增至後端服務:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --project $PROJECT_ID --instance-group $MIG_NAME \ --instance-group-region $NEW_REGION_LOCATION \ --balancing-mode UTILIZATION --max-utilization 0.8 --global
將 BACKEND_SERVICE_NAME 改為後端服務名稱。
測試最終設定
呼叫 API Proxy。請參閱部署範例 Proxy。
新增區域
在 Apigee 環境中新增多個區域,可為 API 提供高可用性、更高容量和更低延遲。多區域部署作業支援高可用性,因為 XLB 會檢查每個區域的健康狀態,因此不需要手動容錯移轉。如果多個區域同時提供相同的 API,容量就會增加。此外,如果 API 用戶端位於多個區域,從距離用戶端較近的區域提供 API 服務,有助於縮短延遲時間並提升效能。
範例:多地區部署可提升可用性、容量和延遲時間
在雙主動式多區域部署中,流量會同時從兩個區域提供服務。 如「步驟 8:設定路由」一節的「外部路由 (MIG)」分頁中「步驟 8e(3)」所述,您要為每個區域的 MIG,在同一個外部 HTTPS 負載平衡器 (XLB) 中新增後端服務。詳情請參閱「 為新地區建立代管執行個體群組 (MIG)」。
除非要求數量超過特定後端設定的限制,否則 XLB 會為每個要求選擇最接近用戶端的區域。如要進一步瞭解外部負載平衡器如何路由傳送流量,請參閱「 利用全域負載平衡進行應用程式容量最佳化」一文。
為即付即用方案新增區域
採用Pay-as-you-go定價模式時,您可以為環境設定 Apigee 閘道節點數下限。這樣一來,就能確保區域一律以額外容量運作,以便在區域發生故障時立即支援容錯移轉流量。
設定 Apigee 閘道節點數量下限
如果您能透過 2 個有效區域 (各含 4 個 Apigee 閘道節點) 處理所有正常 API 流量,則每個區域至少應有 8 個節點。這是為了立即支援一個區域的損失。如要進一步瞭解如何判斷處理 API 流量所需的節點數量,請參閱「 關於 Apigee 節點」。請注意,節點數量下限是依環境設定,但會依區域強制執行。舉例來說,如果您將最小值設為 8,則每個區域至少會有 8 個節點。
費用
在上述範例中,您至少需要執行 16 個 Apigee 閘道節點 (8 個節點 x 2 個區域),因此會產生相關費用。 節點數量最多會自動增加到上限,以處理額外流量,因此費用可能會增加。
從區域中移除 Apigee
如要停止使用 Apigee 執行個體處理 API 流量,請按照下列步驟操作,確保服務不中斷 (API 零停機時間):
- 在後端服務中啟用連線排除功能。連線排除是一項程序,可確保後端服務中的後端遭到移除時,系統有充足的時間能夠完成處理中的現有要求。
- 如果 Cloud DNS 已設定為透過加權循環轉送政策,將流量轉送至這個 Apigee 區域,請移除該 DNS 設定,詳情請參閱「管理 DNS 轉送政策和健康狀態檢查」。
- 從後端服務中分離 MIG 後端。這樣一來,加上連線排除功能,即可確保 Apigee 執行個體不會收到任何新流量,但允許完成任何執行中的要求。
- 刪除 Apigee 執行個體和對應的 MIG。請參閱刪除執行個體。