Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması şu mesajla birlikte 502 HTTP durum kodunu alır: API çağrılarına yanıt olarak "Hatalı Ağ Geçidi".
HTTP durum kodu 502, istemcinin arka uç sunucularının kontrol edilmesi gerekir.
Hata mesajları
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 502 Bad Gateway
Ayrıca, aşağıdaki hata mesajlarını da görebilirsiniz:
<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>
Hata arka uç sunucusundan geliyorsa bu tür bir durumla karşılaşabilirsiniz. Arka uçtan gelen hata mesajı tamamen uygulamanın uygulamasına bağlıdır.
<html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html>
Olası Nedenler
Apigee Edge'den geçen API'ler için 502 Hatalı Ağ Geçidi hatasına yol açabilecek birkaç nedeni aşağıda bulabilirsiniz:
Neden | Açıklama | Aşağıdakiler İçin Geçerli Sorun Giderme Talimatları |
Havuzda MP yok | Bu hata, havuzdaki tüm MP'ler müsait olmadığında, yani çalışmadıkları veya meşgul oldukları için yanıt vermediklerinde görülür. | Edge Private Cloud kullanıcıları |
Yönlendiriciler ve MP'ler arasında yanlış SSL yapılandırması | İstemcinin CA imzalı kök sertifikası, Edge'in Yönlendiricisi'nin güven deposunda yoksa bu hata görülür. | Edge Private Cloud kullanıcıları |
Arka uç sunucusundan gelen hata | Arka uç sunucusu başarısız olursa ve bu yanıtı gönderirse bu hata görülür. | Edge Herkese Açık ve Private Cloud kullanıcıları |
Neden: Havuzda MP yok
Bu hata, Yönlendirici belirli bir bölgedeki/veri merkezindeki tüm Mesaj İşleyicilerin kullanılamadığını tespit ederse (örneğin, hepsi çalışmıyorsa) meydana gelir.
Apigee Edge, belirli bir bölgede/veri merkezinde gelen API trafiğinin (isteklerin) her zaman Yönlendiricilerden aynı bölgedeki/veri merkezindeki Mesaj İşleyicilere (MP'ler) yönlendirildiği şekilde yapılandırılır. Bazı durumlarda Apigee Edge bileşenleri yalnızca bir bölgede/veri merkezinde, bazı durumlarda ise birden fazla bölgede/veri merkezinde kurulu olabilir. Her bölgede/veri merkezinde yapılandırılmış iki veya daha fazla Yönlendirici ve Mesaj İşlemcisi olacaktır.
Teşhis
- Birden fazla bölge/veri merkezi varsa API isteklerinin 502 Hatalı Ağ Geçidi hatasıyla başarısız olduğu bölgeyi/veri merkezlerini belirleyin. Bunu, kullanıcıların 502 hatalarını gözlemlediği bölgeyi belirleyerek veya farklı bölgelere ait Yönlendiricilerin her birinde bulunan
/opt/apigee/var/log/edge-router/nginx/
dizinindeki NGINX Erişim günlüklerini kontrol ederek bulabilirsiniz. - NGINX Hata günlüklerinde (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
) şu hatayı göreceksiniz:_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. Senaryo: Tüm İleti İşleyicileri çalışmıyor
- İlgili bölgedeki/veri merkezindeki Mesaj İşleyicilerin çalışır durumda olup olmadığını kontrol edin.
- Tüm İleti İşleyicileri devre dışıysa onları yeniden başlatın.
Çözünürlük
Aşağıdaki komutu kullanarak tüm Mesaj İşlemcilerini yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
2. Senaryo: Tüm İleti İşleyicileri devam eden istekleri işlemekle meşgul.
Bu hata, Yönlendiriciler devam eden istekleri işlemekle meşgul olduğundan, Yönlendiriciler belirli bir bölgedeki/veri merkezindeki tüm Mesaj İşlemcilerinin kullanılamadığını tespit ederse bu hata meydana gelir.
- İlgili bölgedeki/veri merkezindeki Mesaj İşleyicilerin çalışır durumda olup olmadığını kontrol edin.
- Tüm İleti İşlemcileri çalışır durumda ve etkinse İleti İşlemcilerinin yüksek CPU kullanımı yaşayıp yaşamadığını kontrol edin. Ardından şu komutu kullanarak her 30 saniyede bir üç iş parçacığı dökümü oluşturun:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- Mesaj İşlemcileri yüksek bellek kullanımı yaşıyorsa aşağıdaki komutu kullanarak bir yığın dökümü oluşturun:
sudo -u apigee
/bin/jmap -dump:live,format=b,file= - Aşağıdaki komutu kullanarak Mesaj İşleyici'yi yeniden başlatın. CPU ve Belleği aşağı çeker:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Sorunun devam edip etmediğini doğrulamak için API çağrılarını izleyin.
- Yüksek CPU/bellek kullanımının nedenini araştırmak için Apigee Destek Ekibi ile iletişime geçerek iş parçacığı dökümlerini, yığın dökümünü ve İleti İşlemci günlüklerini (
/opt/apigee/var/log/edge-message-processor/logs/system.log
) sağlayın.
Neden: Yönlendiriciler ve MP'ler arasında yanlış SSL yapılandırması
Teşhis
- NGINX Erişim günlüklerini (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
) kontrol edin. Aşağıdaki gibi bir 502 yanıtı göreceksiniz:_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 Hata günlüklerini (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
) kontrol edin. Şuna benzer hatalar görürsünüz:_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>"
- Bu, Yönlendirici ve İleti İşlemci arasındaki SSL el sıkışmasının başarısız olduğunu gösterir.
- 1. ve 2. adımdaki hata mesajına dikkat ederseniz İleti İşleyici ile iletişim kurmak için kullanılan bağlantı noktası numarası 8998'dir. 8998, güvenli olmayan bir bağlantı noktasıdır ancak protokol SSL (https)'dir. Genellikle kullanılan güvenli bağlantı noktası numarası 8443'tür. Güvenli iletişim için güvenli olmayan bir bağlantı noktası kullanıldığından SSL el sıkışma hatasına neden olur.
- Bu durum genellikle, Yönlendirici ve İleti İşlemci arasında SSL yapılandırırken herhangi bir adımı gözden kaçırdıysanız veya yanlış değerler ayarladıysanız ortaya çıkabilir. Burada özetlenen adımlara göz atın.
. Örneğin bu hata,
/opt/apigee/customer/application/message-processor.properties as shown below
içinde 8443 yerine bağlantı noktası numarası 8998 olarak belirtilmiştirconf/message-processor-communication.properties+local.http.port=8998
/opt/nginx/conf.d/*
dizininin altındaki Yönlendirici yapılandırma dosyaları silinmedi ve SSL yapılandırması yapılırken Yönlendirici yeniden başlatılmadı. Bu senaryoda, İleti İşlemcilerinin bağlantı noktası numarasının yapılandırma dosyalarında 8998 olarak kalacağını fark edebilirsiniz.
Çözünürlük
- Bir Yönlendirici ile İleti İşleyici arasında TLS'yi Yapılandırma sayfasında sağlanan tüm adımların gerektiği gibi uygulandığından emin olun.
- Sorun devam ederse Teşhis Bilgilerini Toplama bölümüne gidin.
Neden: Arka uç sunucusundan gelen hata
Teşhis
- Hata her seferinde ortaya çıkıyorsa başarısız isteklerin kullanıcı arayüzü izini yakalayabilirsiniz. Başarısız bir isteği seçin ve izlemedeki çeşitli aşamalardan geçin. "502 Hatalı Ağ Geçidi"ni arka uç sunucusundan aldığınızı fark ederseniz, sorunun nedeni arka uç sunucusunda bir hata oluşmuş olabilir.
. Arka uç sunucusundan gelen 502 Hatalı Ağ Geçidi'ni gösteren iz
- Sorun zaman zaman ortaya çıkıyorsa ve izleri yakalayamıyorsanız
- Herkese Açık Cloud kullanıcısıysanız API Monitoring'i kullanabilir ve 502 hatalarıyla ilgili ayrıntıları kontrol edebilirsiniz.
- Hata Kodu
messaging.adaptors.http.flow.ErrorResponseCode
ve Hata Kaynağıtarget
ise bu hata arka uç sunucusundan kaynaklanmaktadır.
- Hata Kodu
- Private Cloud kullanıcısıysanız NGINX erişim günlüklerini analiz edebilirsiniz
/opt/apigee/var/log/edge-router/nginx/ORG-Env.
_access_log.
Başarısız olan isteğe ait girişi aşağıdaki gibi görürsünüz:
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
- Hata Kodu
messaging.adaptors.http.flow.ErrorResponseCode
ve Hata Kaynağıtarget
ise bu hata arka uç sunucusundan kaynaklanmaktadır.
- Hata Kodu
- Herkese Açık Cloud kullanıcısıysanız API Monitoring'i kullanabilir ve 502 hatalarıyla ilgili ayrıntıları kontrol edebilirsiniz.
Çözünürlük
- Arka uçta bu sorunu düzeltmek için arka uç sunucu ekibinizle birlikte çalışın.
Teşhis Bilgilerini Toplama
- NGINX Erişim günlükleri
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)_access_log
ve Hata günlükleri
(/opt/apigee/var/log/edge-router/nginx/ORG-Env.
)._error_log - Mesaj İşleyici günlükleri
(/opt/apigee/var/log/edge-message-processor/logs/system.log
).