คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
ลักษณะปัญหา
แอปพลิเคชันไคลเอ็นต์ได้รับรหัสสถานะ HTTP 502 พร้อมข้อความ "เกตเวย์ไม่ถูกต้อง" เป็นการตอบกลับสำหรับการเรียก API
รหัสสถานะ 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 เกตเวย์ไม่ถูกต้องสำหรับ API ที่ผ่าน Apigee Edge มีดังนี้
| สาเหตุ | คำอธิบาย | วิธีการแก้ปัญหาที่ใช้ได้กับ |
| ไม่มี MP ที่พร้อมใช้งานในพูล | ข้อผิดพลาดนี้จะเกิดขึ้นหาก MP ทั้งหมดในพูลไม่พร้อมใช้งาน นั่นคือ MP หยุดทำงานหรือไม่ว่าง จึงไม่ตอบสนอง | ผู้ใช้ Edge Private Cloud |
| การกำหนดค่า SSL ระหว่างเราเตอร์กับ MP ไม่ถูกต้อง | ข้อผิดพลาดนี้จะเกิดขึ้นหากไม่มีใบรับรองรูทที่ลงชื่อโดย CA ของไคลเอ็นต์ใน Truststore ของเราเตอร์ Edge | ผู้ใช้ Edge Private Cloud |
| ข้อผิดพลาดจากเซิร์ฟเวอร์แบ็กเอนด์ | ข้อผิดพลาดนี้จะเกิดขึ้นหากเซิร์ฟเวอร์แบ็กเอนด์ล้มเหลวและส่งการตอบกลับนี้ | ผู้ใช้ Edge Public และ Private Cloud |
สาเหตุ: ไม่มี MP ที่พร้อมใช้งานในพูล
ข้อผิดพลาดนี้จะเกิดขึ้นหากเราเตอร์พบว่า Message Processor ทั้งหมดในภูมิภาค/ศูนย์ข้อมูลที่กำหนดไม่พร้อมใช้งาน (เช่น หยุดทำงานทั้งหมด)
Apigee Edge ได้รับการกำหนดค่าในลักษณะที่การเข้าชม API ขาเข้า (คำขอ) ในภูมิภาค/ศูนย์ข้อมูลที่กำหนดจะถูกกำหนดเส้นทางจากเราเตอร์ไปยัง Message Processor (MP) ในภูมิภาค/ศูนย์ข้อมูลเดียวกันเสมอ ในบางกรณี คอมโพเนนต์ Apigee Edge อาจได้รับการตั้งค่าในภูมิภาค/ศูนย์ข้อมูลเดียว และในบางกรณีอาจได้รับการตั้งค่าในภูมิภาค/ศูนย์ข้อมูลมากกว่า 1 แห่ง ในแต่ละภูมิภาค/ศูนย์ข้อมูล จะมีการกำหนดค่าเราเตอร์และ Message Processor อย่างน้อย 2 รายการ
การวินิจฉัย
- ระบุภูมิภาค/ศูนย์ข้อมูลที่คำขอ API ล้มเหลวด้วยข้อผิดพลาด 502 เกตเวย์ไม่ถูกต้อง หากมีภูมิภาค/ศูนย์ข้อมูลมากกว่า 1 แห่ง คุณสามารถระบุภูมิภาคที่ผู้ใช้พบข้อผิดพลาด 502 หรือตรวจสอบบันทึกการเข้าถึง NGINX ในไดเรกทอรี
/opt/apigee/var/log/edge-router/nginx/ในเราเตอร์แต่ละรายการที่อยู่ในภูมิภาคต่างๆ - คุณจะเห็นข้อผิดพลาดต่อไปนี้ในบันทึกข้อผิดพลาด 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: Message Processor ทั้งหมดหยุดทำงาน
- ตรวจสอบว่า Message Processor ในภูมิภาค/ศูนย์ข้อมูลที่เฉพาะเจาะจงทำงานอยู่
- หาก Message Processor ทั้งหมดหยุดทำงาน ให้รีสตาร์ท
ความละเอียด
รีสตาร์ท Message Processor ทั้งหมดโดยใช้คำสั่งต่อไปนี้
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
สถานการณ์ที่ 2: Message Processor ทั้งหมดไม่ว่างในการประมวลผลคำขอที่กำลังดำเนินการอยู่
ข้อผิดพลาดนี้จะเกิดขึ้นหากเราเตอร์พบว่า Message Processor ทั้งหมดในภูมิภาค/ศูนย์ข้อมูลที่กำหนดไม่พร้อมใช้งานเนื่องจากไม่ว่างในการประมวลผลคำขอที่กำลังดำเนินการอยู่
- ตรวจสอบว่า Message Processor ในภูมิภาค/ศูนย์ข้อมูลที่เฉพาะเจาะจงทำงานอยู่
- หาก Message Processor ทั้งหมดทำงานและใช้งานได้ ให้ตรวจสอบว่า Message Processor มีการใช้งาน CPU สูงหรือไม่ จากนั้นสร้าง Thread Dump 3 รายการทุกๆ 30 วินาทีโดยใช้คำสั่งต่อไปนี้
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- หาก Message Processor มีการใช้งานหน่วยความจำสูง ให้สร้างฮีปดัมป์โดยใช้คำสั่งต่อไปนี้
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - รีสตาร์ท Message Processor โดยใช้คำสั่งด้านล่าง ซึ่งจะลดการใช้งาน CPU และหน่วยความจำ
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- ตรวจสอบการเรียก API เพื่อยืนยันว่าปัญหายังคงอยู่หรือไม่
- ติดต่อ ทีมสนับสนุนของ Apigee และส่ง Thread Dump, Heap Dump และบันทึก Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) เพื่อช่วยตรวจสอบสาเหตุของการใช้งาน CPU/หน่วยความจำสูง
สาเหตุ: การกำหนดค่า SSL ระหว่างเราเตอร์กับ MP ไม่ถูกต้อง
การวินิจฉัย
- ตรวจสอบบันทึกการเข้าถึง NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.) คุณจะเห็นการตอบกลับ 502 ดังที่แสดงด้านล่าง:_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 -
- ตรวจสอบบันทึกข้อผิดพลาด 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>"
- ซึ่งแสดงให้เห็นว่าแฮนด์เชค SSL ระหว่างเราเตอร์กับ Message Processor ไม่สำเร็จ
- หากคุณสังเกตข้อความแสดงข้อผิดพลาดในขั้นตอนที่ 1 และ 2 อย่างละเอียด คุณจะเห็นว่าพอร์ต # ที่ใช้ในการสื่อสารกับ Message Processor คือ 8998 ซึ่งเป็นพอร์ตที่ไม่ปลอดภัย แต่โปรโตคอลคือ SSL (https) โดยปกติแล้วพอร์ต # ที่ปลอดภัยที่ใช้คือ 8443 เนื่องจากมีการใช้พอร์ตที่ไม่ปลอดภัยสำหรับการสื่อสารที่ปลอดภัย จึงทำให้แฮนด์เชค SSL ไม่สำเร็จ
- โดยปกติแล้วเหตุการณ์นี้อาจเกิดขึ้นหากคุณข้ามขั้นตอนใดขั้นตอนหนึ่งหรือตั้งค่าไม่ถูกต้องขณะกำหนดค่า SSL ระหว่างเราเตอร์กับ Message Processor โปรดดูขั้นตอนที่ระบุไว้ที่นี่ ที่นี่
ตัวอย่างเช่น ข้อผิดพลาดนี้อาจเกิดขึ้นในกรณีต่อไปนี้
- ระบุพอร์ต # เป็น 8998 แทน 8443 ใน
/opt/apigee/customer/application/message-processor.properties as shown below
conf/message-processor-communication.properties+local.http.port=8998
- ไม่ได้ลบไฟล์การกำหนดค่าเราเตอร์ในไดเรกทอรี
/opt/nginx/conf.d/*และไม่ได้รีสตาร์ทเราเตอร์ขณะกำหนดค่า SSL ในสถานการณ์นี้ คุณจะเห็นว่าพอร์ต# ของ Message Processor จะยังคงเป็น 8998 ในไฟล์การกำหนดค่า
- ระบุพอร์ต # เป็น 8998 แทน 8443 ใน
ความละเอียด
- ตรวจสอบว่าได้ทำตามขั้นตอนทั้งหมดที่ระบุไว้ใน การกำหนดค่า TLS ระหว่างเราเตอร์กับ Message Processor อย่างถูกต้อง
- หากปัญหายังคงอยู่ ให้ไปที่ รวบรวมข้อมูลการวินิจฉัย
สาเหตุ: ข้อผิดพลาดจากเซิร์ฟเวอร์แบ็กเอนด์
การวินิจฉัย
- หากข้อผิดพลาดเกิดขึ้นทุกครั้ง คุณสามารถบันทึก UI Trace สำหรับคำขอที่ล้มเหลวได้ เลือกคำขอที่ล้มเหลวและดูขั้นตอนต่างๆ ใน Trace หากคุณเห็นว่าได้รับ "502 เกตเวย์ไม่ถูกต้อง" จากเซิร์ฟเวอร์แบ็กเอนด์เอง แสดงว่าปัญหาอาจเกิดจากความล้มเหลวบางอย่างที่เกิดขึ้นในเซิร์ฟเวอร์แบ็กเอนด์
Trace แสดง 502 เกตเวย์ไม่ถูกต้องที่มาจากเซิร์ฟเวอร์แบ็กเอนด์
- หากปัญหาเกิดขึ้นเป็นครั้งคราวและคุณบันทึก Trace ไม่ได้ ให้ทำดังนี้
- หากคุณเป็นผู้ใช้ Public Cloud คุณสามารถใช้ การตรวจสอบ API และตรวจสอบรายละเอียดเกี่ยวกับข้อผิดพลาด 502 ได้
- หากคุณเห็นว่ารหัสข้อผิดพลาดคือ
messaging.adaptors.http.flow.ErrorResponseCodeและแหล่งที่มาของข้อผิดพลาดคือtargetแสดงว่าข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์
- หากคุณเห็นว่ารหัสข้อผิดพลาดคือ
- หากคุณเป็นผู้ใช้ Private Cloud คุณสามารถวิเคราะห์บันทึกการเข้าถึง 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
- หากคุณเห็นว่ารหัสข้อผิดพลาดคือ
messaging.adaptors.http.flow.ErrorResponseCodeและแหล่งที่มาของข้อผิดพลาดคือtargetแสดงว่าข้อผิดพลาดเกิดจากเซิร์ฟเวอร์แบ็กเอนด์
- หากคุณเห็นว่ารหัสข้อผิดพลาดคือ
- หากคุณเป็นผู้ใช้ Public Cloud คุณสามารถใช้ การตรวจสอบ API และตรวจสอบรายละเอียดเกี่ยวกับข้อผิดพลาด 502 ได้
ความละเอียด
- ประสานงานกับทีมเซิร์ฟเวอร์แบ็กเอนด์เพื่อแก้ไขปัญหานี้ในแบ็กเอนด์
รวบรวมข้อมูลการวินิจฉัย
- บันทึกการเข้าถึง NGINX
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.)_access_log
และบันทึกข้อผิดพลาด
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.)_error_log - บันทึก Message Processor
(/opt/apigee/var/log/edge-message-processor/logs/system.log)