Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak "Bad Gateway" mesajıyla birlikte 502 HTTP durum kodunu alır.
HTTP durum kodu 502, istemcinin, isteği aslında karşılaması gereken arka uç sunucularından geçerli bir yanıt almadığı anlamına gelir.
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 kaynaklanıyorsa şuna benzer bir mesaj görebilirsiniz. Arka uçtaki hata mesajı tamamen uygulamaya 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 üzerinden geçen API'lerde 502 Bad Gateway hatasına yol açabilecek olası nedenlerden bazıları şunlardır:
| Neden | Açıklama | Aşağıdaki Durumlarda Geçerli Sorun Giderme Talimatları |
| Havuzda kullanılabilir MP yok | Bu hata, havuzdaki tüm MP'ler kullanılamıyorsa (yani kapalı veya meşgullerse ve bu nedenle yanıt vermiyorlarsa) görülür. | Edge Private Cloud kullanıcıları |
| Yönlendiriciler ve MP'ler arasındaki SSL yapılandırması yanlış | Bu hata, istemcinin CA tarafından imzalanmış kök sertifikası Edge'in yönlendiricisinin güven deposunda eksikse görülür. | Edge Private Cloud kullanıcıları |
| Arka uç sunucusundan hata | Arka uç sunucusu başarısız olursa ve bu yanıtı gönderirse bu hata gözlemlenir. | Edge Public ve Private Cloud kullanıcıları |
Neden: Havuzda MP yok
Bu hata, yönlendirici belirli bir bölgedeki/veri merkezindeki tüm ileti işlemcilerin kullanılamadığını (ör. hepsinin kapalı olduğunu) tespit ederse oluşur.
Apigee Edge, belirli bir bölgedeki/veri merkezindeki gelen API trafiğinin (istekler) her zaman aynı bölgedeki/veri merkezindeki yönlendiricilerden mesaj işleyicilere (MP'ler) yönlendirileceği şekilde yapılandırılır. Bazı durumlarda Apigee Edge bileşenleri yalnızca bir bölgede/veri merkezinde kurulabilir. Bazı durumlarda ise birden fazla bölgede/veri merkezinde kurulabilir. Her bölgede/veri merkezinde iki veya daha fazla yönlendirici ve mesaj işlemci yapılandırılır.
Teşhis
- Birden fazla bölge/veri merkezi varsa API isteklerinin 502 Bad Gateway 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 her bir yönlendiricideki
/opt/apigee/var/log/edge-router/nginx/dizininde NGINX erişim günlüklerini kontrol ederek bulabilirsiniz. - NGINX hata günlüklerinde (
/opt/apigee/var/log/edge-router/nginx/ORG-Env.) aşağıdaki hatayı görürsünüz_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 ileti işlemcileri kapalı
- Belirli bir bölgedeki/veri merkezindeki Mesaj İşleyicilerin çalışıp çalışmadığını kontrol edin.
- Tüm Mesaj İşleyiciler kapalıysa bunları yeniden başlatın.
Çözünürlük
Aşağıdaki komutu kullanarak tüm ileti işlemcilerini yeniden başlatın:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
2. Senaryo: Tüm Mesaj İşleyiciler devam eden istekleri işlemekle meşgul
Bu hata, yönlendiriciler belirli bir bölgedeki/veri merkezindeki tüm ileti işlemcilerin, devam eden istekleri işlemekle meşgul oldukları için kullanılamadığını tespit ettiğinde oluşur.
- Belirli bir bölgedeki/veri merkezindeki Mesaj İşleyicilerin çalışıp çalışmadığını kontrol edin.
- Tüm Mesaj İşleyiciler çalışır ve etkin durumdaysa Mesaj İşleyicilerde yüksek CPU kullanımı olup olmadığını kontrol edin. Ardından, aşağıdaki komutu kullanarak 30 saniyede bir üç iş parçacığı dökümü oluşturun:
<JAVA_HOME>/bin/jstack -l <pid> > <filename>
- Mesaj İşleyici(ler) 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 bellek kullanımını azaltmalıdır:
/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ırmaya yardımcı olması için Apigee Destek Ekibi ile iletişime geçin ve thread dökümlerini, yığın dökümünü ve Message Processor günlüklerini (
/opt/apigee/var/log/edge-message-processor/logs/system.log) paylaşın.
Neden: Yönlendiriciler ve MP'ler arasındaki 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ğıda gösterildiği gibi 502 yanıtını görürsünüz:_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. Aşağıdaki gibi 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 ile mesaj işlemcisi arasındaki SSL el sıkışma işlemlerinin başarısız olduğunu gösterir.
- 1. ve 2. adımdaki hata mesajını dikkatlice incelerseniz Mesaj İşleyici ile iletişim kurmak için kullanılan bağlantı noktasının 8998 olduğunu görürsünüz. Bu, güvenli olmayan bir bağlantı noktasıdır ancak protokol SSL'dir (https). 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ışması başarısız olur.
- Bu durum genellikle yönlendirici ile Mesaj İşleyici arasında SSL'yi yapılandırırken herhangi bir adımı atladıysanız veya yanlış değerler ayarladıysanız ortaya çıkar. Burada belirtilen adımları uygulayın.
Örneğin, bu hata
/opt/apigee/customer/application/message-processor.properties as shown below
içinde bağlantı noktası numarası 8443 yerine 8998 olarak belirtiliyor.conf/message-processor-communication.properties+local.http.port=8998
/opt/nginx/conf.d/*dizinindeki yönlendirici yapılandırma dosyaları silinmez ve SSL yapılandırması yapılırken yönlendirici yeniden başlatılmaz. Bu senaryoda, ileti işlemcilerinin bağlantı noktası numarasının yapılandırma dosyalarında 8998 olarak kaldığını fark edebilirsiniz.
Çözünürlük
- Yönlendirici ile Mesaj İşleyici arasında TLS yapılandırma bölümünde verilen tüm adımların doğru şekilde uygulandığından emin olun.
- Sorun devam ederse Teşhis Bilgilerini Toplama bölümüne gidin.
Nedeni: Arka uç sunucusundan gelen hata
Teşhis
- Hata her seferinde oluşuyorsa başarısız olan isteklerin kullanıcı arayüzü izlemesini yakalayabilirsiniz. Başarısız olan bir isteği seçin ve izlemedeki çeşitli aşamalar arasında gezinin. Arka uç sunucusundan "502 Bad Gateway" hatası aldığınızı fark ederseniz sorun, arka uç sunucusunda bir hata oluşmuş olmasından kaynaklanabilir.
Arka uç sunucusundan gelen 502 Hatalı Ağ Geçidi'ni gösteren izleme
- Sorun aralıklı olarak yaşanıyorsa ve izlemeyi yakalayamıyorsanız
- Herkese açık bulut kullanıcısıysanız API İzleme'yi kullanabilir ve 502 hatalarıyla ilgili ayrıntıları kontrol edebilirsiniz.
- Hata Kodunun
messaging.adaptors.http.flow.ErrorResponseCodeve Hata Kaynağınıntargetolduğunu görürseniz hatanın nedeni arka uç sunucusudur.
- Hata Kodunun
- Özel bulut 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 istekle ilgili girişi şu şekilde 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 Kodunun
messaging.adaptors.http.flow.ErrorResponseCodeve Hata Kaynağınıntargetolduğunu görürseniz hatanın nedeni arka uç sunucusudur.
- Hata Kodunun
- Herkese açık bulut kullanıcısıysanız API İzleme'yi kullanabilir ve 502 hatalarıyla ilgili ayrıntıları kontrol edebilirsiniz.
Çözünürlük
- Bu sorunu arka uçta düzeltmek için arka uç sunucusu 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).