502 Bozuk Ağ Geçidi - Yuvadan çıkış

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Belirti

İstemci uygulaması 502 Bad Gateway HTTP durum kodunu Edge Mikro Ağ Geçidi'ndeki API çağrılarına yanıt olarak ECONNRESET kodunu girmeniz gerekir.

Hata mesajı

İstemci aşağıdaki yanıt kodunu görür:

HTTP/1.1 502 Bad Gateway

Yanıt, aşağıdaki hata mesajını içerir:

{"message":"socket hang up","code":"ECONNRESET"}

Olası nedenler

Neden Açıklama Şunun için geçerli sorun giderme talimatları:
Canlı tutma zaman aşımı yanlış yapılandırılmış Edge Microgateway ile hedef sunucu arasında yanlış yapılandırılmış canlı tutma zaman aşımları. Edge Herkese Açık ve Private Cloud kullanıcıları
Hedef sunucu bağlantıyı zamanından önce kapatıyor Edge Mikro ağ geçidi gönderilirken hedef sunucu bağlantıyı zamanından önce kapatır kullanır. Edge Herkese Açık ve Private Cloud kullanıcıları

Sık kullanılan teşhis adımları

  1. Edge Microgateway günlüklerini kontrol edin:
    /var/tmp/edgemicro-`hostname`-*.log
    
    .
  2. ECONNRESET koduyla ilgili 502 hatası olup olmadığını görmek için arama yapın belirli bir süre boyunca (sorun geçmişte olduysa) veya herhangi bir talep varsa hâlâ 502 ile başarısız oluyor.
    2021-06-23T03:52:24.110Z [error][0:8000][3][myorg][test]
    [emg_badtarget/flakey/hangup][][][6b089a00-d3d6-11eb-95aa-911f1ee6c684]
    [microgateway-core][][GET][502][socket hang up][ECONNRESET][]
    
  3. Günlük kaydı düzeyini warn veya info olarak ayarladıysanız ikincisinde hedef sunucu ana makine adını ve bağlantı noktasını içeren bir [warn] mesajı olmalıdır öğesine dokunun. Bu örnekte X.X.X.X:8080 değeridir ve bu değer kullanılabilir daha sonra tcpdump yakalayabilir.
    2021-06-23T03:52:24.109Z
    [warn][X.X.X.X:8080][3][myorg][test][emg_badtarget/flakey/hangup]
    [][][6b089a00-d3d6-11eb-95aa-911f1ee6c684][plugins-middleware]
    [targetRequest error][GET][][socket hang up][ECONNRESET][395]
    
  4. [socket hang up][ECONNRESET] hata kodu, hedef sunucunun , Edge Microgateway ile bağlantısını kapattı. Bu değer, günlüklerde aranabilir ve ne sıklıkta ortaya çıktığını gösterir.

Neden: Canlı tutma zaman aşımı yanlış yapılandırılmış

Teşhis

  1. Yaygın teşhis adımları bölümündeki adımları uygulayın ve [socket hang up][ECONNRESET] hata.
  2. Cevabınız evet ise, tcpdump:

tcpdump kullanma

  1. Şu cihazda Edge Microgateway ile arka uç sunucusu arasında bir tcpdump yakalayın: Edge Microgateway ana makine işletim sistemi için aşağıdaki komutu kullanın:
    tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
    
  2. Yakalanan tcpdump öğesini analiz edin:

    Örnek tcpdump çıkışı: ( resmi büyüt)

    Yukarıdaki tcpdump örneğinde aşağıdakileri görebilirsiniz:

    1. 250288 paketinde, istemci bir POST isteği gönderir.
    2. 250371 paketinde, sunucu 200 OK ile yanıt verir.
    3. 250559 paketinde, istemci bir ACK. gönderir
    4. 250560 paketinde, sunucu, Continuation mesajını alırsınız.
    5. 250561 paketinde, istemci bir ACK. gönderir.
    6. 262436 paketinde, sunucu,FIN, ACK istemci bağlantı kapatma işlemini başlatır. Bunun yaklaşık beş saniye olduğunu unutmayın saniye sonra yeniden çalışır. (250561).
    7. 262441 paketinde, istemci başka bir POST gönderir. isteği gönderin. Ancak sunucu bağlantı. Paket içinde RST ile yanıt verir 262441.

    Bu örnekte, aynı bağlantı en az bir kez başarılı bir şekilde yeniden kullanıldı. Ancak, Sunucu, beş saniye sonra bağlantıyı kapatma işlemini başlatır. istemcinin yeni istek gönderdiği sırada olan boşta kalma süresidir. Bu arka uç sunucusunun canlı tutma zaman aşımının büyük olasılıkla istemcide ayarlanan değerdir. Bunu doğrulamak için bkz. Edge Microgateway ve arka uç sunucusundaki keep-alive zaman aşımını karşılaştırın.

Canlı tutma zaman aşımlarını karşılaştırma

  1. Edge Microgateway'in belirli bir canlı tutma zaman aşımı özelliği yoktur. Evet çalıştırıldığı işletim sistemi tarafından belirlenir. Yaygın örnekler arasında Windows, ve Docker container'larını kapsar.
  2. Bu, işletim sisteminde özelleştirilmiş olabilir. sistem yöneticinize başvurun. Linux işletim sistemlerinde varsayılan olarak bir "canlı yayın" özelliği vardır. iki saatlik zaman aşımına uğradı.
  3. Daha sonra, arka uç sunucunuzda yapılandırılan keep-alive zaman aşımı özelliğini kontrol edin. Haydi arka uç sunucunuzun 10 saniyelik bir değerle yapılandırıldığını varsayalım.
  4. İşletim sistemindeki canlı tutma zaman aşımı değerinin arka uç sunucusunda Keep-alive zaman aşımı özelliğinin değerinden yüksek olduğundan içeriyorsa 502 hatalarının nedeni budur.

Çözünürlük

Canlı tutma zaman aşımı özelliğinin, Edge'in yüklü olduğu işletim sisteminde her zaman daha düşük olduğundan emin olun. Mikro ağ geçidi arka uç sunucusuyla karşılaştırıldığında çalışıyor.

  1. Arka uç sunucusunda keep-alive zaman aşımı için ayarlanan değeri belirleyin.
  2. İşletim sisteminde canlı tutma zaman aşımı özelliği için uygun bir değer Keep-alive zaman aşımı özelliğinin arka uçta ayarlanan değerden daha düşük olması nedeniyle işletim sisteminiz için geçerli olan adımları uygulayarak) oluşturun.

En İyi Uygulama

Aşağı akış bileşenlerinin her zaman daha az canlı tutma zaman aşımına sahip olması önemle tavsiye edilir. bu tür yarış koşullarından kaçınmak için yukarı akış sunucularında yapılandırılandan daha yüksek bir eşikle 502 hata. Her bir aşağı akış atlaması, her bir yukarı akış atlama değerinden daha düşük olmalıdır. Kenarda Aşağıdaki yönergelerin kullanılması iyi bir uygulamadır:

  1. İstemci uygulaması veya yük dengeleyicideki canlı tutma zaman aşımı, Edge Mikro Ağ Geçidi canlı tutma zaman aşımı.

    Edge Mikro Ağ Geçidi'nde canlı tutma zaman aşımını yapılandırmak için keep_alive_timeout değeri ~/.edgemicro/org-env-config.yaml dosya

    edgemicro:
      keep_alive_timeout: 65000
    
    .
  2. Edge Microgateway işletim sistemi canlı tutma zaman aşımı, hedeften az olmalıdır sunucu aktivasyonu zaman aşımına uğrar.
  3. Edge Microgateway'in önünde veya arkasında başka atlamalarınız varsa aynı kural tarafından uygulanır. Bu işlemi her zaman aşağı akış istemcisinin sorumluluğunda bağlantı kurmalısınız.
ziyaret edin.

Neden: Hedef sunucu bağlantıyı zamanından önce kapatıyor

Teşhis

  1. Yaygın teşhis adımları bölümünde açıklanan adımları uygulayın ve [socket hang up][ECONNRESET] hatasını aldım.
  2. Cevabınız evet ise, aşağıda açıklandığı şekilde tcpdump yardımıyla daha ayrıntılı araştırma yapın.

    [targetRequest error][GET][][socket hang up][ECONNRESET] hata mesajı yukarıdaki örnekte, bu hatanın Edge Microgateway'de oluştuğunu belirtir , isteği arka uç (hedef) sunucuya gönderiyordu. Bir başka deyişle Edge Microgateway, Arka uç sunucusuna API isteği gönderildi ve yanıt bekleniyordu. Ancak arka uç Edge Microgateway bir yanıt almadan önce sunucu bağlantıyı aniden sonlandırdı.

  3. Arka uç sunucu günlüklerinizi kontrol edin ve arka uç sunucusunun bağlantıyı aniden sonlandırmasına neden olduysa. Herhangi bir hata veya bilgilerini seçin, ardından Çözüm bölümüne gidin ve sorunu uygun şekilde düzeltin arka uç sunucunuzda.
  4. Arka uç sunucunuzda herhangi bir hata veya bilgi yoksa Edge Microgateway sunucusunda tcpdump çıkışı:
    tcpdump -i any -s 0 host TARGET_SERVER_HOSTNAME -w FILENAME.pcap
    
  5. Yakalanan tcpdump öğesini analiz edin:

    Örnek tcpdump çıkışı: ( resmi büyüt)

    Yukarıdaki tcpdump örneğinde aşağıdakileri görebilirsiniz:

    1. 4. pakette, Edge Microgateway, hedefe bir GET isteği gönderdi sunucu.
    2. 5. pakette, hedef sunucu ACK ile yanıt vererek isteği gönderin.
    3. Ancak 6. pakette, hedef sunucusu, bağlantının kapatılmasını başlatan bir FIN, ACK gönderir.
    4. 7 ve sonraki paketlerde bağlantı karşılıklı olarak kapatılır. Bağlantı, Edge Microgateway, yanıt gönderilmeden önce kapatıldığında HTTP 502 hatasını döndürür. geri gönderilir.
    5. 8 paketinin zaman damgası 2021-06-23T03:52:24.110Z (Edge Mikro Ağ Geçidi) için hatanın günlüğe kaydedildiği zaman damgasına karşılık gelir. günlükler. Günlük dosyalarındaki ve tcpdump içindeki zaman damgaları genellikle .

    Çözünürlük

    Arka uç sunucusunda sorunu uygun şekilde düzeltin.

    Sorun devam ederse ve sorun giderme için yardıma ihtiyacınız varsa 502 Bad Gateway Error veya Edge Microgateway'de sorun olduğundan şüpheleniyorsanız Teşhis bilgileri toplanmalıdır.

    Teşhis bilgileri toplanmalıdır

    Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki Apigee Edge Destek Ekibi ile iletişime geçin:

    • Günlük dosyaları: Varsayılan klasör /var/tmp olsa da geçersiz kılınabilir ana config.yaml dosyasında (logging > dir parameter) yer alır. Evet sağlamadan önce log > level değerinin info olarak değiştirilmesi önerilir. Apigee Destek'e gönderebilirsiniz.
    • Yapılandırma dosyası: Edge Microgateway'in ana yapılandırması YAML dosyasını varsayılan Edge Microgateway klasöründe ($HOME/.edgemicro) bulabilirsiniz. Bir default.yaml adlı varsayılan yapılandırma dosyası ve ardından her ortam için bir tane ORG-ENV-config.yaml. Lütfen bu dosyayı yükleyin tamamı için 100 TL'lik bir değer girilmelidir.