您正在查看 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
問題
Apigee 與 Private Service Connect (PSC) 連線的南向目標服務之間的網路連線問題。
錯誤訊息
如果 Apigee 與目標服務之間發生網路連線問題或 TCP 逾時,系統會顯示 503
錯誤回應,並在您建立偵錯工作階段時顯示類似下方的錯誤。
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}
可能的原因
原因 | 說明 |
服務附件和 Apigee 執行個體位於不同區域 | Apigee 執行個體區域和服務附件區域不同。 |
目標專案中缺少 PSC 子網路的輸入防火牆規則 | 在目標專案中,請確認有輸入防火牆規則,以便允許 PSC 子網路範圍的 IP 位址和通訊埠。 |
目標專案中的服務附件設定有誤 | 驗證目標專案中的服務附件。 |
Apigee 中端點連結的狀態不正確 | 在 Apigee 上驗證端點附件。 |
在 TargetEndpoint 和 ILB 中設定的通訊埠不符 | 請確認 API 代理程式中的 TargetEndpoint 使用與目標專案中內部負載平衡器 (ILB) 公開的相同通訊埠。 |
原因:服務附件和 Apigee 執行個體位於不同區域
診斷
-
請使用下列任一方法查看 Apigee 執行個體區域:
- 使用傳統版 Apigee UI:
- 登入 Apigee UI。
- 依序點選「管理」>「執行個體」。
- 按一下執行個體。
- 在「Instance details」窗格中,查看「Runtime hosting location」。
- 在 Google Cloud 控制台中使用 Apigee UI:
-
前往 Google Cloud 控制台的「Apigee Instances」頁面。
- 按一下執行個體。
- 在「Instance details」窗格中,查看「Runtime hosting location」。
-
- 使用
API 呼叫:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
其中 ORG_NAME 是機構名稱。例如:
example-apigee-support
。系統會傳回類似以下的內容。執行階段代管位置是指下方
location
顯示的值。例如:asia-northeast1
。"instances": [ { "name": "asia-northeast1", "location": "asia-northeast1", "host": "10.117.0.2", "port": "443", "createdAt": "1628150049760", "lastModifiedAt": "1682139265367", "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1", "state": "ACTIVE", "peeringCidrRange": "SLASH_20", "runtimeVersion": "1-9-0-apigee-25", "consumerAcceptList": [ "example-apigee-support", "example-neg-project" ], "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o" }
- 使用傳統版 Apigee UI:
-
使用
API 呼叫檢查「Endpoint attachment」區域:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
其中:
- ORG_NAME 是機構名稱。例如:
example-apigee-support
。 - ENDPOINT_ATTACHMENT_NAME 是端點附件的名稱。例如:
example-ea
。
系統會傳回類似以下的內容。端點附件區域是指下方
location
顯示的值。例如:asia-northeast1
。{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
- ORG_NAME 是機構名稱。例如:
-
使用 Cloud 控制台查看服務附件的區域:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 查看位置的「區域」 欄。
-
解決方法
請確認 Apigee 例項、端點連結和服務連結區域相同。例如:asia-northeast1
。
如
限制所述,系統不支援全球存取權。也就是說,服務附件和端點附件必須位於相同的區域。舉例來說,如果您的 Apigee 執行個體位於 us-west1
區域,您就無法將位於 us-east2
或其他區域的服務連結至該執行個體。
如果區域不同,就會出現 Apigee 與目標服務之間的連線問題。
原因:目標專案中缺少 PSC 子網路的輸入防火牆規則
診斷
在目標專案中檢查防火牆規則,確認是否允許 PSC 子網路範圍的 IP 位址連線至目標服務:
-
在 Google Cloud 控制台中,前往「Firewall」頁面。
-
在「VPC 防火牆規則」窗格中,確認是否有下列範例中的規則:
- 方向:Ingress
- 相符時執行的動作:允許
- 來源篩選器:IPv4/IPv6 範圍
- IP 範圍:PSC 子網路 (
ipCidrRange
) 的 IP 位址範圍,您可以使用下列 gcloud 指令來取得 PSC 子網路:gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
其中:
-
PSC_SUBNET_NAME 是 PCS 子網路名稱。例如:
pscsub
。 -
REGION 是位置。例如:
asia-northeast1
。
系統會傳回類似以下的內容:
creationTimestamp: '2023-04-19T03:33:29.371-07:00' fingerprint: 1JPKY66teTg= gatewayAddress: 10.10.0.1 id: '5645967773396008342' ipCidrRange: 10.10.0.0/24 kind: compute#subnetwork name: pscsub network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE_SERVICE_CONNECT ....
-
PSC_SUBNET_NAME 是 PCS 子網路名稱。例如:
- 通訊協定和通訊埠:這些項目應根據目標服務設定列出。
例如:

解決方法
如果沒有防火牆規則,請按照「 建立服務附件」一文的步驟 2 建立 PSC 子網路。
原因:目標專案中的服務連結設定有誤
診斷
請使用下列任一方法檢查「服務附件」區域:
- 使用 Cloud 控制台:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 按一下「已發布的服務」。
- 按一下所需服務。
- 查看位置的「區域」 列。
-
- 使用
gcloud command
:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
其中:
-
SERVICE_ATTACHMENT 是服務連結名稱。例如:
gkebackend
。 -
REGION 是位置。例如:
asia-northeast1
。
系統會傳回類似以下的內容:
connectedEndpoints: - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea pscConnectionId: '6816512648152066' status: ACCEPTED connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2023-04-19T05:09:09.941-07:00' description: '' enableProxyProtocol: false fingerprint: 0BZDAZ3zDCs= id: '4503680255626733322' kind: compute#serviceAttachment name: gkebackend natSubnets: - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub pscServiceAttachmentId: high: '21570167574103266' low: '4503680255626733322' region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz
-
SERVICE_ATTACHMENT 是服務連結名稱。例如:
解決方法
-
請確認
connectedEndpoints.endpoint
值參照 Apigee 的租用戶專案,並確認其狀態為ACCEPTED
。您可以使用 Apigee Organizations API 找出租用戶專案:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
其中 ORG_NAME 是機構名稱。例如
example-apigee-support
。系統會傳回類似以下的內容。ID 位於名為
apigeeProjectId
的欄位中。例如xb363132eb41cb643p-tp
。{ "name": "example-apigee-support", "createdAt": "1628148440954", "lastModifiedAt": "1650563608527", "environments": [ "dev" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "asia-northeast1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "CERTIFICATE_NUMBER", "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1", "projectId": "example-apigee-support", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "xb363132eb41cb643p-tp" }
-
請確認服務連結與端點連結之間的連線,如
南向網路模式,檢查及管理連結連線所述。在步驟 1 的 UI 中,請確認下列事項:
-
「子網路」列會參照 PSC 子網路。例如:
pscsub
。 - 「Target」列會參照目標後端的正確內部負載平衡器。
-
「子網路」列會參照 PSC 子網路。例如:
原因:Apigee 中的端點連結狀態不正確
診斷
使用 API 呼叫查看 Apigee 上的端點附件:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
其中:
-
ORG_NAME 是機構名稱。例如
example-apigee-support
。 -
ENDPOINT_ATTACHMENT_NAME 是端點附件的名稱。例如:
example-ea
。
系統會傳回類似以下的內容:
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
解決方法
請確認以下事項:
- 「
state
」這個價格ACTIVE
- 「
connectionState
」這個價格ACCEPTED
-
serviceAttachment
是指正確的目標專案和服務附件名稱
原因:在 TargetEndpoint 和 ILB 中設定的通訊埠不符
診斷
- 在目標專案中,使用 Cloud 控制台找出轉送規則公開的連接埠:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 按一下「已發布的服務」。
- 按一下所需服務。如以下範例所示,會公開 80 號通訊埠。
-
解決方法
請確認 API proxy 的 TargetEndpoint
中的通訊埠與 80 相同。
如要確認這項資訊,請前往 API Proxy 並驗證 TargetEndpoint
網址:
- 使用傳統版 Apigee UI:
- 登入 Apigee UI。
- 依序按一下「Develop」>「API Proxies」
- 按一下 Proxy。
- 按一下「Develop」。
- 請在 XML 窗格中檢查下列項目:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- 在 Google Cloud 控制台中使用 Apigee UI:
-
前往 Google Cloud 控制台的「Apigee」Apigee頁面。
- 在「Proxy 開發」區域中,按一下「API Proxy」。
- 按一下 Proxy。
- 按一下「Develop」。
- 請在 XML 窗格中檢查下列項目:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
必須收集診斷資訊
如果問題在您按照上述操作說明後仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:
- Apigee 組織
- 發生問題的環境和 API Proxy
- 下載的偵錯工作階段 (會提供上述所有資訊)
- 使用的端點連結
- 目標專案和服務附加元件