מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
סרטונים
מומלץ לצפות בסרטונים הבאים כדי לקבל מידע נוסף על שגיאות 503:
וידאו | תיאור |
---|---|
פתרון בעיות ופתרון בעיות מסוג 503 Service Unavailable – NoActiveTargets | למידע על הנושאים הבאים:
|
תיאור הבעיה
אפליקציית הלקוח מקבלת את קוד הסטטוס 503 של תשובת HTTP עם הפרמטר ההודעה השירות לא זמין וקוד השגיאה NoActiveTargets לבקשות ה-proxy ל-API.
הודעת שגיאה
תופיע תגובת השגיאה הבאה:
HTTP/1.1 503 Service Unavailable
הודעת השגיאה הבאה תופיע בתגובת ה-HTTP:
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.NoActiveTargets" } } }
גורמים אפשריים
בדרך כלל מזוהה תגובת ה-HTTP 503 Service Unavailable עם קוד השגיאה NoActiveTargets כשמשתמשים בשרת יעד אחד או יותר בהגדרה של נקודת הקצה (endpoint) של היעד ב-API Proxy.
בטבלה הבאה מפורטות הסיבות האפשריות לתגובה 503 Service Unavailable עם קוד השגיאה NoActiveTargets:
סיבה | תיאור | מי יכול לבצע את השלבים לפתרון בעיות |
---|---|---|
שרת היעד מושבת | שרת היעד שצוין בהגדרה של נקודת הקצה של היעד מושבת. | משתמשי Edge בענן הציבורי והפרטי |
שגיאות חיבור עקב רזולוציית DNS שגויה | רזולוציית ה-DNS של שרת היעד גרמה לכתובות IP שגויות שמובילות לשגיאות חיבור. | משתמשי Edge בענן פרטי |
שגיאות התחברות | בעיות ברשת או בקישוריות מונעות מהלקוח להתחבר לשרת. | משתמשי Edge בענן פרטי |
כינוי מארח יעד שגוי | מארח שרת היעד שצוין שגוי או מכיל תווים לא רצויים (כגון רווח). | משתמשי Edge בענן הציבורי והפרטי |
כשלים לחיצת יד של SSL | לחיצת היד של TLS/SSL נכשלה בין הלקוח לשרת. | משתמשי Edge בענן הציבורי והפרטי |
כשלים בבדיקת התקינות | בדיקות תקינות שהוגדרו לבדיקת התקינות של שרת היעד עלולות להיכשל מסיבה כלשהי. | משתמשי Edge בענן פרטי |
הסיבה: שרת היעד מושבת
אם כל שרתי היעד שמצוינים בתצורה של נקודת הקצה של היעד מושבתים, מקבלים תגובה מסוג 503 Service Unavailable עם קוד השגיאה NoActiveTargets.
אבחון
- קביעת השם של שרת היעד שבשימוש בנקודת הקצה הספציפית של היעד הגדרת שרת ה-proxy ל-API שנכשלו באחת מהדרכים הבאות:
- אם יש נקודת קצה אחת כיעד, בודקים את נקודת הקצה הספציפית הזו.
- אם יש כמה נקודות קצה (endpoints) של יעדים ולא בטוחים איזו מהן השביתה את שרת היעד, פועלים לפי השלבים הבאים:
- מפעילים את סשן המעקב, מבצעים את הקריאה ל-API ומשחזרים את הבעיה – שירות 503 לא זמין.
- ברשימת המעקב, עוברים אל תחילת תהליך היעד של הבקשה וקובעים את השם של נקודת הקצה של היעד, כפי שמוצג בהמשך:
- אחרי שזיהיתם את נקודת הקצה (endpoint) של היעד, מקבלים את שם שרת היעד כפי שהוא מוגדר מההגדרה של נקודת הקצה של היעד כפי שמוצג בדוגמה הבאה:
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>
בדוגמה שלמעלה יש שרת יעד אחד שנקרא demo-target.
- הצגת ההגדרה של כל אחד משרתי היעד שמשמשים בנקודת הקצה של היעד באמצעות ממשק המשתמש של Edge או קריאה ל-Edge API.
ממשק המשתמש של Edge
כדי לקבל את ההגדרה דרך ממשק המשתמש של Edge:
- עוברים לקטע ניהול > סביבות > שרתי היעד.
- בוחרים את הסביבה הספציפית שבה רואים את הכשל.
- מחפשים את השם הספציפי של שרת היעד כדי לקבל את ההגדרה של שרת היעד.
לדוגמה, מקלידים את שם שרת היעד
demo-target
. ההגדרה שלו מוצגת כך:שימו לב שלשרת היעד demo-target יש כינוי מארח, יציאה מס' ו-SSL מופעלים. עם זאת, שרת היעד עצמו מושבת , ואם הרכיב מופעל מופיע באפור.
API של Edge
כדי לקבל את ההגדרה באמצעות Edge API:
אפשר להשתמש ב שימוש ב-TargetServer API כדי לקבל את ההגדרה של שרת היעד.
פלט הגדרת שרת היעד
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
הפלט של ה-API של Apigee מראה ש-demo-target של שרת היעד מושבת כי הרכיב IsEnabled מוגדר כ-False.
מכיוון ששרת היעד מושבת, מעבד ההודעות ישלח שירות 503 לא זמין עם קוד השגיאה NoActiveTargets מיד בתור אל הלקוח.
רזולוציה
מוודאים ששרתי היעד הספציפיים שבהם נעשה שימוש בהגדרה של נקודת הקצה (endpoint) של ה-API שרתי ה-proxy תמיד מופעלים.
ממשק המשתמש של Edge
- עוברים לקטע ניהול > סביבות > שרתי היעד.
- בוחרים את הסביבה הספציפית שבה רואים את הכשל.
- מחפשים את השם הספציפי של שרת היעד כדי לקבל את ההגדרה שלו.
- בוחרים את שרת היעד הספציפי ולוחצים על Edit (עריכה).
- מסמנים את התיבה Enabled.
- לוחצים על עדכון.
API של Edge
אפשר להשתמש ב צריך לעדכן את Target Server API כדי לעדכן את ההגדרה של שרת היעד ולוודא הערך IsEnabled מוגדר כ-true במטען הייעודי (payload) של הבקשה של ה-API, כפי שמוצג בהמשך:
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>true</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>
אם הבעיה עדיין נמשכת, עוברים אל נדרש איסוף של פרטי האבחון.
אבחון בעיות באמצעות מעקב אחר API
מעקב API מאפשר לבודד בעיות כדי לאבחן במהירות בעיות של שגיאות, ביצועים וזמן אחזור ואת המקור שלהן, למשל אפליקציות, שרתי proxy ל-API, יעדים לקצה העורפי או פלטפורמת ה-API.
תרחיש לדוגמה
שמדגים איך לפתור בעיות מסוג 5xx עם ממשקי ה-API שלכם באמצעות API Monitoring. לדוגמה,
מומלץ להגדיר התראה ולקבל הודעה כשמספר הmessaging.adaptors.http.flow.NoActiveTargets
כשלים חורגים מסף מסוים.
חובה לאסוף פרטי אבחון
אם הבעיה נמשכת גם לאחר ביצוע ההוראות שלמעלה, יש לאסוף את הפרטים הבאים פרטי אבחון. יוצרים קשר ומשתפים אותם עם התמיכה של Apigee:
- אם אתם משתמשים בענן ציבורי, עליכם לספק את הפרטים הבאים:
- שם הארגון
- שם הסביבה
- שם ה-API של ה-Proxy
- צריך להשלים את פקודת ה-curl כדי לשחזר את השגיאה
- קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד שגיאה NoActiveTargets
- אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:
- זוהה הודעת שגיאה מלאה
- שם הסביבה
- חבילת API Proxy
- קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד שגיאה NoActiveTargets
- יומני גישה ל-NGINX
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
) - יומנים של מעבד ההודעות
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)