502 مدخل غير صالح

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

المشكلة

يحصل تطبيق العميل على رمز حالة HTTP 502 مع الرسالة "البوابة غير الصالحة" كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.

يعني رمز حالة HTTP 502 أن العميل لا يتلقى استجابة صالحة من لخوادم الخلفية التي من المفترض أن تفي بالطلب فعلاً.

رسائل الخطأ

يحصل تطبيق العميل على رمز الاستجابة التالي:

HTTP/1.1 502 Bad Gateway

بالإضافة إلى ذلك، قد تلاحظ رسائل الخطأ التالية:

<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>

إذا كان الخطأ صادرًا من خادم الخلفية، قد يظهر لك شيء من هذا القبيل. تعتمد رسالة الخطأ من الخلفية كليًا على تنفيذها.

<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
</body>
</html>

الأسباب المحتملة

في ما يلي بعض الأسباب المحتملة التي قد تؤدي إلى ظهور الخطأ 502 Bad Gate الخاصة بواجهات برمجة التطبيقات التي تمرّ في Apigee Edge:

السبب الوصف تعليمات تحديد المشاكل وحلّها التي تنطبق على
لا يتوفر أي عضو في المجموعة ويُلاحَظ هذا الخطأ إذا كان جميع أعضاء البرلمان في المجموعة غير متوفّرين، أي أنّهم إما مشغولون أو مشغولون وبالتالي لا يستجيبون. مستخدمو Edge Private Cloud
ضبط طبقة المقابس الآمنة (SSL) بشكل غير صحيح بين أجهزة التوجيه وMPs تتم ملاحظة هذا الخطأ إذا كانت شهادة الجذر الموقعة من هيئة إصدار الشهادات (CA) الخاصة بالعميل مفقودة في مخزن الثقة في جهاز توجيه Edge. مستخدمو Edge Private Cloud
حدث خطأ من خادم الخلفية ستتم ملاحظة هذا الخطأ في حال تعذُّر خادم الخلفية وإرسال هذه الاستجابة. مستخدمو Edge Public و Private Cloud

السبب: عدم توفر أعضاء في مجموعة البرلمان

سيحدث هذا الخطأ إذا وجد جهاز التوجيه أنّ جميع معالِجات الرسائل في منطقة أو مركز بيانات معيّن غير متاحة (على سبيل المثال، إذا كانت جميعها غير متاحة).

يتم ضبط Apigee Edge بطريقة يتم من خلالها توجيه حركة بيانات (الطلبات) الواردة من واجهة برمجة التطبيقات في منطقة أو مركز بيانات معيّنين دائمًا من أجهزة التوجيه إلى معالِجات الرسائل (MPs) في المنطقة أو مركز البيانات نفسه. في بعض الحالات، قد يتم إعداد مكوّنات Apigee Edge في منطقة أو مركز بيانات واحد فقط، وفي بعض الحالات قد يتم إعدادها في أكثر من منطقة أو مركز بيانات واحد. في كل منطقة/مركز بيانات، سيتم إعداد جهازين أو أكثر من أجهزة التوجيه ومعالجات الرسائل.

التشخيص

  1. عليك تحديد المناطق أو مراكز البيانات التي يتعذّر فيها إرسال طلبات البيانات من واجهة برمجة التطبيقات مع ظهور خطأ 502 "المدخل السيئ"، في حال توفُّر أكثر من منطقة أو مركز بيانات واحد. يمكنك العثور على ذلك إما من خلال تحديد المنطقة التي يلاحظ فيها المستخدمون الأخطاء 502 أو عن طريق التحقق من سجلات NGINX Access في دليل /opt/apigee/var/log/edge-router/nginx/ على كل جهاز من أجهزة التوجيه التي تنتمي إلى مناطق مختلفة.
  2. سيظهر لك الخطأ التالي في سجلات أخطاء 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>"
    

السيناريو 1: تعطل جميع معالِجات الرسائل

  1. تحقق من أن معالِجات الرسائل في المنطقة/مركز البيانات المحددة تعمل بشكل سليم.
  2. إذا كانت جميع معالِجات الرسائل معطلة، فقم بإعادة تشغيلها.

الدقة

أعِد تشغيل جميع معالِجات الرسائل باستخدام الأمر التالي:

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

السيناريو 2: جميع معالجات الرسائل مشغولة بمعالجة الطلبات الجارية

سيحدث هذا الخطأ إذا وجدت أجهزة التوجيه أنّ جميع معالِجات الرسائل في منطقة أو مركز بيانات معيّن غير متاحة لأنّ جميعها مشغولة بمعالجة الطلبات الجارية.

  1. تحقق من أن معالِجات الرسائل في المنطقة/مركز البيانات المحددة تعمل بشكل سليم.
  2. إذا كانت جميع معالجات الرسائل نشطة ونشطة، تحقق مما إذا كان معالج (معالجات) الرسائل يواجه معدل استخدام مرتفعًا لوحدة المعالجة المركزية (CPU)، ثم قم بتفريغ ثلاث سلاسل من معالِجات كل 30 ثانية باستخدام الأمر التالي:
    <JAVA_HOME>/bin/jstack -l <pid> > <filename>
    
  3. إذا تم استخدام الذاكرة بشكل كبير في معالج(معالجات) الرسائل، يمكنك إنشاء لقطة لأجزاء من الذاكرة باستخدام الأمر التالي:
    sudo -u apigee /bin/jmap -dump:live,format=b,file= 
    
  4. أعِد تشغيل معالج الرسائل باستخدام الأمر أدناه. من المفترض أن يؤدي إلى خفض حجم وحدة المعالجة المركزية (CPU) والذاكرة:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  5. راقِب طلبات بيانات من واجهة برمجة التطبيقات للتأكّد مما إذا كانت المشكلة لا تزال قائمة.
  6. يمكنك التواصل مع فريق دعم Apigee وتقديم عمليات تفريغ سلاسل المحادثات ولقطات لأجزاء من الذاكرة وسجلّات معالج الرسائل (/opt/apigee/var/log/edge-message-processor/logs/system.log) للمساعدة في التحقيق في سبب ارتفاع معدّل استخدام وحدة المعالجة المركزية (CPU)/الذاكرة.

السبب: تهيئة طبقة مقابس آمنة (SSL) غير صحيحة بين أجهزة التوجيه وأجهزة MP

التشخيص

  1. تحقَّق من سجلّات NGINX Access (/opt/apigee/var/log/edge-router/nginx/ORG-Env._access_log). وسيظهر لك الردّ 502 كما هو موضّح أدناه:
        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	-
    
  2. تحقَّق من سجلات أخطاء NGINX (/opt/apigee/var/log/edge-router/nginx/ORG-Env._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>"
    
  3. يوضح ذلك إخفاق تأكيد اتصال طبقة المقابس الآمنة بين جهاز التوجيه ومعالج الرسائل.
  4. إذا لاحظت بعناية في رسالة الخطأ في الخطوة رقم 1 و2، فإن المنفذ رقم المستخدم للاتصال بمعالج الرسائل هو 8998 وهو منفذ غير آمن ولكن البروتوكول هو طبقة المقابس الآمنة (https). عادةً ما يكون المنفذ الآمن المستخدم هو 8443. نظرًا لاستخدام منفذ غير آمن للاتصال الآمن، فإنه يتسبب في فشل تأكيد اتصال طبقة المقابس الآمنة.
  5. عادةً ما يحدث ذلك إذا فاتتك أي خطوات أو ضبطت أي قيم غير صحيحة أثناء تهيئة طبقة المقابس الآمنة بين جهاز التوجيه ومعالج الرسائل. يُرجى الرجوع إلى الخطوات الموضّحة هنا.
    على سبيل المثال، يمكن أن يحدث هذا الخطأ إذا كانت
    1. تم تحديد المنفذ رقم 8998 بدلاً من 8443 في /opt/apigee/customer/application/message-processor.properties as shown below
      .
              conf/message-processor-communication.properties+local.http.port=8998
      
    2. لا يتم حذف ملفات إعداد جهاز التوجيه ضمن الدليل /opt/nginx/conf.d/*، ولم تتم إعادة تشغيل جهاز التوجيه أثناء ضبط طبقة المقابس الآمنة. في هذا السيناريو، يمكنك ملاحظة أن رقم المنفذ الخاص بمعالجات الرسائل سيبقى 8998 في ملفات التهيئة.

الدقة

  1. تأكَّد من اتّباع جميع الخطوات الواردة في ضبط بروتوكول أمان طبقة النقل (TLS) بين جهاز توجيه ومعالج الرسائل بشكل صحيح.
  2. في حال استمرار المشكلة، انتقِل إلى جمع معلومات التشخيص.

السبب: حدث خطأ من خادم الخلفية

التشخيص

  1. في حال حدوث الخطأ في كل مرة، يمكنك تسجيل تتبُّع واجهة المستخدم للطلبات التي تعذّر تنفيذها. اختَر طلبًا فاشلاً وتنقَّل خلال مراحل مختلفة في عملية التتبُّع. إذا لاحظتَ الحصول على "502 مدخل غير صالح" من خادم الخلفية نفسه، قد تكون المشكلة ناتجة عن حدوث عطل في خادم الخلفية.
    تتبُّع ظهور الرسالة "502 Bad Gateway" الواردة من خادم الخلفية
  2. إذا كانت المشكلة تحدث بشكل متقطع ويتعذّر عليك تسجيل آثار الأنشطة،
    1. إذا كنت من مستخدمي Public Cloud، يمكنك استخدام مراقبة واجهة برمجة التطبيقات والاطّلاع على تفاصيل أخطاء 502.
      1. إذا لاحظت أنّ رمز الخطأ هو messaging.adaptors.http.flow.ErrorResponseCode وأنّ مصدر الخطأ هو target، يعني ذلك أنّ خادم الخلفية هو سبب الخطأ.
    2. إذا كنت أحد مستخدمي سحابة خاصة، يمكنك تحليل سجلات NGINX Access
      /opt/apigee/var/log/edge-router/nginx/ORG-Env._access_log.
      ستظهر لك تفاصيل الطلب الذي تعذّر تطبيقه على النحو التالي:
      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
      
      1. إذا لاحظت أنّ رمز الخطأ هو messaging.adaptors.http.flow.ErrorResponseCode وأنّ مصدر الخطأ هو target، يعني ذلك أنّ خادم الخلفية هو سبب الخطأ.

الدقة

  1. يُرجى التعاون مع فريق خادم الخلفية لحلّ هذه المشكلة في الخلفية.

جمع معلومات التشخيص

  1. سجلّات الوصول إلى NGINX
    (/opt/apigee/var/log/edge-router/nginx/ORG-Env._access_log)
    وسجلات الأخطاء
    (/opt/apigee/var/log/edge-router/nginx/ORG-Env._error_log).
  2. سجلّات معالج الرسائل
    (/opt/apigee/var/log/edge-message-processor/logs/system.log).