CloudHub 2.0 デプロイメントの水平自動スケーリング (HPA) の設定

Mule アプリケーションが必要に応じて自動的にデプロイメントレプリカをスケールアップまたはスケールダウンして CPU 使用量に対応できるように CPU ベースの水平自動スケーリングを設定します。

この機能の対象は、新しい価格設定およびパッケージモデルにオプトインしている一部のお客様のみです。詳細は、Anypoint Platform 価格設定を参照してください。

Kubernetes では、水平ポッド自動スケーリング (HPA) により、需要に合わせてワークロードをスケーリングするために、ワークロードリソースが自動的に更新されます。水平スケーリングでは、負荷の増加に対応してより多くのポッドが自動的にデプロイされます。詳細は、 Kubernetes ドキュメント​を参照してください。

水平ポッド自動スケーリングで設定されたアプリケーションには、​グローバルリソースプールの制限​が適用されません。

水平ポッド自動スケーリングの設定

CloudHub 2.0 にデプロイされた Mule アプリケーションの水平自動スケーリングを設定する手順は次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. [Deploy application (アプリケーションをデプロイ)]​ をクリックします。

  3. [Runtime (ランタイム)]​ タブで、​[Enable CPU Based Horizontal Autoscaling (CPU ベースの水平自動スケーリングを有効化)]​ ボックスをオンにします。

  4. 最小と最大の ​[Replica Count (レプリカ数)]​ を設定します。

    最大 8 個 (Anypoint Integration Advanced パッケージや、Anypoint Platform の Platinum または Titanium サブスクリプションがある場合は最大 16 個) のレプリカを使用してアプリケーションをデプロイできます。

  5. ドロップダウンメニューから ​[Replica Size (レプリカサイズ)]​ を選択します。

    Anypoint Integration Advanced パッケージがある場合、​[Micro (極小)]​、​[Micro.Mem]​、​[Small (小)]​ レプリカサイズから選択できます。別の料金プランがある場合、​[Micro (極小)]​ または ​[Micro.Mem]​ レプリカサイズを選択します。詳細は、​「CloudHub 2.0 アプリケーションのデプロイメント」​を参照してください。

  6. [Deploy Application (アプリケーションをデプロイ)]​ をクリックします。

水平自動スケーリングを設定する

自動スケーリングの状況とログ

自動スケーリングイベントが発生し、水平自動スケーリングを設定している Mule アプリケーションがスケールアップされたら、アプリケーションの詳細ウィンドウで ​[View status (状況を表示)]​ をクリックして、​[Scaling (スケーリング)]​ 状況を確認できます。​[Applications (アプリケーション)]​ リストでアプリケーションの ​[Scaling (スケーリング)]​ 状況を確認することもできます。

アプリケーションのスケーリング状況を確認します。

スケールアップされたレプリカの起動と、アプリケーションのスケーリング元またはスケーリング先のレプリカ数を追跡するには、アプリケーションのログを確認します。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. 自動スケーリングが設定されたアプリケーションの行をクリックします。

  3. [Manage application (アプリケーションを管理)]​ をクリックします。

  4. [Logs (ログ)]​ タブを選択します。

アプリケーションログの例
Info	8 minutes ago - 2023-11-08 14:35:01.466 PST - Runtime Manager
Application id:<app-ID> scaled UP from 1 to 2 replicas.
Info	a minute ago - 2023-11-08 14:41:24.819 PST - Runtime Manager
Application id:<app-ID> scaled DOWN from 2 to 1 replicas. :

また、アクセス管理の ​[Audit Logs (監査ログ)]​ では、自動スケーリングイベントを追跡できます。アプリケーションデプロイメントのスケーリングが発生するたびに、製品が ​Runtime Manager​、ユーザーが ​Anypoint Staff​ として監査ログがパブリッシュされます。このログでは、​[Action (アクション)]​ は ​[Scaling (スケーリング)]​ に設定され、​[Object (オブジェクト)]​ はアプリケーション ID になっています。

次に、ログペイロードの例を示します。

{"properties":{"organizationId":"my-orgID-abc","environmentId":"my-envID-xyz","response":{"message":{"message":"Application id:my-appID-123 scaled DOWN from 3 to 2 replicas.","logLevel":"INFO","context":{"logger":"Runtime Manager"},"timestamp":1700234556678}},"deploymentId":"my-appID-123","initialRequest":"/organizations/my-orgID-abc/environments/my-envID-xyz/deployments/my-appID-123/specs/my-specID-456"},"subaction":"Scaling"}

CPU ベースの自動スケーリングポリシーの理解

MuleSoft は、お客様の Mule アプリケーションデプロイメントの 自動スケーリング​ポリシーを所有し、適用します。

CloudHub 2.0 にデプロイされるすべての Mule アプリケーションで使用される CPU ベースの HPA ポリシーは次のとおりです。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app
  namespace: app-namespace
spec:
  behavior:
    scaleDown:
      policies:
      - periodSeconds: 15
        type: Percent
        value: 100
      selectPolicy: Max
      stabilizationWindowSeconds: 1800
    scaleUp:
      policies:
      - periodSeconds: 180
        type: Percent
        value: 100
      selectPolicy: Max
      stabilizationWindowSeconds: 0
  maxReplicas: 3
  metrics:
  - resource:
      name: cpu
      target:
        averageUtilization: 70
        type: Utilization
    type: Resource
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app

考慮すべき点をいくつか挙げます。

  • スケールアップは最長 180 秒おきに実行されます。水平自動スケーリングでは、設定された最大レプリカ数に達するまで、現在実行中のレプリカの最大 100% を追加できます。スケールアップの場合、安定化期間はありません。メトリクスでスケールアップが必要であることが示された直後に対象がスケールアップされます。

  • スケールダウンは最長 15 秒おきに実行されます。水平自動スケーリングでは、現在実行中のレプリカの最大 100% を削除できます。対象は許容される最小レプリカ数までスケールダウンされます。削除されるレプリカ数は、過去 1800 秒間の安定化期間に集計された計算に基づきます。

最小レプリカ数:

  • 任意の時点で実行が保証されるレプリカの最小数。

  • スケールダウンポリシーによって、この数を下回るまでレプリカが削除されることはありません。

最大レプリカ数:

  • 上限となるレプリカの最大数。スケールアップでこの数を超えるレプリカを追加することはできません。

  • スケールアップポリシーによってこの数を超えてレプリカが追加されることはありません。

HPA を有効にすると、アプリケーションが水平にスケーリングされるときにお客様に追加のフロー使用量が発生することがあります。予期しないスケーリングによる超過を避けるため、購入したフロー制限内に収まるように最大レプリカ数は慎重に設定してください。発生したフロー使用量は​使用状況レポート​で追跡できます。

パフォーマンスに関する考慮事項

Mule アプリケーションの水平自動スケーリングを成功させるために、パフォーマンスに関する次の考慮事項を確認してください。

  • CPU 使用量に基づいてスケーリングされる Mule アプリケーションは CPU ベースの HPA に適しています。次に例を示します。

    • 非同期要求を使用する HTTP/HTTPS アプリケーション。

    • リバースプロキシ。

    • 低レイテンシーで高スループットのアプリケーション。

    • DataWeave 変換。

    • APIkit ルーティング。

    • ポリシーを使用する API ゲートウェイ。

  • バッチジョブなどの並列処理が組み込まれていない非リエントラントアプリケーション、リエントランスやアプリケーション間の重複スケジューリングがないスケジューラーアプリケーション、大きな要求を使用する低スループット高レイテンシーのアプリケーションなどは、CPU ベースの HPA に適していません。