Cloud Native Experience: AWS Ready for Cloud 2025.Q4 and Earlier Versions
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

AWSのオートスケーリング

Liferayのオートスケーリング機能は、パフォーマンスを最適化するために、Liferayクラスタ内のレプリカ(ノード)を自動的に作成および削除します。 同時に稼働できるノードの最小数と最大数を指定できます。 自動スケーリングを必要とするアプリケーションについては、リソース使用状況(CPUとメモリ)を定期的に監視してください。

クラスタリングとオートスケーリングには、有効なLiferayクラスタライセンスが必要です。

静的クラスタリング

静的クラスタリングは、 replicaCount プロパティを使用して、必要なレプリカ数を手動で設定することによって構成されます。

replicaCount: 2

Helmを設定してクラスターをスケーリングした後、Kubernetes CLIを使用して、目的のレプリカ数を指定して次のコマンドを実行します。

kubectl scale statefulset/liferay --replicas=2

外部エージェントを使用してメトリクスを監視し、スケーリングのタイミングと方法を決定することで、静的クラスタリングによるLiferayの自動スケーリングが可能になります。 ただし、自動スケーリングの経験が豊富なユーザーには、動的クラスタリングをお勧めします。

動的クラスタリング

動的クラスタリングを使用したデフォルトの自動スケーリングを使用すると、Kubernetes Metrics Server から出力されるメトリック (CPU とメモリ) に基づいてクラスタのスケーリング方法を定義できます。 他のメトリクスに基づいてスケーリングするには、 カスタムメトリクスを使用した高度な自動スケーリングを参照してください。 動的クラスタリングを設定するには、以下の手順に従ってください。

  1. コンテナ リソース を構成して、クラスターを自動スケーリング用に準備します。

  2. autoscaling.enabled ポータルプロパティtrue に設定します。

  3. 次に、 オートスケーリング Helmプロパティを .yaml ファイルで定義します。 そのためには、いくつかの他のプロパティをその値として渡す必要があります。

  4. enabled プロパティを true に設定します。

    enabled: true
    
  5. Kubernetes がクラスターをスケーリングできる範囲を制限するには、 minReplicasmaxReplicas を選択してください。

    maxReplicas: 5
    minReplicas: 1
    
  6. スケーリングの基準となる指標を選択してください。 例えば、各レプリカのCPUとメモリの使用率を80%に維持するには、以下の値を使用します。 このようにすることで、CPUまたはメモリのいずれかがレプリカの限界に近づいた場合、負荷を軽減するために新しいレプリカが作成されます。 さらに、平均CPU使用率とメモリ使用率がこれよりも低い場合、クラスターはリソースを節約するためにレプリカを削除します。

    metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          averageUtilization: 80
          type: Utilization
    - type: Resource
      resource:
        name: memory
        target:
          averageUtilization: 80
          type: Utilization
    
  7. 最後に、メトリクスの検証頻度、スケーリング前のタイムアウト、リソース使用量の許容範囲など、追加の動作を定義できます。

    behavior:
      scaleDown:
        policies:
        - periodSeconds: 60
          type: Percent
          value: 10
          type: Pods
          value: 1
        stabilizationWindowSeconds: 60
      scaleUp:
        stabilizationWindowSeconds: 300
    

最終的に、 オートスケーリング プロパティは次のようになります。

autoscaling:
  behavior:
    scaleDown:
      policies:
      - periodSeconds: 60
        type: Percent
        value: 10
        type: Pods
        value: 1
      stabilizationWindowSeconds: 60
    scaleUp:
      stabilizationWindowSeconds: 300
  enabled: true
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        averageUtilization: 80
        type: Utilization
  - type: Resource
    resource:
      name: memory
      target:
        averageUtilization: 80
        type: Utilization
  minReplicas: 1

カスタムメトリクスを使用した高度な自動スケーリング

カスタムメトリクスを使用した自動スケーリングには、 custom.metrics.k8s.io または external.metrics.k8s.io API を実装する外部アダプタが必要です。 これに対する推奨ソリューションは KEDA です。 Kubernetesクラスターからメトリクスを収集する方法も必要です。 詳細については、 Kubernetes からのメトリクスの表示 を参照してください。

完了後、必要なメトリックデータは、KEDAスケーラーがデータソースとして使用するように構成できるシステムに保存されます。 以下のHelmコマンドを使用してKEDAをインストールします。

  1. liferay-aws-terraform/cloud に移動します。 これは、以前にLiferayをインストールしたディレクトリです。

  2. KEDAヘルムチャートをインストールしてください。

    helm repo add kedacore https://kedacore.github.io/charts
    helm repo update
    helm upgrade -i keda kedacore/keda \
        --create-namespace \
        --namespace keda-system
    
  3. 収集するカスタムメトリクスを制御するためのリソースを定義します。

    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      annotations:
        scaledobject.keda.sh/transfer-hpa-ownership: "true"
      name: liferay-scaledobject
      namespace: liferay-system
    spec:
      advanced:
        horizontalPodAutoscalerConfig:
          name: liferay-default
        restoreToOriginalReplicaCount: true
      cooldownPeriod: 300
      maxReplicaCount: 5
      minReplicaCount: 1
      pollingInterval: 30
      scaleTargetRef:
        apiVersion: apps/v1
        kind: StatefulSet
        name: liferay-default
      triggers:
        [...]
    
  4. トリガー キーについては、 .yaml ファイル内で、自動スケーリングの基準となるメトリックを選択します。 たとえば、Prometheus をコレクタとして使用していて、ライブユーザ数がノードあたり 200 に達したときにスケーリングしたいとします:

    triggers:
    - type: prometheus
      metadata:
        serverAddress: http://prometheus-server.prometheus-system:9090
        query: abs(server_live_users{instance="liferay-default-0", job="liferay-system/liferay-default"}) / on(job) group_left() count by (job) (server_live_users{job="liferay-system/liferay-default"})
        threshold: '200'
    
  5. 以下のコマンドを使用してリソースをインストールしてください。

    kubectl apply -n liferay-system -f liferay-scaledobject.yaml
    

ユーザーがログインする際、ノードあたりのログイン数が200人を超えると、クラスターは自動的にスケールアップします。