SUSE Multi-Linux Managerサーバとプロキシ間で高いsync時間のトラブルシューティング

WebUIまたはAPIコールを通じて配布またはシステム設定で行われる変更に応じて、cobbler sync コマンドが SUSE Multi-Linux Managerサーバから SUSE Multi-Linux Managerプロキシへファイルを転送するために必要となる場合があります。 これを達成するために、Cobbler は`/etc/cobbler/settings`に指定されたプロキシのリストを使用します。

その設計上、cobbler sync は変更されたファイルや最近追加されたファイルのみを同期することはできません。

その代わりに、cobbler sync を実行すると、/etc/cobbler/settings`で構成されたすべての指定プロキシに対して/srv/tftpboot`ディレクトリの完全同期がトリガーされます。 また、関与するシステム間のWAN接続のレイテンシにも影響されます。

のログによると、同期のプロセスが完了するまでにかなりの時間がかかる場合があります。/var/log/cobbler/

たとえば、次の日時に開始したとします。

Thu Jun  3 14:47:35 2021 - DEBUG | running python triggers from /var/lib/cobbler/triggers/task/sync/pre/*
Thu Jun  3 14:47:35 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*

そして、次の日時に終了したとします。

Thu Jun  3 15:18:49 2021 - DEBUG | running shell triggers from /var/lib/cobbler/triggers/task/sync/post/*
Thu Jun  3 15:18:49 2021 - DEBUG | shell triggers finished successfully

転送量は約1.8 GBでした。 転送にはほぼ30分かかりました。

比較すると、/srv/tftboot と同じサイズの大きな単一ファイルのコピーは、数分以内に完了します。

SUSE Multi-Linux Manager サーバとプロキシ間でファイルをコピーするために`rsync`ベースのアプローチに切り替えると、転送時間と待機時間を短縮できる場合があります。

スクリプトはコマンドラインオプションを受け付けません。 スクリプトを実行する前に、手動で編集し、MLMHOSTNAMEMLMIP、および`MLMPROXY1`変数を正しく設定する必要があります。

スクリプトの個別調整に対するサポートはありません。 スクリプトとその内部のコメントは、プロセスと考慮すべきステップの概要を提供することを目的としています。 さらなる支援が必要な場合は、SUSEコンサルティングに連絡してください。

スクリプトを使用した提案されるアプローチは、次の環境で役立ちます。

  • SUSE Multi-Linux ManagerプロキシシステムがWAN接続を介して接続されています。

  • /srv/tftboot には、ディストリビューション用ファイルおよびクライアントPXEブートファイルが多数含まれており、合計で数千ファイルあります。

  • /etc/cobbler/settings 内のプロキシはすべて無効化されており、そうでなければ SUSE Multi-Linux Manager は引き続きプロキシにコンテンツを同期します。

    #proxies:
    # - "MLMproxy.MLMproxy.test"
    # - "MLMproxy2.MLMproxy.test"
プロシージャ:新しいsync速度の分析
  1. SUSE Multi-Linux Managerと関連するシステム間のTCPトラフィックのダンプを取得します。

    • SUSE Multi-Linux Managerサーバー上:

      tcpdump -i ethX -s 200 host <ip-address-of-susemanagerproxy> and not ssh
    • SUSE Multi-Linux Managerプロキシ上:

      tcpdump -i ethX -s 200 host <ip-address-of-susemanager> and not ssh
    • これにより、分析を実行するのに十分な200のパッケージサイズのみがキャプチャされます。

    • プロキシと通信するためにSUSE Multi-Linux Managerが使用するネットワークインタフェースに対して、ethXを調整してください。

    • 最後に、さらにパッケージ数を削減するため、ssh通信はキャプチャされません。

  2. cobbler sync を開始します。

    • 同期を強制するため、最初にCobbler のjsonキャッシュファイルを削除してから、`cobbler sync`を実行します。

      rm /var/lib/cobbler/pxe_cache.json
      cobbler sync
  3. {command}`cobbler sync` が終了したら、TCPdumpsを停止します。

  4. Wiresharkを使用してTCPダンプを開き、Statistics > Conversations に移動して、ダンプが分析されるのを待ちます。

  5. TCPタブに切り替えます。 このタブに表示される数値は、SUSE Multi-Linux ManagerサーバーとSUSE Multi-Linux Managerプロキシ間でキャプチャされた会話の総数を示します。

  6. `Duration`列を探します。

    • 昇順にソートして開始し、ファイルの転送にかかった最小時間を確認します。

    • 降順にソートして続行し、カーネルやinitrdの転送など、大きなファイルの最大値を確認します。

      ポート4505と4506はSalt通信に使用されるため無視してください。

TCPdumpの分析では、SUSE Multi-Linux Managerサーバーからプロキシへの、サイズが約1800バイトの小さなファイルの転送に約0.3秒かかったことが示されています。

大きなファイルは多くありませんでしたが、小さなファイルの数が多いため、転送されるファイルごとに新しいTCP接続が作成され、確立された接続数が多くなりました。

したがって、最小転送時間と必要な接続数(例として約5000)がわかれば、転送時間全体の概算推定時間が得られます。5000 * 0.3 / 60 = 25分。