503 Dịch vụ không có sẵn – NoActiveTargets

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Video

Hãy xem các video sau đây để biết thêm thông tin về lỗi 503:

Video Mô tả
Khắc phục sự cố và giải quyết lỗi 503 Không có dịch vụ – NoActiveTargets Tìm hiểu về những nội dung sau:
  • Tầm quan trọng của Máy chủ đích và Trình giám sát trạng thái
  • Khắc phục sự cố và giải quyết lỗi 503 Không có dịch vụ – NoActiveTargets theo thời gian thực

Dấu hiệu

Ứng dụng khách nhận được mã trạng thái phản hồi HTTP 503 cùng với thông báo Service Unavailable (Dịch vụ không hoạt động) và mã lỗi NoActiveTargets (Không có mục tiêu đang hoạt động) cho các yêu cầu của proxy API.

Thông báo lỗi

Bạn sẽ thấy phản hồi lỗi sau:

HTTP/1.1 503 Service Unavailable
  

Bạn sẽ thấy thông báo lỗi sau trong phản hồi HTTP:

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

Các nguyên nhân có thể

Phản hồi HTTP 503 Service Unavailable với mã lỗi NoActiveTargets thường xuất hiện khi bạn sử dụng một hoặc nhiều máy chủ đích trong cấu hình điểm cuối đích trong API Proxy.

Bảng sau đây liệt kê những nguyên nhân có thể gây ra phản hồi 503 Service Unavailable (Dịch vụ không hoạt động) với mã lỗi NoActiveTargets:

Nguyên nhân Mô tả Những người có thể thực hiện các bước khắc phục sự cố
Máy chủ đích bị vô hiệu hoá Máy chủ đích được chỉ định trong cấu hình điểm cuối đích bị vô hiệu hoá. Người dùng Edge Public Cloud và Private Cloud
Lỗi kết nối do lỗi phân giải DNS Quy trình phân giải DNS của máy chủ đích dẫn đến các địa chỉ IP không hợp lệ, gây ra lỗi kết nối. Người dùng Edge Private Cloud
Lỗi kết nối Các vấn đề về mạng hoặc kết nối khiến ứng dụng không thể kết nối với máy chủ. Người dùng Edge Private Cloud
Bí danh máy chủ lưu trữ mục tiêu không chính xác Máy chủ lưu trữ đích được chỉ định không chính xác hoặc có các ký tự không mong muốn (chẳng hạn như dấu cách). Người dùng Edge Public Cloud và Private Cloud
Lỗi bắt tay SSL Không bắt tay được TLS/SSL giữa ứng dụng và máy chủ. Người dùng Edge Public Cloud và Private Cloud
Lỗi kiểm tra tình trạng hoạt động Các quy trình kiểm tra tình trạng được định cấu hình để kiểm tra tình trạng của máy chủ đích có thể không thành công vì một số lý do. Người dùng Edge Private Cloud

Nguyên nhân: Máy chủ đích bị tắt

Nếu tất cả các máy chủ đích được chỉ định trong cấu hình điểm cuối đích đều bị vô hiệu hoá, thì bạn sẽ nhận được phản hồi 503 Không có dịch vụ kèm theo mã lỗi NoActiveTargets.

Chẩn đoán

  1. Xác định tên của máy chủ đích đang được dùng trong cấu hình Điểm cuối đích cụ thể của API Proxy không thành công bằng một trong những cách sau:
    1. Nếu chỉ có một điểm cuối mục tiêu, hãy kiểm tra điểm cuối mục tiêu cụ thể đó.
    2. Nếu có nhiều điểm cuối mục tiêu và bạn không chắc chắn điểm cuối nào đã tắt máy chủ mục tiêu, hãy làm theo các bước bên dưới:
      1. Bật phiên theo dõi, thực hiện lệnh gọi API và tái hiện vấn đề – Lỗi 503 Dịch vụ không hoạt động.
      2. Từ dấu vết, hãy chuyển đến Target Request Flow Started (Đã bắt đầu luồng yêu cầu mục tiêu) và xác định tên của điểm cuối mục tiêu như minh hoạ dưới đây:
      3. Xác định tên điểm cuối mục tiêu từ dấu vết

  2. Sau khi xác định điểm cuối đích, hãy lấy tên máy chủ đích được dùng từ cấu hình điểm cuối đích như trong ví dụ bên dưới:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    Trong ví dụ trên, có một máy chủ đích duy nhất có tên là demo-target.

  3. Lấy định nghĩa cho từng máy chủ đích được dùng trong điểm cuối đích bằng cách sử dụng Edge UI hoặc lệnh gọi Edge API.

    Giao diện người dùng Edge

    Cách lấy định nghĩa bằng giao diện người dùng Edge:

    1. Chuyển đến mục Quản trị > Môi trường > Máy chủ mục tiêu.
    2. Chọn môi trường cụ thể mà bạn đang gặp lỗi.
    3. Tìm kiếm tên máy chủ đích cụ thể để nhận định nghĩa về máy chủ đích.

      Ví dụ: nhập tên máy chủ đích demo-target và bạn sẽ thấy định nghĩa của tên máy chủ đó như minh hoạ bên dưới:

      Tên máy chủ đích và trạng thái bật/tắt

      Xin lưu ý rằng máy chủ đích demo-target có một bí danh máy chủ lưu trữ, số cổng và SSL được bật. Tuy nhiên, bản thân máy chủ đích bị vô hiệu hoá , điều này được biểu thị bằng việc phần tử ENABLED bị chuyển sang màu xám.

    Edge API

    Cách lấy định nghĩa bằng Edge API:

    Sử dụng API Get TargetServer để lấy định nghĩa về máy chủ đích.

    Đầu ra định nghĩa máy chủ đích

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

    Đầu ra API Apigee cho thấy máy chủ đích demo-target đang ở trạng thái đã tắt vì phần tử IsEnabled được đặt thành false.

    Vì máy chủ đích bị vô hiệu hoá, nên Trình xử lý thông báo sẽ gửi ngay 503 Không có dịch vụ kèm theo mã lỗi NoActiveTargets làm phản hồi cho ứng dụng khách.

Độ phân giải

Đảm bảo rằng các máy chủ mục tiêu cụ thể được dùng trong cấu hình điểm cuối mục tiêu của API Proxy luôn được bật.

Giao diện người dùng Edge

  1. Chuyển đến mục Quản trị > Môi trường > Máy chủ mục tiêu.
  2. Chọn môi trường cụ thể mà bạn đang gặp lỗi.
  3. Tìm kiếm tên máy chủ đích cụ thể để xem định nghĩa của tên đó.
  4. Chọn máy chủ mục tiêu cụ thể, rồi nhấp vào Chỉnh sửa.
  5. Chọn hộp đánh dấu Đã bật.
  6. Nhấp vào Cập nhật.

Edge API

Sử dụng Update a Target Server API (Cập nhật API Máy chủ mục tiêu) để cập nhật định nghĩa máy chủ mục tiêu và đảm bảo rằng IsEnabled được đặt thành true trong tải trọng yêu cầu của API như minh hoạ dưới đây:

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

Nếu vấn đề vẫn tiếp diễn, hãy chuyển đến phần Thông tin chẩn đoán cần thu thập.

Chẩn đoán vấn đề bằng tính năng giám sát API

Tính năng Giám sát API cho phép bạn nhanh chóng cô lập các khu vực có vấn đề để chẩn đoán lỗi, hiệu suất và các vấn đề về độ trễ cũng như nguồn của các vấn đề đó, chẳng hạn như ứng dụng của nhà phát triển, proxy API, mục tiêu phụ trợ hoặc nền tảng API.

Xem xét một kịch bản mẫu minh hoạ cách khắc phục các vấn đề 5xx với API bằng tính năng Giám sát API. Ví dụ: bạn có thể muốn thiết lập một cảnh báo để nhận được thông báo khi số lượng lỗi messaging.adaptors.http.flow.NoActiveTargets vượt quá một ngưỡng cụ thể.

Phải thu thập thông tin chẩn đoán

Nếu vấn đề vẫn tiếp diễn ngay cả sau khi bạn làm theo hướng dẫn ở trên, vui lòng thu thập thông tin chẩn đoán sau. Liên hệ và chia sẻ những thông tin đó với Nhóm hỗ trợ Apigee:

  1. Nếu bạn là người dùng Đám mây công cộng, hãy cung cấp những thông tin sau:
    1. Tên tổ chức
    2. Tên môi trường
    3. Tên Proxy API
    4. Hoàn tất lệnh curl để tái tạo lỗi
    5. Tệp theo dõi chứa các yêu cầu có lỗi 503 Không có dịch vụ với mã lỗi NoActiveTargets
  2. Nếu bạn là người dùng Đám mây riêng tư, hãy cung cấp những thông tin sau:
    1. Thông báo lỗi hoàn chỉnh đã quan sát được
    2. Tên môi trường
    3. Gói API Proxy
    4. Tệp theo dõi chứa các yêu cầu có lỗi 503 Không có dịch vụ với mã lỗi NoActiveTargets
    5. Nhật ký truy cập NGINX

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

    6. Nhật ký của Trình xử lý thông báo

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