سرویس 503 در دسترس نیست - NoActiveTargets

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

ویدیوها

برای اطلاعات بیشتر در مورد خطاهای ۵۰۳، ویدیوهای زیر را ببینید:

ویدئو توضیحات
عیب‌یابی و رفع خطای ۵۰۳ Service Unavailable - NoActiveTargets در مورد موارد زیر اطلاعات کسب کنید:
  • اهمیت سرورهای هدف و مانیتورهای سلامت
  • عیب‌یابی و حل خطای 503 Service Unavailable - NoActiveTargets در لحظه

علامت

برنامه‌ی کلاینت، کد وضعیت پاسخ HTTP 503 را با پیام Service Unavailable و کد خطای NoActiveTargets برای درخواست‌های پروکسی API دریافت می‌کند.

پیام خطا

پاسخ خطای زیر را مشاهده خواهید کرد:

HTTP/1.1 503 Service Unavailable
  

پیام خطای زیر را در پاسخ HTTP مشاهده خواهید کرد:

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
       }
    }
}
  

علل احتمالی

خطای HTTP با کد خطای ۵۰۳ Service Unavailable و کد خطای NoActiveTargets معمولاً زمانی مشاهده می‌شود که از یک یا چند سرور هدف در پیکربندی نقطه پایانی هدف در API Proxy خود استفاده می‌کنید.

جدول زیر دلایل احتمالی خطای ۵۰۳ Service Unavailable با کد خطای NoActiveTargets را فهرست می‌کند:

علت توضیحات چه کسی می‌تواند مراحل عیب‌یابی را انجام دهد؟
سرور هدف غیرفعال است سرور هدف مشخص شده در پیکربندی نقطه پایانی هدف غیرفعال است. کاربران فضای ابری عمومی و خصوصی Edge
خطاهای اتصال به دلیل وضوح نادرست DNS وضوح DNS سرور هدف منجر به آدرس‌های IP نامناسب شد که منجر به خطاهای اتصال می‌شوند. کاربران فضای ابری خصوصی اج
خطاهای اتصال مشکلات شبکه یا اتصال مانع از اتصال کلاینت به سرور می‌شود. کاربران فضای ابری خصوصی اج
نام مستعار میزبان هدف نادرست میزبان سرور هدف مشخص شده نادرست است یا دارای کاراکترهای ناخواسته (مانند فاصله) است. کاربران فضای ابری عمومی و خصوصی Edge
خطاهای SSL Handshake تبادل اطلاعات TLS/SSL بین کلاینت و سرور ناموفق بود. کاربران فضای ابری عمومی و خصوصی Edge
خرابی‌های بررسی سلامت بررسی‌های سلامت پیکربندی‌شده برای بررسی سلامت سرور هدف ممکن است به دلایلی با شکست مواجه شوند. کاربران فضای ابری خصوصی اج

علت: سرور هدف غیرفعال است

اگر تمام سرورهای هدف مشخص شده در پیکربندی نقطه پایانی هدف غیرفعال باشند، پاسخ خطای ۵۰۳ Service Unavailable با کد خطای NoActiveTargets دریافت خواهید کرد.

تشخیص

  1. با استفاده از یکی از روش‌های زیر، نام سرور هدف مورد استفاده در پیکربندی خاص Target Endpoint مربوط به API Proxy خراب را تعیین کنید:
    1. اگر یک نقطه پایانی هدف واحد وجود دارد، آن نقطه پایانی هدف خاص را بررسی کنید.
    2. اگر چندین نقطه پایانی هدف وجود دارد و اگر مطمئن نیستید کدام یک سرور هدف را غیرفعال کرده است، مراحل زیر را دنبال کنید:
      1. جلسه ردیابی را فعال کنید، فراخوانی API را انجام دهید و مشکل را دوباره ایجاد کنید - سرویس 503 در دسترس نیست.
      2. از مسیر ردیابی، به مسیر Target Request Flow Started بروید و نام نقطه پایانی هدف را مطابق شکل زیر تعیین کنید:
      3. Determining target endpoint name from trace

  2. پس از شناسایی نقطه پایانی هدف، نام سرور هدف مورد استفاده را از پیکربندی نقطه پایانی هدف، همانطور که در مثال زیر نشان داده شده است، دریافت کنید:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    در مثال بالا، یک سرور هدف واحد به نام demo-target وجود دارد.

  3. با استفاده از Edge UI یا فراخوانی Edge API، تعریف هر یک از سرورهای هدف مورد استفاده در نقطه پایانی هدف را دریافت کنید.

    رابط کاربری اج

    برای دریافت تعریف با استفاده از رابط کاربری Edge:

    1. به مسیر Admin > Environments > Target Servers بروید.
    2. محیط خاصی را که در آن خرابی را مشاهده می‌کنید، انتخاب کنید.
    3. برای دریافت تعریف سرور هدف، نام سرور هدف خاص را جستجو کنید.

      برای مثال، نام سرور هدف را demo-target تایپ کنید و تعریف آن را مانند تصویر زیر مشاهده خواهید کرد:

      Target server name and enabled/disabled status

      توجه داشته باشید که سرور هدف demo-target دارای نام مستعار میزبان، شماره پورت و SSL فعال است. با این حال، خود سرور هدف غیرفعال است که با خاکستری شدن عنصر ENABLED نشان داده شده است.

    رابط برنامه‌نویسی کاربردی لبه

    برای دریافت تعریف با استفاده از Edge API:

    برای دریافت تعریف سرور هدف از API Get TargetServer استفاده کنید.

    خروجی تعریف سرور هدف

    <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 تنظیم شده است.

    از آنجایی که سرور هدف غیرفعال است، پردازشگر پیام، بلافاصله خطای ۵۰۳ Service Unavailable را با کد خطای NoActiveTargets به عنوان پاسخ به کلاینت ارسال می‌کند.

وضوح تصویر

مطمئن شوید که سرورهای هدف خاص مورد استفاده در پیکربندی نقطه پایانی هدف پروکسی API شما همیشه فعال هستند.

رابط کاربری اج

  1. به مسیر Admin > Environments > Target Servers بروید.
  2. محیط خاصی را که در آن خرابی را مشاهده می‌کنید، انتخاب کنید.
  3. برای دریافت تعریف آن، نام سرور هدف خاص را جستجو کنید.
  4. سرور هدف خاص را انتخاب کنید و سپس روی ویرایش کلیک کنید.
  5. کادر انتخاب فعال‌شده را علامت بزنید.
  6. روی به‌روزرسانی کلیک کنید.

رابط برنامه‌نویسی کاربردی لبه

از Update a Target Server API برای به‌روزرسانی تعریف سرور هدف استفاده کنید و مطمئن شوید که IsEnabled در payload درخواست API، مطابق شکل زیر، روی true تنظیم شده باشد:

<TargetServer name="demo-target">
  <Host>demo-target.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo>
</TargetServer>
        

اگر مشکل همچنان ادامه داشت، به «اطلاعات تشخیصی مورد نیاز برای جمع‌آوری» بروید.

تشخیص مشکلات با استفاده از نظارت بر API

مانیتورینگ API به شما این امکان را می‌دهد که به سرعت حوزه‌های مشکل‌دار را جدا کنید تا مشکلات خطا، عملکرد و تأخیر و منبع آنها، مانند برنامه‌های توسعه‌دهنده، پروکسی‌های API، اهداف backend یا پلتفرم API را تشخیص دهید.

یک سناریوی نمونه را که نحوه عیب‌یابی مشکلات 5xx با APIهای شما را با استفاده از API Monitoring نشان می‌دهد، قدم به قدم بررسی کنید . برای مثال، ممکن است بخواهید هشداری تنظیم کنید تا وقتی تعداد خطاهای messaging.adaptors.http.flow.NoActiveTargets از یک آستانه خاص فراتر رفت، مطلع شوید.

باید اطلاعات تشخیصی جمع‌آوری کند

اگر مشکل حتی پس از دنبال کردن دستورالعمل‌های بالا همچنان ادامه داشت، لطفاً اطلاعات تشخیصی زیر را جمع‌آوری کنید. با پشتیبانی Apigee تماس بگیرید و آنها را به اشتراک بگذارید:

  1. اگر کاربر فضای ابری عمومی هستید، اطلاعات زیر را ارائه دهید:
    1. نام سازمان
    2. نام محیط
    3. نام پروکسی API
    4. دستور curl را برای بازتولید خطا کامل کنید
    5. فایل ردیابی حاوی درخواست‌هایی با خطای ۵۰۳ Service Unavailable با کد خطای NoActiveTargets
  2. اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
    1. پیام خطای کامل مشاهده شد
    2. نام محیط
    3. بسته پروکسی API
    4. فایل ردیابی حاوی درخواست‌هایی با خطای ۵۰۳ Service Unavailable با کد خطای NoActiveTargets
    5. گزارش‌های دسترسی NGINX

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

    6. گزارش‌های پردازنده پیام

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