すべてのプロダクト
Search
ドキュメントセンター

:TLS 高速化のためのマルチバッファーの有効化

最終更新日:Feb 15, 2025

大規模マイクロサービスシナリオで大量の同時 HTTPS リクエストを迅速かつ効率的に処理する必要がある場合は、マルチバッファーを有効にして、Envoy での Transport Layer Security (TLS) 処理を高速化できます。マルチバッファー機能は、データパケットの暗号化と復号の高速化、ネットワーク遅延の削減、システムのセキュリティと同時リクエスト処理能力の向上に役立ちます。

前提条件

  • Enterprise Edition または Ultimate Edition のサービスメッシュ (ASM) インスタンスが作成されています。ASM インスタンスのバージョンは 1.10 以降です。詳細については、「ASM インスタンスの作成」をご参照ください。

  • Container Service for Kubernetes (ACK) クラスタが作成されており、クラスタ内のノードはマルチバッファー機能を提供する Intel Ice Lake CPU を使用しています。詳細については、「ACK マネージドクラスターの作成」をご参照ください。

    マルチバッファー機能を提供する Intel Ice Lake CPU を使用するインスタンスファミリーを表示する

    インスタンスファミリーの詳細については、「インスタンスファミリーの概要」をご参照ください。

    インスタンスファミリー

    説明

    g7

    g7se、ストレージ強化型汎用インスタンスファミリー

    g7、汎用インスタンスファミリー

    g7t、セキュリティ強化型汎用インスタンスファミリー

    c7

    c7、コンピューティング最適化インスタンスファミリー

    c7re、RDMA 強化インスタンスファミリー

    c7se、ストレージ強化型コンピューティング最適化インスタンスファミリー

    c7t、セキュリティ強化型コンピューティング最適化インスタンスファミリー

    r7

    r7p、メモリ最適化インスタンスファミリー

    r7se、ストレージ強化型メモリ最適化インスタンスファミリー

    r7、メモリ最適化インスタンスファミリー

    r7t、セキュリティ強化型メモリ最適化インスタンスファミリー

    その他

    re7p、ハイメモリインスタンスファミリー

    vgn7i-vws、vGPU アクセラレーションインスタンスファミリー

    gn7i、GPU コンピューティング最適化インスタンスファミリー

    ebmgn7i、GPU コンピューティング最適化 ECS Bare Metal Instance ファミリー

    sccc7、コンピューティング最適化 SCC インスタンスファミリー

    sccg7、汎用 SCC インスタンスファミリー

  • クラスタが ASM インスタンスに追加されています。詳細については、「ASM インスタンスへのクラスタの追加」をご参照ください。

背景情報

ネットワークセキュリティ技術の発展に伴い、TLS はネットワーク通信の礎石となっています。TLS セッションは、一般的にハンドシェイクフェーズとデータ転送フェーズに分けられます。ハンドシェイクフェーズの最も重要なタスクは、非対称暗号化を使用してセッションキーをネゴシエートすることです。データ転送フェーズでは、データが転送される前に、セッションキーを使用してデータに対して対称暗号化を実行します。

マイクロサービスシナリオでは、Envoy がイングレスゲートウェイとして機能する場合でも、マイクロサービスのプロキシとして機能する場合でも、Envoy は多数の TLS リクエストを処理する必要があります。特にハンドシェイクフェーズでは、非対称暗号化と復号に大量の CPU リソースが消費されます。これは、大規模マイクロサービスシナリオにおけるボトルネックとなる可能性があります。ASM は、Envoy での TLS 処理を高速化するために Intel マルチバッファーを使用して、ボトルネックを軽減します。

マルチバッファーは、Intel CPU AVX-512 命令を使用して、複数の独立したバッファーを同時に処理します。つまり、1 回の実行サイクルで複数の暗号化および復号操作を同時に実行できるため、暗号化と復号が高速化されます。マルチバッファーには追加のハードウェアは必要ありません。対応する CPU が AVX-512 命令セットをサポートしている必要があります。Alibaba Cloud は、最新の AVX-512 命令セットをサポートする Ice Lake CPU を使用しています。

手順

方法 1: ASM インスタンスのマルチバッファーを有効にする

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM インスタンス] > [基本情報] を選択します。

  3. [基本情報] ページの右上隅にある [設定] をクリックします。

  4. [設定の更新] パネルで、[マルチバッファーベースの TLS 暗号化と復号のパフォーマンス最適化を有効にする] を選択し、[OK] をクリックします。

    クラスタノードが汎用インスタンスファミリー g7 の場合、マルチバッファーにより 1 秒あたりのクエリ (QPS) パフォーマンスが 75% 向上します。クラスタノードが Elastic Compute Service (ECS) ベアメタルインスタンスで実行されている場合、パフォーマンスはさらに向上します。

方法 2: イングレスゲートウェイのマルチバッファーを有効にする

イングレスゲートウェイの作成時にマルチバッファーを有効にする

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

  3. [イングレスゲートウェイ] ページで、[作成] をクリックします。[作成] ページの [詳細オプション] セクションで、[マルチバッファーベースの TLS 暗号化と復号のパフォーマンス最適化を有効にする] を選択し、パラメーターを構成して、[作成] をクリックします。

    これらのパラメーターの詳細については、「イングレスゲートウェイの作成」をご参照ください。

    パラメーター

    説明

    [サポートされている Nodeaffinity]

    マルチバッファーが有効になるノードのラベルを選択します。

    [ポーリング遅延 (ミリ秒)]

    ほとんどの場合、このパラメーターの値を変更する必要はありません。

    マルチバッファーは、複数のリクエストを同時に暗号化および復号します。マルチバッファーが 8 つのリクエストを同時に暗号化および復号できると仮定します。マルチバッファーは、8 つのリクエストを受信するまで動作を開始しません。リクエスト数が大きい場合、マルチバッファーは短時間で 8 つのリクエストを受信します。ただし、リクエスト数が少ない場合、マルチバッファーは長時間待機する可能性があります。この場合、ポーリング遅延を指定すると、リクエスト数が 8 未満の場合でも、指定された遅延が終了した後、マルチバッファーは既存のリクエストを暗号化および復号します。

既存のイングレスゲートウェイのマルチバッファーを有効にする

  1. ASM コンソール にログインします。左側のナビゲーションウィンドウで、[サービスメッシュ] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

  3. イングレスゲートウェイページで、目的のゲートウェイの名前をクリックします。[概要] > [ゲートウェイの詳細] を選択します。表示されるページの [詳細オプション] セクションで、编辑[パフォーマンス最適化] の横にある Multibuffer ベースの TLS 暗号化および復号パフォーマンスの最適化を有効にする[送信] アイコンをクリックし、 を選択し、パラメーターを構成して、 をクリックします。

    これらのパラメーターの詳細については、「イングレスゲートウェイの作成」をご参照ください。

    パラメーター

    説明

    [サポートされている Nodeaffinity]

    マルチバッファーが有効になるノードのラベルを選択します。

    [ポーリング遅延 (ミリ秒)]

    ほとんどの場合、このパラメーターの値を変更する必要はありません。

    マルチバッファーは、複数のリクエストを同時に暗号化および復号します。マルチバッファーが 8 つのリクエストを同時に暗号化および復号できると仮定します。マルチバッファーは、8 つのリクエストを受信するまで動作を開始しません。リクエスト数が大きい場合、マルチバッファーは短時間で 8 つのリクエストを受信します。ただし、リクエスト数が少ない場合、マルチバッファーは長時間待機する可能性があります。この場合、ポーリング遅延を指定すると、リクエスト数が 8 未満の場合でも、指定された遅延が終了した後、マルチバッファーは既存のリクエストを暗号化および復号します。

方法 3: ポッドのマルチバッファーを有効にする

ポッドのマルチバッファーを有効にするには、ASM インスタンスのバージョンが 1.14.3 以降である必要があります。ASM インスタンスの更新方法の詳細については、「ASM インスタンスの更新」をご参照ください。

  1. ポッドがマルチバッファーをサポートするノードにスケジュールされることを確認します。

  2. ポッドに特別なアノテーションを構成します。

    アノテーションの例:

    proxy.istio.io/config: |
      privateKeyProvider:
        cryptomb:
          pollDelay: 10ms
  3. 構成を有効にするには、ポッドを再起動します。

よくある質問

コントロールプレーンでマルチバッファーが有効になっているが、データプレーン Kubernetes クラスタ内のノードが Intel Ice Lake を使用していない場合はどうなりますか?

Envoy からアラートログが生成され、マルチバッファーは有効になりません。告警日志

タイプが Enterprise Edition または Ultimate Edition で、バージョンが 1.10 以降の ASM インスタンスは、TLS 高速化が有効になっている場合、TLS 高速化が有効になっているかどうかを自動的に判断できます。サービスまたはゲートウェイポッドがスケジュールされているノードが Intel Ice Lake を使用していない場合、ASM は対応する高速化構成をノードに配信しません。この場合、TLS 高速化は有効になりません。

マルチバッファーをサポートするノードを Kubernetes クラスタに追加して、マルチバッファーを有効にするにはどうすればよいですか?

  1. Intel Ice Lake を使用するノードを Kubernetes クラスタに追加します。詳細については、「既存の ECS インスタンスを ACK クラスタに追加する」をご参照ください。

  2. 新しく追加されたノードに multibuffer-support:true ラベルを追加します。詳細については、「ノードラベルとテイントの管理」をご参照ください。

  3. ノードアフィニティを追加するには、イングレスゲートウェイの YAML ファイルに次のコンテンツを追加します。詳細については、「ASM ゲートウェイの CRD フィールド」をご参照ください。

    ノードアフィニティを追加すると、イングレスゲートウェイポッドは、マルチバッファーをサポートする新しく追加されたノードにスケジュールされます。

    affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - preference:
                matchExpressions:
                  - key: feature.node.kubernetes.io/mb-feature-enabled
                    operator: In
                    values:
                      - 'true'
              weight: 1
  4. Enterprise Edition または Ultimate Edition の ASM インスタンスでマルチバッファー機能を有効にします。詳細については、「方法 1: ASM インスタンスのマルチバッファーを有効にする」セクションをご参照ください。

    ASM インスタンスのマルチバッファーを有効にすると、新しく追加されたノードはマルチバッファーを使用して TLS 処理を高速化できます。

参考資料

ASM は、サービスディスカバリーセレクター、サイドカーレコメンデーション、適応型 xDS 最適化機能を提供して、コントロールプレーンの構成プッシュ効率を向上させ、サイドカーの構成サイズを削減するのに役立ちます。詳細については、「構成プッシュの最適化の概要」をご参照ください。