Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması 502 Bad Gateway hatası alır. İleti İşleyen, arka uç sunucudan yanıt almadığında bu hatayı istemci uygulamasına döndürür.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 502 Bad Gateway
Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:
{
"fault": {
"faultstring":"Bad Gateway",
"detail":{
"errorcode":"messaging.adaptors.http.flow.BadGateway"
}
}
}
Olası Neden
Bu sorunun olası nedeni aşağıdaki tabloda listelenmiştir:
Neden | Açıklama | Sorun giderme adımları şu şekilde gerçekleştirilebilir: |
TLS/SSL el sıkışma zaman aşımı | TLS/SSL El Sıkışması sırasında İleti İşleyici ile arka uç sunucusu arasında bir zaman aşımı oluşur. | Edge Özel ve Herkese Açık Bulut kullanıcıları |
Neden: TLS/SSL el sıkışması zaman aşımı
Apigee Edge'de TLS iletişimini etkinleştirmek için arka uç sunucusuna TLS/SSL bağlantısı ayarlayabilirsiniz uç mesaj işlemcisi ile arka uç sunucusu arasında bağlantı kurar.
TLS/SSL el sıkışması birkaç adımdan oluşur. Bu hata genellikle İleti İşleyici ile arka uç sunucusu arasındaki TLS/SSL el sıkışması zaman aşımına uğrar.
Teşhis
Bu bölümde, TLS/SSL el sıkışma zaman aşımının doğru şekilde nasıl teşhis edileceği açıklanmaktadır. Edge Private Cloud ve Public Cloud ile ilgili talimatlar listelenir.
Trace oturumu çıkışını inceleme
Aşağıdaki adımlarda, Apigee Edge Trace aracı kullanılarak sorunun nasıl ön teşhis edileceği açıklanmaktadır.
- Edge kullanıcı arayüzünde, etkilenen API proxy'si için İzleme oturumunu etkinleştirin.
Başarısız API isteğinin izlemesi aşağıdakileri gösteriyorsa büyük olasılıkla bir TLS/SSL el sıkışma zaman aşımı hatası meydana gelmiştir. Hatanın olası nedeni, arka uç sunucusu güvenlik duvarının Apigee trafiğini engellemesidir.
- 502 Hatalı Ağ Geçidi hatasının 55 saniye sonra olup olmadığını belirleyin. Bu hata, İleti İşleyen için belirlenen varsayılan zaman aşımı süresidir. Gördüğünüz üzere hata 55 saniye sonra oluştuysa, bu size bir zaman aşımının bir sonucu veya işaretidir.
- Hatanın şu hatayı gösterip göstermediğini belirleyin: messaging.adaptors.http.BadGateway. Bu hata da genellikle zaman aşımı oluştuğunu gösterir.
Edge Private Cloud kullanıyorsanız aşağıdaki gibi izleme çıkışındaki X-Apigee.Message-ID alanının değerini not edin. Özel Bulut kullanıcısı, daha sonra açıklandığı üzere diğer sorun giderme işlemleri için bu kimlik değerini kullanabilir.
İzleme yolunda Analytics Verileri Kaydedildi simgesini tıklayın:
Sayfayı aşağı kaydırın ve X-Apigee.Message-ID adlı alanın değerini not edin.
Hatanın nedeninin TLS/SSL El Sıkışma zaman aşımı olduğunu onaylamak için, Genel Bulut veya Private Cloud kullanıyorsanız aşağıdaki bölümlerde belirtilen adımları uygulayın.
Yalnızca Edge Private Cloud kullanıcıları için ek teşhis adımları
Apigee Edge Private Cloud kullanıyorsanız el sıkışma hatasının nedenini doğrulamak için aşağıdaki adımları uygulayabilirsiniz. Bu adımda, ilgili bilgiler için İleti İşleyen günlük dosyasını incelersiniz. Edge Public Cloud kullanıyorsanız bu bölümü atlayabilir ve Private ve Public Cloud Kullanıcıları İçin Daha Fazla Teşhis Adımları'na gidebilirsiniz.
telnet
komutunu kullanarak Mesaj İşleyicilerin her birinden doğrudan belirli bir arka uç sunucusuna bağlanıp bağlanamadığınızı kontrol edin:Arka uç sunucusu tek bir IP adresine çözümlenirse şu komutu kullanın:
telnet BackendServer-IPaddress 443
Arka uç sunucusu birden fazla IP adresine çözümleniyorsa telnet komutunda arka uç sunucusunun ana makine adını aşağıdaki gibi kullanın:
telnet BackendServer-HostName 443
Arka uç sunucuya herhangi bir hata almadan bağlanabiliyorsanız sonraki adıma geçin.
telnet
komutu başarısız olursa mesaj işlemcisi ile arka uç sunucusu arasındaki bağlantıyı kontrol etmek için ağ ekibinizle çalışmanız gerekir.El sıkışma hatası olduğuna dair kanıt için İleti İşleyen günlük dosyasını kontrol edin. Dosyayı açın:
/opt/apigee/var/log/edge-message-processor/system.log
ve benzersiz ileti kimliğini (X-Apigee.Message-ID'nin değeri) arayın ve izleme dosyasında bulunur). Aşağıda gösterildiği gibi ileti kimliğiyle ilişkili bir el sıkışma hatası mesajı görüp görmediğinizi belirleyin:
org:xxx env:xxx api:xxx rev:x messageid:<MESSAGE_ID> NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context.handshakeTimeout() : SSLClientChannel[Connected: Remote:X.X.X.X:443 Local:X.X.X.X]@739028 useCount=1 bytesRead=0 bytesWritten=0 age=55221ms lastIO=55221ms isOpen=true handshake timeout
Mesaj işleyicinin günlük dosyasında bu hatayı görürseniz daha ayrıntılı bir inceleme yapın. Edge Private ve Public Cloud kullanıcıları için daha fazla teşhis adımı başlıklı makaleyi inceleyin.
Günlük dosyasında el sıkışma mesajını görmüyorsanız Teşhis Bilgilerinin Toplanması Zorunludur sayfasına gidin.
Edge Private ve Public Cloud kullanıcıları için daha fazla teşhis adımı
Sorunu daha ayrıntılı bir şekilde tespit etmek için TLS/SSL el sıkışma işlemi sırasında zaman aşımı olup olmadığını onaylamak amacıyla TCP/IP paketlerini analiz etmek için tcpdump aracını kullanabilirsiniz.
- Private Cloud kullanıcısıysanız TCP/IP paketlerini arka uç sunucusuna veya Mesaj İşleyici'ye gönderebilirsiniz. Tercihen, bunları arka uçta yakalayın arka uç sunucusunda çözüldüğünden paketlerin şifresi arka uç sunucusunda çözülür.
- Public Cloud kullanıcısıysanız Mesaj İşleyen'e erişiminiz yoktur. Ancak arka uç sunucuda TCP/IP paketlerini yakalamak, sorunun tespit edilmesine yardımcı olabilir.
TCP/IP paketlerini nerede yakalayacağınıza karar verdikten sonra, şunu kullanın: tcpdump komutunu kullanabilirsiniz.
tcpdump -i any -s 0 host <IP address> -w <File name>
Arka uç sunucusunda TCP/IP paketlerini alıyorsanız
tcpdump
komutundaki İleti İşleyici'nin IP adresi. komutuna ekleyerek arka uç sunucu trafiğini incelemek için tcpdump sayfasına bakın.TCP/IP paketlerini Mesaj İşleyici üzerinden alıyorsanız herkese açık
tcpdump
komutunda arka uç sunucusunun IP adresi. İleti İşleyen trafiğini incelemek için komutu kullanmayla ilgili yardım için tcpdump başlıklı makaleyi inceleyin.Arka uç sunucusu/Mesaj İşleyici için birden fazla IP adresi varsa başka bir
tcpdump
komutu kullanmayı denemeniz gerekir. Bu araç hakkında daha fazla bilgi için tcpdump kullanın.
Wireshark aracını veya benzer bir aracı kullanarak TCP/IP paketlerini analiz edin. Aşağıdaki ekran görüntüsünde, Wireshark'taki TCP/IP paketleri gösterilmektedir.
Wireshark çıkışında, üç yönlü TCP el sıkışmasının tamamlandığına dikkat edin başarıyla ekleyebilirsiniz.
Ardından Mesaj İşleyen, 4. pakette "Client Hello" mesajını gönderir.
Arka uç sunucusundan onay almadığımız için İleti İşleyen, "Client Hello"yu yeniden iletir 5. pakette birden çok kez mesaj gönderir, Önceden tanımlanmış bir zaman aralığı bekledikten sonra 6 ve 7.
İleti işleyici, 3 denemeden sonra herhangi bir onay almadığında bağlantıyı kapattığını belirtmek için arka uç sunucuya FIN, ACK mesajını gönderir.
Örnek Wireshark oturumunda gösterildiği gibi, arka uçla bağlantı başarılıdır (1. adım). Ancak arka uç sunucusu hiçbir yanıt vermediği için SSL el sıkışım işlemi zaman aşımına uğramıştır.
Bu başucu kitabındaki sorun giderme adımlarını uyguladıysanız ve TLS/SSL el sıkışma hatasına neden olan zaman aşımı nedeniyle Çözüm bölümüne gidin.
Sorunları tespit etmek için API İzleme'yi kullanma
API İzleme, hata, performans ve gecikme sorunlarını ve bunların kaynağını (ör. geliştirici uygulamaları, API proxy'leri, arka uç hedefleri veya API platformu) teşhis etmek için sorunlu alanları hızlı bir şekilde tespit etmenizi sağlar.
Örnek senaryoyu inceleyin . Örneğin, messaging.adaptors.http.BadGateway hatası sayısı belirli bir eşiği aştığında bildirim almak için bir uyarı oluşturabilirsiniz.
Çözünürlük
SSL el sıkışma zaman aşımları genellikle arka uç sunucusuna bağlanamaz. Teşhis adımlarını uygulayıp el sıkışma hatasının zaman aşımı olduğunu belirlediyseniz nedeni tespit etmek ve güvenlik duvarı kısıtlamalarını düzeltmek için ağ ekibinizle iletişime geçmeniz gerekir.
Güvenlik duvarı kısıtlamalarının farklı ağ katmanlarına uygulanabileceğini unutmayın. Önceki işlemlerde, tüm ağ katmanlarındaki kısıtlamaların Apigee Edge arasında sorunsuz trafik akışı sağlamak için Mesaj İşlemci IP'lerine arka uç sunucusuna gidin.
Güvenlik duvarı kısıtlaması yoksa ve/veya sorun devam ediyorsa Teşhis Bilgileri Toplanması Gerekiyor başlıklı makaleyi inceleyin.
Teşhis Bilgileri Toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse lütfen aşağıdaki teşhis bilgilerini toplayın. Apigee Edge Destek Ekibi ile iletişime geçip paylaşın:
- Herkese Açık Bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş Adı
- Ortam Adı
- API Proxy Adı
- Hatayı yeniden oluşturmak için curl komutunu tamamlayın
- Hatayı gösteren izleme dosyası
- Arka uç sunucuda yakalanan TCP/IP paketleri
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Tamamlanan Hata Mesajını gözlemledim
- API Proxy paketi
- Hatayı gösteren izleme dosyası
- Mesaj İşleyici günlükleri /opt/apigee/var/log/edge-message-processor/logs/system.log
- Arka uç sunucuda veya İleti İşleyicide yakalanan TCP/IP paketleri.
- Bu Playbook'taki hangi bölümleri denediğiniz ve bu sorunun çözümünü hızlandırmamıza yardımcı olacak diğer bilgiler.