502 খারাপ গেটওয়ে

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

এপিআই কলের প্রতিক্রিয়া হিসেবে ক্লায়েন্ট অ্যাপ্লিকেশনটি "ব্যাড গেটওয়ে" বার্তা সহ একটি ৫০২ এইচটিটিপি স্ট্যাটাস কোড পায়।

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>

সম্ভাব্য কারণসমূহ

Apigee Edge-এর মাধ্যমে পরিচালিত API-গুলোর ক্ষেত্রে 502 Bad Gateway ত্রুটি হওয়ার কয়েকটি সম্ভাব্য কারণ নিচে দেওয়া হলো:

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
পুলে কোনো এমপি উপলব্ধ নেই। এই ত্রুটিটি দেখা যায় যদি পুলে থাকা সমস্ত এমপি অনুপলব্ধ থাকে, অর্থাৎ, তারা হয় ডাউন থাকে অথবা ব্যস্ত থাকায় সাড়া না দেয়। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
রাউটার এবং এমপি-এর মধ্যে ভুল SSL কনফিগারেশন Edge-এর রাউটারের ট্রাস্টস্টোরে ক্লায়েন্টের CA স্বাক্ষরিত রুট সার্টিফিকেটটি অনুপস্থিত থাকলে এই ত্রুটিটি দেখা যায়। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
ব্যাকএন্ড সার্ভার থেকে ত্রুটি ব্যাকএন্ড সার্ভার ব্যর্থ হয়ে এই প্রতিক্রিয়া পাঠালে এই ত্রুটিটি দেখা যাবে। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

কারণ: পুলে কোনো এমপি উপলব্ধ নেই

এই ত্রুটিটি ঘটবে যদি রাউটার দেখতে পায় যে কোনো নির্দিষ্ট অঞ্চল/ডেটা সেন্টারের সমস্ত মেসেজ প্রসেসর অনুপলব্ধ (উদাহরণস্বরূপ, যদি সবগুলোই ডাউন থাকে)।

Apigee Edge এমনভাবে কনফিগার করা থাকে যে, একটি নির্দিষ্ট রিজিয়ন/ডেটা সেন্টারে আগত API ট্র্যাফিক (অনুরোধ) সর্বদা রাউটার থেকে সেই একই রিজিয়ন/ডেটা সেন্টারের মেসেজ প্রসেসর (MP)-এ রাউট করা হয়। কিছু ক্ষেত্রে, Apigee Edge কম্পোনেন্টগুলো শুধুমাত্র একটি রিজিয়ন/ডেটা সেন্টারে সেটআপ করা হতে পারে এবং কিছু ক্ষেত্রে, সেগুলো একাধিক রিজিয়ন/ডেটা সেন্টারেও সেটআপ করা হতে পারে। প্রতিটি রিজিয়ন/ডেটা সেন্টারে দুই বা ততোধিক রাউটার এবং মেসেজ প্রসেসর কনফিগার করা থাকবে।

রোগ নির্ণয়

  1. যদি একাধিক অঞ্চল/ডেটা সেন্টার থাকে, তবে সেই অঞ্চল/ডেটা সেন্টার(গুলি) নির্ধারণ করুন যেখানে API অনুরোধগুলি 502 ব্যাড গেটওয়ে ত্রুটির কারণে ব্যর্থ হচ্ছে। ব্যবহারকারীরা কোন অঞ্চলে 502 ত্রুটি লক্ষ্য করছেন তা শনাক্ত করে, অথবা বিভিন্ন অঞ্চলের প্রতিটি রাউটারের /opt/apigee/var/log/edge-router/nginx/ ডিরেক্টরিতে থাকা 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. নির্দিষ্ট অঞ্চল/ডেটা সেন্টারের মেসেজ প্রসেসরগুলো চালু আছে কিনা তা পরীক্ষা করুন।
  2. যদি সব মেসেজ প্রসেসর বন্ধ থাকে, তাহলে সেগুলো পুনরায় চালু করুন।

সমাধান

নিম্নলিখিত কমান্ডটি ব্যবহার করে সমস্ত মেসেজ প্রসেসর পুনরায় চালু করুন:

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

দৃশ্যকল্প ২: সমস্ত মেসেজ প্রসেসর চলমান অনুরোধগুলি প্রক্রিয়াকরণে ব্যস্ত আছে

এই ত্রুটিটি ঘটবে যদি রাউটার দেখতে পায় যে, কোনো নির্দিষ্ট অঞ্চল/ডেটা সেন্টারের সমস্ত মেসেজ প্রসেসর চলমান অনুরোধ প্রক্রিয়াকরণে ব্যস্ত থাকার কারণে অনুপলব্ধ।

  1. নির্দিষ্ট অঞ্চল/ডেটা সেন্টারের মেসেজ প্রসেসরগুলো চালু আছে কিনা তা পরীক্ষা করুন।
  2. যদি সমস্ত মেসেজ প্রসেসর চালু এবং সক্রিয় থাকে, তাহলে পরীক্ষা করে দেখুন যে মেসেজ প্রসেসরটিতে উচ্চ সিপিইউ ব্যবহার হচ্ছে কিনা, এবং তারপর নিম্নলিখিত কমান্ডটি ব্যবহার করে প্রতি ৩০ সেকেন্ডে তিনটি থ্রেড ডাম্প তৈরি করুন:
    <JAVA_HOME>/bin/jstack -l <pid> > <filename>
  3. যদি মেসেজ প্রসেসর(গুলি) উচ্চ মেমরি ব্যবহার করে, তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করে একটি হিপ ডাম্প তৈরি করুন:
    sudo -u apigee /bin/jmap -dump:live,format=b,file= 
  4. নিচের কমান্ডটি ব্যবহার করে মেসেজ প্রসেসরটি রিস্টার্ট করুন। এতে সিপিইউ এবং মেমরি ডাউন হয়ে আসবে:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  5. সমস্যাটি এখনও বিদ্যমান কিনা তা নিশ্চিত করতে এপিআই কলগুলো পর্যবেক্ষণ করুন।
  6. উচ্চ সিপিইউ/মেমরি ব্যবহারের কারণ অনুসন্ধানে সহায়তার জন্য Apigee সাপোর্টের সাথে যোগাযোগ করুন এবং থ্রেড ডাম্প, হিপ ডাম্প, ও মেসেজ প্রসেসর লগ ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) প্রদান করুন।

কারণ: রাউটার এবং এমপি-এর মধ্যে ভুল SSL কনফিগারেশন

রোগ নির্ণয়

  1. NGINX অ্যাক্সেস লগগুলি পরীক্ষা করুন ( /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. এতে বোঝা যায় যে রাউটার এবং মেসেজ প্রসেসরের মধ্যে SSL হ্যান্ডশেক ব্যর্থ হয়েছে।
  4. আপনি যদি ধাপ #১ এবং #২-এর ত্রুটির বার্তাটি মনোযোগ সহকারে লক্ষ্য করেন, তাহলে দেখবেন যে মেসেজ প্রসেসরের সাথে যোগাযোগের জন্য ব্যবহৃত পোর্ট নম্বরটি হলো ৮৯৯৮, যা একটি অসুরক্ষিত পোর্ট, কিন্তু প্রোটোকলটি হলো SSL (https)। সাধারণত ব্যবহৃত সুরক্ষিত পোর্ট নম্বরটি হলো ৮৪৪৩। সুরক্ষিত যোগাযোগের জন্য একটি অসুরক্ষিত পোর্ট ব্যবহার করার কারণেই SSL হ্যান্ডশেক ব্যর্থ হচ্ছে।
  5. সাধারণত রাউটার এবং মেসেজ প্রসেসরের মধ্যে SSL কনফিগার করার সময় আপনি কোনো ধাপ বাদ দিলে বা ভুল মান সেট করলে এমনটা হতে পারে। এখানে বর্ণিত ধাপগুলো অনুসরণ করুন।
    উদাহরণস্বরূপ, এই ত্রুটিটি ঘটতে পারে যদি
    1. /opt/apigee/customer/application/message-processor.properties as shown below
              conf/message-processor-communication.properties+local.http.port=8998
    2. SSL কনফিগারেশন করার সময় /opt/nginx/conf.d/* ডিরেক্টরির অধীনে থাকা রাউটারের কনফিগারেশন ফাইলগুলো ডিলিট করা হয়নি এবং রাউটারটিও রিস্টার্ট করা হয়নি। এই পরিস্থিতিতে, আপনি লক্ষ্য করতে পারবেন যে কনফিগারেশন ফাইলগুলোতে মেসেজ প্রসেসরগুলোর পোর্ট নম্বর ৮৯৯৮-ই থেকে যাবে।

সমাধান

  1. একটি রাউটার এবং একটি মেসেজ প্রসেসরের মধ্যে TLS কনফিগার করার জন্য প্রদত্ত সমস্ত ধাপ সঠিকভাবে অনুসরণ করা হয়েছে কিনা তা নিশ্চিত করুন।
  2. যদি সমস্যাটি অব্যাহত থাকে, তাহলে ডায়াগনস্টিক তথ্য সংগ্রহ করুন- এ যান।

কারণ: ব্যাকএন্ড সার্ভার থেকে ত্রুটি

রোগ নির্ণয়

  1. যদি ত্রুটিটি প্রতিবারই ঘটে, তাহলে আপনি ব্যর্থ হওয়া অনুরোধগুলোর UI ট্রেস ক্যাপচার করতে পারেন। একটি ব্যর্থ অনুরোধ নির্বাচন করুন এবং ট্রেসের বিভিন্ন ধাপের মধ্যে দিয়ে যান। যদি আপনি লক্ষ্য করেন যে আপনি সরাসরি ব্যাকএন্ড সার্ভার থেকেই “502 Bad Gateway” ত্রুটিটি পাচ্ছেন, তাহলে সমস্যাটি হতে পারে কারণ ব্যাকএন্ড সার্ভারে কোনো ব্যর্থতা ঘটেছে।
    ট্রেস থেকে দেখা যাচ্ছে যে ব্যাকএন্ড সার্ভার থেকে 502 ব্যাড গেটওয়ে ত্রুটি আসছে।
  2. যদি সমস্যাটি মাঝে মাঝে হয় এবং আপনি এর চিহ্নটি ধারণ করতে না পারেন,
    1. আপনি যদি পাবলিক ক্লাউড ব্যবহারকারী হন, তাহলে আপনি এপিআই মনিটরিং ব্যবহার করে ৫০২ ত্রুটিগুলোর বিস্তারিত তথ্য যাচাই করতে পারেন।
      1. যদি আপনি লক্ষ্য করেন যে ফল্ট কোডটি messaging.adaptors.http.flow.ErrorResponseCode এবং ফল্ট সোর্সটি target , তাহলে ত্রুটিটি ব্যাকএন্ড সার্ভারের কারণে হয়েছে।
    2. আপনি যদি প্রাইভেট ক্লাউড ব্যবহারকারী হন, তাহলে আপনি NGINX অ্যাক্সেস লগগুলো বিশ্লেষণ করতে পারেন।
      /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 )