הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.
לעיון במסמכי התיעוד של
Apigee Edge
תסמינים
בקשות API נכשלות עם השגיאה TARGET_CONNECT_HOST_NOT_REACHABLE.
הודעות שגיאה
אם הבעיה הזו מתרחשת, בקשות ה-API ייכשלו עם קוד סטטוס התגובה HTTP 503 והשגיאה הבאה:
{"fault":{"faultstring":
"Unable to resolve host invalid-target-host","detail":
{"errorcode":"protocol.http.NoResolvedHost","reason":
"TARGET_CONNECT_HOST_NOT_REACHABLE"}}}סיבות אפשריות
אלה הסיבות האפשריות לתופעה שצוינה למעלה:
| מטרה | תיאור | פלטפורמה |
| המארח של שרת היעד שצוין שגוי או מכיל תווים לא חוקיים | הבעיה הזו יכולה לקרות אם שם המארח של שרת היעד שצוין ב-proxy ל-API שגוי או מכיל תווים לא חוקיים. | Apigee, Apigee Hybrid |
| לא הוגדר קישור DNS בין רשתות שכנות (peering) | הבעיה הזו יכולה להתרחש כש-Apigee לא מצליח לפענח את שם הדומיין אם לא מוגדרת ב-Apigee פריסת DNS. | Apigee |
הסיבה: המארח של שרת היעד שצוין שגוי או מכיל תווים לא חוקיים
אבחון
-
שולחים בקשת API לשרת ה-proxy הרלוונטי של ה-API:
curl -ik https://dev.example.com/dns-peering-example HTTP/2 503 content-type: application/json x-request-id: *** content-length: 169 date: Thu, 02 Nov 2023 04:31:43 GMT via: 1.1 google alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
ובודקים את הודעת התשובה:
{"fault":{"faultstring": "Unable to resolve host invalid-target-host","detail": {"errorcode":"protocol.http.NoResolvedHost","reason": "TARGET_CONNECT_HOST_NOT_REACHABLE"}}} -
אם התשובה מכילה את סיבת השגיאה
TARGET_CONNECT_HOST_NOT_REACHABLE, אז היא קשורה לסיבה הזו.
רזולוציה
- בודקים את ההגדרה של ה-proxy ל-API ומחפשים את שם המארח של היעד שהוגדר:
- אם שם המארח של היעד שצוין לא תקין או מכיל תווים לא תקינים, צריך לתקן אותו בהתאם, ליצור גרסה חדשה של ה-proxy ולפרוס את ה-proxy.
הסיבה: לא הוגדר שיוך DNS
אבחון
- בודקים אם הארגון ב-Apigee נמצא ב-peering עם רשת VPC על ידי הפעלת ה-API הבא של Apigee:
TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG" | jq .authorizedNetwork
לדוגמה, כדי לקבוע אם הפירינג של ה-VPC מופעל, בודקים אם מאפיין התגובה
authorizedNetworkקיים ומוגדר לו ערך. אם לא, אז לא מופעל VPC peering:TOKEN=$(gcloud auth print-access-token)
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/example-org/" | jq .authorizedNetwork
בדוגמה הזו לתגובה אפשר לראות שהתכונה 'קישור בין רשתות VPC' מופעלת:
"projects/example-org/global/networks/shared-vpc1"
- צריך לוודא עם מפתח ה-proxy ל-API בצד הלקוח אם שם הדומיין של שרת היעד הזה מוגדר באופן פנימי. אם לא, התרחיש הזה לא רלוונטי.
- מחפשים את מזהה הפרויקט ואת הרשת שבהם מתארחת נקודת הקצה של היעד.
רשימה של חיבורי DNS בין רשתות שנוצרו ברשת שלמעלה. פועלים לפי השלבים הבאים בהתאם לשאלה אם הארגון ב-Apigee מחובר לרשת VPC או לא.
קישור בין רשתות VPC שכנות (peering) מופעל
אם בארגון שלכם מופעלת קישוריות VPC, משתמשים בפקודה
peered-dns-domains list:gcloud services peered-dns-domains list --network=NETWORK --project=PROJECT-ID
התוצאה יכולה להיות ריקה אם אין דומיינים של DNS עם קישור, או שהיא יכולה לכלול רשימה של דומיינים של DNS עם קישור. לדוגמה:
NAME DNS_SUFFIX customer-service customer.service.internal. accounts-service accounts.service.internal.
קישור בין רשתות VPC שכנות (peering) לא מופעל
אם בארגון שלכם לא מופעלת אפשרות ה-VPC Peering, אתם יכולים להשתמש ב-Apigee API הבא:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones"
כאשר:
ORGANIZATIONהוא שם הארגון שלכם ב-Apigee.דוגמה לתשובה, שבה שם הארגון הוא
dns-peering-int-4:{ "dnsZones": [ { "name": "organizations/dns-peering-int-4/dnsZones/demo", "description": "latest", "domain": "demo.com", "peeringConfig": { "targetProjectId": "dns-peering-int-4", "targetNetworkId": "default" }, "state": "ACTIVE" }, { "name": "organizations/dns-peering-int-4/dnsZones/dns-peering-int-4", "description": "latest", "domain": "dns-peering-int-4.com", "peeringConfig": { "targetProjectId": "dns-peering-int-4", "targetNetworkId": "default" }, "state": "ACTIVE" } ] }אם התשובה לא כוללת רשומה של DNS peering עבור הסיומת הרלוונטית של ה-DNS, יכול להיות שזו הסיבה לבעיה. פועלים לפי ההוראות שמופיעות בקטע פתרון כדי לפתור את הבעיה.
רזולוציה
- רושמים או זוכרים את סיומת ה-DNS, מזהה הפרויקט והרשת שבהם מתארחת נקודת הקצה של היעד.
יוצרים דומיין DNS מקושר לסיומת ה-DNS.
קישור בין רשתות VPC שכנות (peering) מופעל
אם בארגון שלכם מופעלת שותפות VPC, משתמשים בפקודת
peered-dns-domains creategcloud. שימו לב שהסיומת של ה-DNS צריכה להכיל נקודה בסוף:gcloud services peered-dns-domains create NAME --network=NETWORK --dns-suffix=DNS-SUFFIX. --project=PROJECT-ID
לדוגמה:
gcloud services peered-dns-domains create orders-service --network="shared-vpc1" --dns-suffix="orders.service.internal." --project=service-project
תשובה:
Operation "operations/cpdd.p25-1064980322781-fafa5fe4-b5fe-487e-830d-fff0f9a6200d" finished successfully.
קישור בין רשתות VPC שכנות (peering) לא מופעל
אם בארגון שלכם לא מופעל VPC Peering, צריך ליצור אזור DNS Peering עם אזור DNS פרטי בפרויקט:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/dnsZones?dnsZoneId=DNS_ZONE_ID" \ -d '{ "domain": "DOMAIN", "description": "DESCRIPTION", "peeringConfig": { "targetProjectId": "PRODUCER_PROJECT_ID", "targetNetworkId": "PRODUCER_VPC_NETWORK" } }'כאשר:
-
ORGANIZATIONהוא השם של הארגון שלכם ב-Apigee. -
DNS_ZONE_IDהוא השם של תחום ה-DNS שרוצים ליצור. -
DOMAINהוא שם ה-DNS של האזור המנוהל הזה, למשלexample.com. -
DESCRIPTION: תיאור קצר של תחום ה-DNS. מספר התווים המקסימלי: 1,024 -
PRODUCER_PROJECT_IDהוא הפרויקט שמכיל את רשת ה-VPC של ספק השירות. -
PRODUCER_VPC_NETWORKהיא רשת ה-VPC בפרויקט הלקוח.
-
- עכשיו, שולחים בקשת API לנקודת הקצה של proxy ל-API ומוודאים אם proxy ל-API הצליח לזהות את שם הדומיין של שרת היעד ולתקשר עם שרת היעד.
צריך לאסוף פרטי אבחון
אם הבעיה נמשכת גם אחרי שמבצעים את ההוראות שלמעלה, צריך לאסוף את נתוני האבחון הבאים ואז לפנות אל Cloud Customer Care של Google.
- Google Cloud מזהה הפרויקט
- ארגון Apigee
- גרסה של proxy ל-API
- הרשת שבה נוצר הדומיין הפרטי
- סיומת DNS של הדומיין הפרטי
- הפלט המלא של הפקודה ליצירת דומיין DNS עם שירותי DNS מקבילים