502 Bozuk Ağ Geçidi Zaman Aşımı Hatası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Belirti

İstemci uygulaması 502 Hatalı Ağ Geçidi hatası alır. Mesaj İşleyici, arka uç sunucusundan 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ını şu web siteleri:
TLS/SSL el sıkışma zaman aşımı Mesaj İşleyici ile arka uç sunucusu arasında TLS/SSL El Sıkışması sırasında zaman aşımı olur. Edge Özel ve Genel Bulut kullanıcıları

Neden: TLS/SSL el sıkışma zaman aşımı

Apigee Edge'de, Edge Mesaj İşleyici ile arka uç sunucusu arasında TLS iletişimini etkinleştirmek için arka uç sunucuya TLS/SSL bağlantısı ayarlayabilirsiniz.

TLS/SSL el sıkışması birkaç adımdan oluşur. Bu hata genellikle Mesaj İşleyici ile arka uç sunucusu arasındaki TLS/SSL el sıkışması zaman aşımına uğradığında meydana gelir.

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 talimatları listelenmiştir.

İzleme oturumu çıkışını inceleme

Aşağıdaki adımlarda, Apigee Edge Trace aracı kullanılarak sorunun ön teşhisinin nasıl yapılacağı açıklanmaktadır.

  1. Edge kullanıcı arayüzünde, etkilenen API proxy'si için bir İzleme oturumu etkinleştirin.
  2. Başarısız API isteğinin izlemesi aşağıdakileri gösteriyorsa bir TLS/SSL el sıkışma zaman aşımı hatası oluşmuş olabilir. Hatanın olası nedeni, arka uç sunucusu güvenlik duvarının Apigee trafiğini engellemesidir.

    1. 502 Hatalı Ağ Geçidi hatasının 55 saniye sonra oluşup oluşmadığını belirleyin. Bu süre, Mesaj İşleyici'de ayarlanan varsayılan zaman aşımı süresidir. Hatanın 55 saniye sonra meydana geldiğini görürseniz bu, sorunun olası nedeninin zaman aşımı olduğunu belirtir.
    2. Hatanın, hatayı gösterip göstermediğini belirleyin: messaging.adaptors.http.BadGateway. Bu hata genellikle bir zaman aşımı oluştuğunu belirtir.
    3. Edge Private Cloud'daysanız iz çıkışındaki X-Apigee.Message-ID alanının değerini aşağıda gösterildiği gibi not edin. Private Cloud kullanıcısı, daha sonra açıklandığı gibi daha ayrıntılı sorun giderme işlemi yapmak için bu kimlik değerini kullanabilir.

      1. İzleme yolundaki Analytics Verileri Kaydedildi simgesini tıklayın:

      2. 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 doğrulamak için Public Cloud veya Private Cloud kullanıyor olmanıza bağlı olarak aşağıdaki bölümlerde yer alan 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ğrulamaya yardımcı olması için aşağıdaki adımları uygulayabilirsiniz. Bu adımda Message Processor günlük dosyasında alakalı bilgiler incelenir. Edge Public Cloud kullanıyorsanız bu bölümü atlayıp Özel ve Herkese Açık Bulut Kullanıcıları İçin Diğer Teşhis Adımları bölümüne gidebilirsiniz.

  1. telnet komutunu kullanarak her bir Mesaj İşleyiciden doğrudan belirli arka uç sunucusuna bağlanıp bağlanamadığınızı kontrol edin:

    1. Arka uç sunucusu tek bir IP adresine çözümlenirse şu komutu kullanın:

      telnet BackendServer-IPaddress 443
    2. Arka uç sunucusu birden çok IP adresine çözümlenirse arka uç sunucusunun ana makine adını telnet komutunda aşağıda gösterildiği gibi kullanın:

      telnet BackendServer-HostName 443

    Arka uç sunucusuna hata olmadan 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.

  2. El sıkışma hatası kanıtı için İleti İşleyici günlük dosyasına göz atın. Dosyayı açın:

    /opt/apigee/var/log/edge-message-processor/system.log

    ve benzersiz mesaj kimliğini (izleme dosyasında bulduğunuz X-Apigee.Message-ID değeri) arayın. Aşağıda gösterildiği gibi, ileti kimliğiyle ilişkili bir el sıkışma hata 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
    

İleti işlemcisinin günlük dosyasında bu hatayı görüyorsanız daha fazla araştırmaya devam edin. Edge Özel ve Herkese Açık Bulut kullanıcıları için diğer teşhis adımları bölümüne gidin.

El sıkışma mesajını günlük dosyasında görmüyorsanız Teşhis Bilgilerini Toplama bölümüne gidin.

Edge Private ve Public Cloud kullanıcıları için diğer teşhis adımları

Sorunu daha ayrıntılı bir şekilde belirlemek için, TLS/SSL el sıkışması sırasında zaman aşımının oluşup oluşmadığını doğrulamak üzere TCP/IP paketlerini analiz etmek için tcpdump aracını kullanabilirsiniz.

  1. Private Cloud kullanıcısıysanız TCP/IP paketlerini arka uç sunucuda veya Mesaj İşleyicide yakalayabilirsiniz. Paketlerin şifresi arka uç sunucuda çözüldüğünden tercihen bunları arka uç sunucusuna yakalayın.
  2. Herkese Açık Bulut kullanıcısıysanız Mesaj İşlemciye erişiminiz yoktur. Ancak TCP/IP paketlerinin arka uç sunucusunda yakalanması sorunun belirlenmesine yardımcı olabilir.
  3. TCP/IP paketlerinin nerede yakalanacağına karar verdikten sonra TCP/IP paketlerini yakalamak için aşağıdaki tcpdump komutunu kullanın.

    tcpdump -i any -s 0 host <IP address> -w <File name>
    
    • Arka uç sunucusunda TCP/IP paketlerini alıyorsanız tcpdump komutunda Mesaj İşleyici'nin genel IP adresini kullanın. Arka uç sunucu trafiğini incelemek üzere komutu kullanma konusunda yardım için tcpdump adresine bakın.

    • Mesaj İşleyici'deki TCP/IP paketlerini alıyorsanız tcpdump komutunda arka uç sunucusunun genel IP adresini kullanın. İleti İşleyici trafiğini incelemek üzere komutu kullanma konusunda yardım almak için tcpdump adresine bakın.

    • Arka uç sunucu/İleti İşleyici için birden fazla IP adresi varsa başka bir tcpdump komut kullanımını denemeniz gerekir. Bu araç hakkında daha fazla bilgi edinmek ve bu komutun diğer varyantları için tcpdump bölümünü inceleyin.

  4. TCP/IP paketlerini Wireshark veya benzer bir araç kullanarak analiz edin. Aşağıdaki ekran görüntüsünde Wireshark'taki TCP/IP paketleri gösterilmektedir.

  5. Wireshark çıktısında, üç yönlü TCP el sıkışmanın ilk 3 pakette başarıyla tamamlandığına dikkat edin.

  6. İleti İşleyici, daha sonra 4. pakette "İstemci Merhaba" mesajını gönderir.

  7. Arka uç sunucudan herhangi bir onay verilmediği için Mesaj İşleyici, önceden tanımlanmış bir zaman aralığı bekledikten sonra "Client Hello" mesajını 5, 6 ve 7 numaralı paketlerde birden çok kez iletir.

  8. Mesaj İşleyici 3 yeniden denemeden sonra herhangi bir onay almadığında bağlantıyı kapattığını belirtmek için arka uç sunucusuna FIN, ACK mesajını gönderir.

  9. Ö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 zaman yanıt vermediğinden SSL el sıkışması 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 bir zaman aşımının neden olduğunu belirlediyseniz Çözüm bölümüne gidin.

Bir sorunu tanımlamak için API Monitoring'i kullanma

API İzleme; hata, performans ve gecikme sorunlarını ve bunların kaynaklarını (ör. geliştirici uygulamaları, API proxy'leri, arka uç hedefleri veya API platformu) teşhis etmek için sorunlu alanları hızla ayırmanızı sağlar.

API Monitoring'i kullanarak API'lerinizle ilgili 5xx sorunlarını nasıl gidereceğinizi gösteren örnek bir senaryoyu inceleyin. Örneğin, messaging.adaptors.http.BadGateway hatası sayısı belirli bir eşiği aştığında bilgilendirilmek için bir uyarı ayarlayabilirsiniz.

Çözünürlük

SSL el sıkışma zaman aşımları genellikle arka uç sunucusundaki Apigee Edge trafiğini engelleyen güvenlik duvarı kısıtlamaları nedeniyle meydana gelir. Teşhis adımlarını uyguladıysanız ve el sıkışma hatasının nedeninin zaman aşımı olduğunu belirlediyseniz nedeni belirlemek 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. Apigee Edge ile arka uç sunucusu arasında sorunsuz bir trafik akışı sağlamak için Mesaj İşleyici IP'lerine ilişkin tüm ağ katmanlarındaki kısıtlamaların kaldırıldığından emin olmanız önemlidir.

Güvenlik duvarı kısıtlaması yoksa ve/veya sorun devam ederse Tanılama Bilgilerinin Toplanması Zorunludur bölümüne gidin.

Teşhis Bilgileri Toplanmalı

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çin ve bu bilgileri paylaşın:

  1. Herkese Açık Bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
    1. Kuruluş Adı
    2. Ortam Adı
    3. API Proxy Adı
    4. Hatayı yeniden oluşturmak için curl komutunu tamamlayın
    5. Hatayı gösteren İzleme Dosyası
    6. Arka uç sunucuda yakalanan TCP/IP paketleri
  2. Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
    1. Tam Hata Mesajı gözlemlendi
    2. API Proxy paketi
    3. Hatayı gösteren İzleme Dosyası
    4. Mesaj İşleyici günlükleri /opt/Apigee/var/log/edge-message-processor/logs/system.log
    5. Arka uç sunucuda veya Mesaj İşleyicide yakalanan TCP/IP paketleri.
  3. Bu Başucu Kitabı'nın hangi bölümlerini denediğinizle ilgili ayrıntılar ve bu sorunun çözümünü hızlandırmamıza yardımcı olacak diğer görüşler.