503 שירות לא זמין - NoActiveTargets

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

סרטונים

מומלץ לצפות בסרטונים הבאים כדי לקבל מידע נוסף על שגיאות 503:

וידאו תיאור
פתרון בעיות ופתרון בעיות מסוג 503 Service Unavailable – NoActiveTargets למידע על הנושאים הבאים:
  • החשיבות של שרתי יעד ומעקב בריאות
  • פתרון בעיות ופתרון בעיה מסוג 503 שירות בזמן אמת לא זמין - שגיאת 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.

אבחון

  1. קביעת השם של שרת היעד שבשימוש בנקודת הקצה הספציפית של היעד הגדרת שרת ה-proxy ל-API שנכשלו באחת מהדרכים הבאות:
    1. אם יש נקודת קצה אחת כיעד, בודקים את נקודת הקצה הספציפית הזו.
    2. אם יש כמה נקודות קצה (endpoints) של יעדים ולא בטוחים איזו מהן השביתה את שרת היעד, פועלים לפי השלבים הבאים:
      1. מפעילים את סשן המעקב, מבצעים את הקריאה ל-API ומשחזרים את הבעיה – שירות 503 לא זמין.
      2. ברשימת המעקב, עוברים אל תחילת תהליך היעד של הבקשה וקובעים את השם של נקודת הקצה של היעד, כפי שמוצג בהמשך:
      3. קביעת השם של נקודת הקצה כיעד לפי המעקב

  2. אחרי שזיהיתם את נקודת הקצה (endpoint) של היעד, מקבלים את שם שרת היעד כפי שהוא מוגדר מההגדרה של נקודת הקצה של היעד כפי שמוצג בדוגמה הבאה:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    בדוגמה שלמעלה יש שרת יעד אחד שנקרא demo-target.

  3. הצגת ההגדרה של כל אחד משרתי היעד שמשמשים בנקודת הקצה של היעד באמצעות ממשק המשתמש של Edge או קריאה ל-Edge API.

    ממשק המשתמש של Edge

    כדי לקבל את ההגדרה דרך ממשק המשתמש של Edge:

    1. עוברים לקטע ניהול > סביבות > שרתי היעד.
    2. בוחרים את הסביבה הספציפית שבה רואים את הכשל.
    3. מחפשים את השם הספציפי של שרת היעד כדי לקבל את ההגדרה של שרת היעד.

      לדוגמה, מקלידים את שם שרת היעד 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

  1. עוברים לקטע ניהול > סביבות > שרתי היעד.
  2. בוחרים את הסביבה הספציפית שבה רואים את הכשל.
  3. מחפשים את השם הספציפי של שרת היעד כדי לקבל את ההגדרה שלו.
  4. בוחרים את שרת היעד הספציפי ולוחצים על Edit (עריכה).
  5. מסמנים את התיבה Enabled.
  6. לוחצים על עדכון.

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:

  1. אם אתם משתמשים בענן ציבורי, עליכם לספק את הפרטים הבאים:
    1. שם הארגון
    2. שם הסביבה
    3. שם ה-API של ה-Proxy
    4. צריך להשלים את פקודת ה-curl כדי לשחזר את השגיאה
    5. קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד שגיאה NoActiveTargets
  2. אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:
    1. זוהה הודעת שגיאה מלאה
    2. שם הסביבה
    3. חבילת API Proxy
    4. קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד שגיאה NoActiveTargets
    5. יומני גישה ל-NGINX

      (/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log)

    6. יומנים של מעבד ההודעות

      (/opt/apigee/var/log/edge-message-processor/logs/system.log)