NetScaler CPXのカスタムメトリックによる水平Podオートスケーラー

最終公開日 : Oct 02, 2026
Kubernetesクラスターにワークロードを初めてデプロイする場合、リソース要件や、それらの要件が本番環境でどのように変化するかを正確に予測することは困難です。水平Podオートスケーラー (HPA) を使用すると、実際のリソース使用量など、さまざまなメトリックに基づいてワークロード内のPodの数を自動的にスケーリングできます。HPAは、デプロイ、レプリカセット、レプリケーションコントローラーなど、KubernetesベースのリソースをスケーリングするKubernetesが提供するリソースです。
従来、HPAは必要なメトリックをメトリックサーバーから取得します。その後、指定したターゲットに観測された平均メトリックを一致させるために、デプロイ内のレプリカ数を定期的に調整します。
HPA-従来のメトリックサーバー
NetScalerは、NetScaler CPX向けにカスタムメトリックベースのHPAソリューションを提供します。 デフォルトでは、メトリックサーバーはPodのCPUとメモリのメトリックのみを提供します。 NetScalerは、アプリケーションパフォーマンスを分析するための豊富な組み込みメトリックセットを提供しており、これらのメトリックに基づいてより適切なオートスケーリング判断を下すことができます。カスタムメトリックベースのHPAは、HTTPリクエストレート、SSLトランザクション、またはADC帯域幅に基づいたオートスケーリングのような、より優れたソリューションです。

NetScaler CPX HPAソリューション

NetScaler CPX HPAソリューションは、以下のコンポーネントで構成されています。
  • NetScaler VPX: NetScaler VPXまたはMPXはTier-1にデプロイされ、クラスター内のNetScaler CPX Pod間でクライアント要求をロードバランシングします。
  • NetScaler CPX: クラスター内にデプロイされたNetScaler CPXは、エンドポイントアプリケーションPodのTier-2ロードバランサーとして機能します。NetScaler CPX Podは、NetScaler Ingress ControllerおよびNetScalerメトリックエクスポーターと共にサイドカーとして実行されます。
  • NetScaler Ingress Controller: NetScaler Ingress Controllerは、Kubernetes Ingressを中心に構築されたIngressコントローラーであり、Ingressリソース構成に基づいてNetScalerを自動的に構成します。スタンドアロンPodとしてデプロイされたNetScaler Ingress ControllerはNetScaler VPXを構成し、他のインスタンスはNetScaler CPXを構成します。
  • NetScaler Metrics Exporter: NetScaler Metrics Exporter)は、アプリケーションパフォーマンスメトリックをオープンソースの監視システムPrometheusにエクスポートします。NetScaler Metrics ExporterはNetScaler CPXからメトリックを収集し、Prometheusが理解できる形式で公開します。
  • Prometheus: Prometheusは、オープンソースのシステム監視およびアラートツールキットです。Prometheusは、NetScaler CPXからメトリックを収集し、HPAコントローラーがメトリックをチェックするためにクエリするPrometheusアダプターを使用してそれらを公開するために使用されます。
  • Prometheusアダプター: Prometheusアダプターには、KubernetesリソースメトリックAPIとカスタムメトリックAPIの実装が含まれています。このアダプターは、Kubernetesバージョン1.6以降のautoscaling/v2 HPAでの使用に適しています。また、すでにPrometheusを実行し、適切なメトリックを収集しているクラスター上のメトリックサーバーを置き換えることもできます。
次の図は、NetScaler CPX HPAソリューションがどのように機能するかを視覚的に表したものです。
Citrix-CPX-HPAソリューション
Tier-1 NetScaler VPX は、Tier-2 の NetScaler CPX をロードバランスします。NetScaler CPX はアプリケーションをロードバランスします。Prometheus、Prometheus-adapter、HPA コントローラーなどの他のコンポーネントもデプロイされます。
HPA コントローラーは、HTTP リクエストレートや帯域幅などのカスタムメトリクスについて、Prometheus-adapter を継続的にポーリングします。HPA でユーザーが定義した制限に達すると、HPA コントローラーは NetScaler CPX デプロイメントをスケーリングし、負荷を処理するために別の NetScaler CPX ポッドを作成します。

NetScaler CPX HPA ソリューションのデプロイ

NetScaler CPX HPA ソリューションをデプロイするには、次の手順を実行します。
  1. 次のコマンドを使用して、GitHub から citrix-k8s-ingress-controller リポジトリをクローンします。
    git clone https://github.com/citrix/citrix-k8s-ingress-controller.git
    クローン後、次のコマンドでディレクトリを HPA フォルダーに変更します。
    cd citrix-k8s-ingress-controller/blob/master/docs/how-to/hpa
  2. HPA ディレクトリから、values.sh ファイルを開いて編集し、NetScaler VPX に次の値を設定します。
    • VPX_IP: NetScaler VPX の IP アドレス
    • VPX_PASSWORD: NetScaler VPX 上の nsroot ユーザーのパスワード
    • VIRTUAL_IP_VPX: サンプルのゲストブックアプリケーションにアクセスする IP アドレス。
  3. create_all.sh ファイルを実行して、必要なすべてのリソースを作成します。
    ./create_all.sh
    この手順では、次のリソースを作成します。
    • 監視用の Prometheus と Grafana
    • NetScaler Ingress Controller とメトリクスエクスポーターをサイドカーとして持つ NetScaler CPX
    • NetScaler VPX を構成するためのスタンドアロンポッドとしての NetScaler Ingress Controller
    • サンプルguestbookアプリケーション
    • NetScaler CPXオートスケール展開を監視するためのHPAコントローラー
    • カスタムメトリクスを公開するためのPrometheusアダプター
  4. hostsファイルにエントリを追加します。 guestbookアプリケーションのトラフィックをNetScaler VPX仮想IPアドレスにルーティングするには、hostsファイルにルートを追加する必要があります。 ほとんどのLinuxディストリビューションでは、hostsファイルは/etcフォルダーにあります。
  5. 生成されたトラフィックを送信し、NetScaler CPXオートスケール展開を確認します。
    NetScaler CPX展開HPAは、NetScaler CPXの平均HTTPリクエストレートが1秒あたり20リクエストを超えると、自動的にスケールするように構成されています。トラフィックを送信するには、HPAフォルダーに用意されている以下のスクリプトを使用できます。
    • 16_curl.sh - 1秒あたり16のHTTPリクエストを送信します(しきい値より少ない)
    • 30_curl.sh - 1秒あたり30のHTTPリクエストを送信します(しきい値より多い)
    a. 16_curl.shスクリプトを実行して、NetScaler CPXに1秒あたり16のHTTPリクエストを送信します。
    ./16_curl.sh
    次の図は、1秒あたりのHTTPリクエストを表示するGrafanaダッシュボードです。 1秒あたり16のHTTPリクエストが送信されたときのGrafanaダッシュボード
    次の出力は、16 HTTP RPSでのHPAの状態を示しています。 16 HTTP RPSでのHPAの状態
    b. 30_curl.shスクリプトを実行して、NetScaler CPXに1秒あたり30のHTTPリクエストを送信します。
    ./30_curl.sh
    このスクリプトを実行すると、設定された20リクエストのしきい値を超え、NetScaler CPX展開は1つのポッドから2つのポッドに自動的にスケールします。2つのNetScaler CPXポッドがあるため、メトリックHTTP request rateの平均値も30から15に減少します。
    次の出力は、ターゲットを超えたときのHPAの状態を示しています。
    HPA-CPX しきい値超過
    以下の出力は、NetScaler CPXのレプリカ数が2に増加し、HTTP RPSの平均値が15に減少したことを示しています。
    CPXオートスケール
    以下の図は、2つのNetScaler CPXがトラフィックをロードバランシングしているGrafanaダッシュボードを示しています。
    HPA Grafanaダッシュボード
  6. delete_all.shスクリプトを実行してクリーンアップします。
    ./delete_all.sh
注:
Tier-1 NetScaler VPXが存在しない場合は、NodePortを使用してNetScaler CPXサービスを公開します。