エッジLBプロセスのセグメンテーション違反によりサービスが中断される
search cancel

エッジLBプロセスのセグメンテーション違反によりサービスが中断される

book

Article ID: 425409

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

免責事項:これは英文の記事「Segmentation Fault in Edge LB Process Causes Service Interruption」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • NSX Edge で実行されているロード バランサ プロセス (Nginx) が、セグメンテーション エラーにより予期せずクラッシュします。
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### kernel - - - [########.######] traps: nginx[#######] general protection fault ip:<ADDR> sp:<ADDR> error:0 in nginx[<ADDR>+<OFFSET>]
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### kernel - - - [########.######] grsec: From ###.###.###.###: Segmentation fault occurred at 0000000000000000 in /opt/vmware/nsx-edge/bin/nginx[nginx:#######] uid/euid:###/### gid/egid:###/###, parent /opt/vmware/nsx-edge/bin/nginx[nginx:#######] uid/euid:###/### gid/egid:###/###
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### - [nsx@#### comp="nsx-edge" subcomp="node-mgmt" username="root" level="WARNING"] Core file generated: /var/log/core/core.nginx.##########.#######.###.##.gz
  • その結果、影響を受けるロード バランサーを通過するすべてのトラフィックと通信が中断されます。
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####
    YYYY-MM-DDTHH:MM:SS.NNNZZ ##### NSX ####### LOAD-BALANCER [nsx@#### comp="nsx-edge" subcomp="lb" s2comp="lb" level="ERROR" errorCode="EDG9999999"] [<LB-UUID>] recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client: ###.###.###.###, server: ###.###.###.###:###, upstream: "###.###.###.###:###", bytes from/to client:####/####, bytes from/to upstream:#####/####

Environment

VMware NSX

Cause

この問題は、ロード バランサーで 4 つの構成条件の特定の組み合わせが同時に満たされた場合に発生し、接続のクリーンアップ中にメモリ破損を引き起こします。

  1. LB 統計機能が有効になっています (デフォルト設定)。
  2. SNAT 変換モードがサーバー プールで非アクティブに設定され、SNAT が無効になっています。
  3. トランスポート フェーズ ルールは仮想サーバー上で構成されます。
  4. アプリケーション プロファイルでサーバー キープアライブが有効になっています。

Resolution

この問題は、NSX 3.2.4、4.2.0 以降で修正されています。

クラッシュを防ぐには、次のいずれかの回避策を適用します。

  • プール構成で SNAT を有効にします。
  • または、サーバーのキープアライブ設定を無効にします。
  • または、トランスポート フェーズ ルールの構成を削除します。