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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

סרטונים

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

וידאו התיאור
פתרון בעיות ופתרון בעיות בשירות 503 לא זמין – NoActiveTargets מידע על הנושאים הבאים:
  • החשיבות של שרתי יעד ושל מעקב תקינות
  • פתרון בעיות ופתרון בעיות של שירות 503 בזמן אמת לא זמין - שגיאת NoActiveTargets

תיאור הבעיה

אפליקציית הלקוח מקבלת את קוד הסטטוס 503 של תגובת HTTP עם ההודעה Service Unavailable וקוד השגיאה NoActiveTargets של בקשות שרת ה-API של שרת ה-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 לא זמין עם קוד השגיאה NoActiveTargets בדרך כלל מתועדת כשמשתמשים בשרת יעד אחד או יותר בהגדרת נקודת הקצה (endpoint) של היעד ב-API של שרת ה-proxy.

בטבלה הבאה מפורטות הסיבות האפשריות לשגיאה 503 Service Unavailable (שירות 503 לא זמין) עם קוד השגיאה NoActiveTargets:

סיבה התיאור מי יכול לבצע את השלבים לפתרון בעיות
שרת היעד מושבת שרת היעד שצוין בהגדרה של נקודת הקצה (endpoint) של היעד מושבת. משתמשי Edge הציבוריים והפרטיים
שגיאות חיבור בגלל רזולוציית DNS שגויה פענוח ה-DNS של שרת היעד הוביל ליצירת כתובות IP שגויות, שהובילו לשגיאות בחיבור. משתמשי ענן פרטי של Edge
שגיאות התחברות בעיות ברשת או בקישוריות מונעות מהלקוח להתחבר לשרת. משתמשי ענן פרטי של Edge
כתובת אימייל חלופית שגויה של מארח יעד מארח שרת היעד שצוין שגוי או מכיל תווים לא רצויים (כמו רווח). משתמשי Edge הציבוריים והפרטיים
שליחת לחיצת יד של SSL נכשלה לחיצת היד של TLS/SSL נכשלה בין הלקוח לשרת. משתמשי Edge הציבוריים והפרטיים
בדיקות תקינות שנכשלו בדיקות תקינות שהוגדרו לבדיקת התקינות של שרת היעד עלולות להיכשל מסיבה כלשהי. משתמשי ענן פרטי של Edge

הסיבה: שרת היעד מושבת

אם כל שרתי היעד שצוינו בהגדרה של נקודת הקצה של היעד מושבתים, תתקבל התשובה 503 Service Unavailable (שירות לא זמין 503) עם קוד השגיאה NoActiveTargets.

אבחון

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

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

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

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

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

    כדי למצוא את ההגדרה באמצעות ממשק המשתמש של Edge:

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

      לדוגמה, מקלידים את השם של שרת היעד demo-target ותראו את ההגדרה שלו כמו בדוגמה הבאה:

      השם של שרת היעד וסטטוס מופעל/מושבת

      כאן שמים לב שלשרת היעד דמו-יעד יש כינוי מארח, יציאה # ו-SSL. עם זאת, שרת היעד עצמו מושבת . הסטטוס הזה מסומן על ידי הרכיב מופעל שמופיע באפור.

    ממשק API של Edge

    כך מוצאים את ההגדרה באמצעות Edge API:

    משתמשים ב- Get 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 מראה שהיעד הדמוגרפי של שרת היעד מושבת כי הרכיב IsEnabled מוגדר כ-False.

    מאחר ששרת היעד מושבת, מעבד ההודעות ישלח באופן מיידי את השירות 503 לא זמין עם קוד השגיאה NoActiveTargets כתגובה ללקוח.

רזולוציה

מוודאים ששרתי היעד הספציפיים שבהם נעשה שימוש בהגדרת היעד של נקודת הקצה בשרת ה-API של ה-API מופעלים תמיד.

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

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

ממשק API של Edge

משתמשים ב- Update a 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 Monitoring אפשר לבודד במהירות אזורים בעייתיים כדי לאבחן שגיאות, ביצועים וזמן אחזור ואת המקור שלהן, כמו אפליקציות למפתחים, שרתי proxy של API, יעדים לקצה העורפי או פלטפורמת ה-API.

שלב תרחיש לדוגמה שמדגים איך לפתור בעיות של 5xx בממשקי ה-API באמצעות API Monitoring. לדוגמה, יכול להיות שתרצו להגדיר התראה לקבלת התראה כשמספר השגיאות של messaging.adaptors.http.flow.NoActiveTargets חורג מסף מסוים.

צריך לאסוף פרטי אבחון

אם הבעיה נמשכת גם אחרי שביצעת את ההוראות שלמעלה, עליך לאסוף את פרטי האבחון הבאים. אפשר לפנות אל התמיכה של Apigee ולשתף אותה:

  1. אם את/ה משתמש/ת ב-Public Cloud, עליך לספק את הפרטים הבאים:
    1. שם הארגון
    2. שם הסביבה
    3. שם שרת proxy ל-API
    4. השלמה של פקודת curl לשחזור השגיאה
    5. קובץ מעקב המכיל את הבקשות עם שירות 503 לא זמין עם קוד השגיאה NoActiveTargets
  2. אם אתם משתמשים בענן פרטי, עליכם לספק את הפרטים הבאים:
    1. זוהתה הודעת השגיאה המלאה
    2. שם הסביבה
    3. חבילת שרת proxy ל-API
    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)