Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Triệu chứng
Ứng dụng sẽ nhận được mã trạng thái HTTP 502 kèm theo thông báo "Bad Gateway" (Cổng vào lỗi) dưới dạng phản hồi cho lệnh gọi API.
Mã trạng thái HTTP 502 có nghĩa là máy khách không nhận được phản hồi hợp lệ từ các máy chủ phụ trợ thực sự đáp ứng yêu cầu.
Thông báo lỗi
Ứng dụng khách nhận được mã phản hồi sau đây:
HTTP/1.1 502 Bad Gateway
Ngoài ra, bạn có thể nhận thấy các thông báo lỗi sau:
<html> <head> <title>Error</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>An error occurred.</h1> <p>Sorry, the page you are looking for is currently unavailable.<br/> Please try again later.</p> </body> </html>
Nếu lỗi xuất phát từ máy chủ phụ trợ, thì bạn có thể thấy như sau. Thông báo lỗi từ phần phụ trợ hoàn toàn phụ thuộc vào cách triển khai phần phụ trợ.
<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html>
Nguyên nhân có thể xảy ra
Sau đây là một số nguyên nhân có thể dẫn đến lỗi 502 Bad Gateway đối với các API chạy qua Apigee Edge:
Nguyên nhân | Mô tả | Hướng dẫn khắc phục sự cố có thể áp dụng cho |
Không có MP trong nhóm | Lỗi này xuất hiện nếu tất cả các MP trong nhóm không hoạt động, tức là các MP này đang hoạt động hoặc đang bận nên không phản hồi. | Người dùng Đám mây riêng tư Edge |
Cấu hình SSL không chính xác giữa Bộ định tuyến và MP | Lỗi này xảy ra nếu ứng dụng thiếu chứng chỉ gốc có chữ ký của CA trong kho lưu trữ tin cậy của Bộ định tuyến của Edge. | Người dùng Đám mây riêng tư Edge |
Lỗi từ máy chủ phụ trợ | Lỗi này sẽ được quan sát thấy nếu máy chủ phụ trợ gặp sự cố và gửi phản hồi này. | Người dùng Đám mây công khai và riêng tư của Edge |
Nguyên nhân: Không có MP trong nhóm
Lỗi này sẽ xảy ra nếu Bộ định tuyến thấy rằng tất cả Bộ xử lý thư trong một khu vực/trung tâm dữ liệu nhất định đều không hoạt động (ví dụ: tất cả đều ngừng hoạt động).
Apigee được định cấu hình sao cho lưu lượng truy cập API gửi đến (yêu cầu) trong một khu vực/trung tâm dữ liệu nhất định luôn được định tuyến từ Bộ định tuyến đến Bộ xử lý thông báo (MP) trong cùng một khu vực/trung tâm dữ liệu. Trong một số trường hợp, bạn chỉ cần thiết lập các thành phần Apigee Edge tại một khu vực/trung tâm dữ liệu và cũng có thể thiết lập các thành phần này ở nhiều khu vực/trung tâm dữ liệu. Trong mỗi khu vực/trung tâm dữ liệu sẽ có ít nhất 2 Bộ định tuyến và Bộ xử lý thư được định cấu hình.
Chẩn đoán
- Xác định (các) khu vực/trung tâm dữ liệu nơi yêu cầu API không thực hiện được kèm theo lỗi 502 Bad Gateway (Cổng vào không hợp lệ) nếu có nhiều khu vực/trung tâm dữ liệu. Bạn có thể tìm thấy thông tin này bằng cách xác định khu vực mà người dùng đang gặp phải lỗi 502 hoặc kiểm tra nhật ký Truy cập NGINX trong thư mục
/opt/apigee/var/log/edge-router/nginx/
trên mỗi Bộ định tuyến thuộc các khu vực khác nhau. - Bạn sẽ thấy lỗi sau trong nhật ký lỗi NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_error_log
2019/06/24 15:26:00 [error] 4796#4796: *56357443 no live upstreams while connecting to upstream, client: <Router_IP_address>, server: <HostAlias>, request: "PUT <BasePath> HTTP/1.1", upstream: "http://<ListOfMP-IP_R-MP-Port>/<BasePath>", host: "<HostAlias>"
Trường hợp 1: Tất cả các bộ xử lý tin nhắn đều ngừng hoạt động
- Kiểm tra xem Bộ xử lý thư trong khu vực/trung tâm dữ liệu cụ thể có đang hoạt động hay không.
- Nếu tất cả các Bộ xử lý thư đều ngừng hoạt động, hãy khởi động lại các bộ xử lý đó.
Độ phân giải
Khởi động lại tất cả Bộ xử lý thư bằng lệnh sau:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Trường hợp 2: Tất cả Bộ xử lý tin nhắn đều đang bận xử lý các yêu cầu đang diễn ra
Lỗi này sẽ xảy ra nếu Bộ định tuyến nhận thấy rằng tất cả các Bộ xử lý thông báo trong một khu vực/trung tâm dữ liệu nhất định đều không hoạt động do tất cả đều đang xử lý các yêu cầu đang diễn ra.
- Kiểm tra xem Bộ xử lý thư trong khu vực/trung tâm dữ liệu cụ thể có đang hoạt động hay không.
- Nếu tất cả Bộ xử lý thông báo đều đã được thiết lập và hoạt động, hãy kiểm tra xem(các) Bộ xử lý thông báo có đang bị mức sử dụng CPU cao hay không, sau đó cứ mỗi 30 giây lại tạo 3 tệp kết xuất luồng bằng lệnh sau:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- Nếu(các) Bộ xử lý thư gặp phải vấn đề mức sử dụng bộ nhớ cao, hãy tạo tệp báo lỗi bằng lệnh sau:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - Khởi động lại Bộ xử lý thư bằng lệnh dưới đây. Thao tác này sẽ làm giảm CPU và Bộ nhớ:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Theo dõi các lệnh gọi API để xác nhận xem vấn đề còn tồn tại hay không.
- Liên hệ với Nhóm hỗ trợ API và cung cấp tệp kết xuất luồng, tệp báo lỗi và nhật ký Trình xử lý thư (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) để giúp điều tra nguyên nhân dẫn đến mức sử dụng CPU/bộ nhớ cao.
Nguyên nhân: Cấu hình SSL không chính xác giữa Bộ định tuyến và MP
Chẩn đoán
- Kiểm tra nhật ký truy cập NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). Bạn sẽ thấy phản hồi 502 như sau:_access_log
2019-07-23T12:13:42+03:00 sc-10-254-226-23 10.X.X.X:53634 10.X.X.X:8998 0.000 - - 502 502 189 344 GET <path> curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 <host alias> mp-10-254-226-23-23706-8552529-1 10.129.107.101 - - -1 - - dc-2 gateway-2 green - gateway-2 dc-2 op pilot http -
- Hãy kiểm tra nhật ký lỗi NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
). Bạn sẽ thấy các lỗi như sau:_error_log
2019/07/30 17:02:24 [error] 7691#7691: *11753633 peer closed connection in SSL handshake while SSL handshaking to upstream, client: X.X.X.X, server: <HostAlias>, request: "GET /no-target HTTP/1.1", upstream: "https://X.X.X.X:8998/no-target", host: "<HostAlias>"
- Thông báo này cho thấy sự kiện bắt tay SSL giữa Bộ định tuyến và Bộ xử lý thư không thành công.
- Nếu bạn chú ý kỹ trong thông báo lỗi ở bước 1 và 2 thì cổng # được dùng để giao tiếp với Bộ xử lý thông báo là 8998. Đây là một cổng không an toàn nhưng giao thức là SSL (https). Thông thường, cổng bảo mật # được sử dụng là 8443. Vì cổng không an toàn được sử dụng cho giao tiếp an toàn, cổng này sẽ gây ra lỗi bắt tay SSL.
- Thông thường, điều này có thể xảy ra nếu bạn bỏ lỡ bất kỳ bước nào hoặc đặt bất kỳ giá trị không chính xác nào trong khi định cấu hình SSL giữa Bộ định tuyến và Bộ xử lý thông báo. Hãy tham khảo các bước được nêu tại đây.
Ví dụ: lỗi này có thể xảy ra nếu
- Cổng # được chỉ định là 8998 thay vì 8443 trong
/opt/apigee/customer/application/message-processor.properties as shown below
conf/message-processor-communication.properties+local.http.port=8998
- Các tệp cấu hình Bộ định tuyến trong thư mục
/opt/nginx/conf.d/*
không bị xóa và Bộ định tuyến chưa được khởi động lại trong khi thực hiện cấu hình SSL. Trong trường hợp này, bạn có thể nhận thấy cổng# của Bộ xử lý thư vẫn là 8998 trong tệp cấu hình.
- Cổng # được chỉ định là 8998 thay vì 8443 trong
Độ phân giải
- Đảm bảo tất cả các bước đã nêu trong bài viết Định cấu hình TLS giữa Bộ định tuyến và Trình xử lý thư đều được tuân thủ đúng cách.
- Nếu vấn đề vẫn tiếp diễn, hãy chuyển đến phần Thu thập thông tin chẩn đoán.
Nguyên nhân: Lỗi từ máy chủ phụ trợ
Chẩn đoán
- Nếu lỗi luôn xảy ra, bạn có thể ghi lại dấu vết giao diện người dùng cho các yêu cầu không thành công. Chọn một yêu cầu không thành công và di chuyển qua nhiều giai đoạn trong quá trình theo dõi. Nếu bạn nhận thấy mình nhận được “502 Bad Gateway” từ chính máy chủ phụ trợ, thì vấn đề này có thể là do một số lỗi có thể đã xảy ra trên máy chủ phụ trợ.
Dấu vết cho thấy lỗi 502 Cổng vào không hợp lệ đến từ máy chủ phụ trợ
- Nếu vấn đề xuất hiện liên tục và bạn không thể ghi lại dấu vết,
- Nếu là người dùng Public Cloud, bạn có thể sử dụng tính năng Giám sát API và kiểm tra thông tin chi tiết về lỗi 502.
- Nếu bạn quan sát thấy Mã lỗi là
messaging.adaptors.http.flow.ErrorResponseCode
và Nguồn lỗi làtarget
, thì lỗi do máy chủ phụ trợ gây ra.
- Nếu bạn quan sát thấy Mã lỗi là
- Nếu là người dùng Đám mây riêng tư, bạn có thể phân tích nhật ký Quyền truy cập NGINX
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
_access_log.
Bạn sẽ thấy mục nhập yêu cầu không thành công như sau:
2017-02-24T14:42:12+00:00 rt-01 192.8.155.2:18118 192.168.84.166:8998 10.225 - - 502 502 440 0 GET /adv-eadlg-test/documents?type=doctype HTTP/1.1 rt-02efawae234-1234 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 myorg-dev.apigee.net rt-02efawae234-1234 6 - false target messaging.adaptors.http.flow.ErrorResponseCode null/null - /organizations/myorg/environments/dev/apiproxies/api123
- Nếu bạn quan sát thấy Mã lỗi là
messaging.adaptors.http.flow.ErrorResponseCode
và Nguồn lỗi làtarget
, thì lỗi do máy chủ phụ trợ gây ra.
- Nếu bạn quan sát thấy Mã lỗi là
- Nếu là người dùng Public Cloud, bạn có thể sử dụng tính năng Giám sát API và kiểm tra thông tin chi tiết về lỗi 502.
Độ phân giải
- Hãy làm việc với nhóm máy chủ phụ trợ của bạn để khắc phục sự cố này trong phần phụ trợ.
Thu thập thông tin chẩn đoán
- Nhật ký truy cập NGINX
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_access_log
và Nhật ký lỗi
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)._error_log - Nhật ký Trình xử lý thông báo
(/opt/apigee/var/log/edge-message-processor/logs/system.log
).