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

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

ویدیوها

برای اطلاعات بیشتر در مورد خطاهای 503 به ویدیوهای زیر مراجعه کنید:

ویدیو توضیحات
عیب یابی و رفع مشکل 503 Service Unavailable - NoActiveTargets با موارد زیر آشنا شوید:
  • اهمیت سرورهای هدف و مانیتورهای سلامت
  • عیب یابی و حل یک سرویس بلادرنگ 503 در دسترس نیست - خطای 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 503 Service Unavailable با کد خطا NoActiveTargets معمولاً زمانی مشاهده می شود که از یک یا چند سرور هدف در پیکربندی نقطه پایانی هدف در پروکسی API خود استفاده می کنید.

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

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

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

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

تشخیص

  1. با استفاده از یکی از روش های زیر، نام سرور مورد نظر مورد استفاده در پیکربندی نقطه پایانی هدف خاص پروکسی API خراب را تعیین کنید:
    1. اگر یک نقطه پایان هدف واحد وجود دارد، آن نقطه پایان هدف خاص را بررسی کنید.
    2. اگر چندین نقطه پایانی هدف وجود دارد و اگر مطمئن نیستید کدام یک سرور هدف را غیرفعال کرده است، مراحل زیر را دنبال کنید:
      1. جلسه ردیابی را فعال کنید، تماس API را برقرار کنید و مشکل را تکرار کنید - 503 Service Unavailable.
      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

      در اینجا توجه کنید که هدف آزمایشی سرور هدف دارای نام مستعار میزبان، پورت # و SSL فعال است. با این حال، خود سرور هدف غیرفعال است، که با خاکستری شدن عنصر ENABLE مشخص می شود.

    Edge API

    برای دریافت تعریف با استفاده از 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>
              

    خروجی Apigee API نشان می دهد که هدف آزمایشی سرور هدف غیرفعال است زیرا عنصر IsEnabled روی false تنظیم شده است.

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

قطعنامه

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

رابط کاربری لبه

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

Edge API

از Update a Target Server API برای به‌روزرسانی تعریف سرور هدف استفاده کنید و اطمینان حاصل کنید که IsEnabled در بار درخواست 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 Monitoring شما را قادر می‌سازد تا مناطق مشکل‌دار را به سرعت جدا کنید تا خطاها، عملکرد، و مشکلات تأخیر و منبع آنها، مانند برنامه‌های توسعه‌دهنده، پراکسی‌های API، اهداف باطنی یا پلتفرم API را تشخیص دهید.

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

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

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

  1. اگر کاربر Public Cloud هستید، اطلاعات زیر را ارائه دهید:
    1. نام سازمان
    2. نام محیطی
    3. نام پروکسی API
    4. برای بازتولید خطا، دستور curl را کامل کنید
    5. فایل ردیابی حاوی درخواست‌هایی با سرویس 503 در دسترس نیست با کد خطا NoActiveTargets
  2. اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
    1. پیام خطای کامل مشاهده شد
    2. نام محیطی
    3. بسته پروکسی API
    4. فایل ردیابی حاوی درخواست‌هایی با سرویس 503 در دسترس نیست با کد خطا 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 )