Liferay PaaS体験:オートスケーリング
GitOpsリポジトリ内のHelm値を編集して、オートスケーリングを設定します。 これは通常、一般的なPaaSユーザーの仕事ではなく、開発者またはプラットフォーム管理者の仕事です。
Liferay PaaS Experienceは、Liferay StatefulSetに対して、相互に排他的な2つの自動スケーリングオプションをサポートしています。
- CPUやメモリなどのポッドレベルのメトリクスに基づいてスケーリングを行う、基本的な水平ポッドオートスケーラー(HPA)。
- KEDA(Kubernetes Event-Driven Autoscaling)は、Prometheusに対するカスタムメトリッククエリに基づいてスケーリングを行います。
KEDAは、ほとんどの運用環境への導入において推奨される選択肢です。 Pod レベルのメトリクスは、Liferay ワークロードにとって必ずしも最適な指標とは限らず、KEDA のデフォルトトリガーは Liferay のアーキテクチャをより正確に反映しています。
自動スケーリングの設定は、環境の liferay.yaml の autoscaling 値の下にあります。 それらを liferay-defaultの下にネストします。これは、Liferay ランタイムを設定する Helm サブチャートです。 そのキーの外側に指定された値は、エラーなく無視されます。
liferay-default:
autoscaling:
enabled: false
hpa:
...
keda:
...
タイプ: ケダ
自動スケーリングはデフォルトでは無効になっています。 有効にするには、 enabled: true を設定します。 有効化されると、 タイプ はデフォルトで keda となり、変更しない限り KEDA はデフォルトのトリガーで実行されます。 代わりに基本的な水平ポッドオートスケーラーを使用するには、 タイプ を hpa に設定します。
基本的な水平ポッドオートスケーラー
基本的なHPAは、CPUやメモリなどのポッドレベルのメトリクスに基づいてLiferay StatefulSetをスケーリングします。 有効にすると、デフォルトのHPAはCPU使用率が80%に達したときにLiferay StatefulSetをスケーリングします。
KEDAの代わりにHPAを検討するべき場合:
- 小規模な環境や非本番環境で運用しており、CPUまたはメモリベースの単純なスケーリングで十分な場合。
- あなたは、オートスケーリングのスタックを最小限に抑え、KEDAへの追加的な依存関係を避けたいと考えている。
KEDA(Kubernetesイベント駆動型オートスケーリング)
KEDAは、Prometheusに対するメトリッククエリとして定義されたカスタムトリガーに基づいてワークロードをスケーリングします。 LiferayはPaaSエクスペリエンス環境向けにPrometheusエンドポイントと認証設定を提供するため、ユーザー自身で設定する必要はありません。
autoscaling.keda セクションの liferay.yaml で KEDA を設定します。
| 価値 | 種類 | 必須? | デフォルト | 説明 |
|---|---|---|---|---|
トリガー | 地図 | いいえ | ( デフォルトトリガー を参照) | Liferayが提供するデフォルトのトリガー(トリガー名でキー付け) |
maxReplicaCount | 整数 | はい | 100 | スケールアップ時のレプリカの最大数 |
minReplicaCount | 整数 | はい | 1 | スケールダウン時の最小レプリカ数 |
ポーリング間隔 | 整数 | はい | 30 | 各トリガーが評価される間隔(秒単位) |
prometheusServerAddress | 弦 | いいえ | "" | Prometheusバックエンドのエンドポイント。 Liferayは、PaaSエクスペリエンス環境向けにこの機能を提供しています。 |
トリガー認証 | 物体 | いいえ | {} | トリガーの認証設定。 Liferayは、PaaSエクスペリエンス環境向けにこの機能を提供しています。 |
カスタムトリガー | 地図 | いいえ | {} | デフォルトのトリガーと同じ形式の追加トリガー |
デフォルトトリガー
Liferayは、プラットフォームの負荷が低すぎるか高すぎるかをより正確に示すために、Liferayのアーキテクチャに基づいて設計された一連のデフォルトトリガーを提供します。
各デフォルトトリガーは、 autoscaling.keda.triggers の下のマッピングされたキー値エントリです。
| トリガーキー | 説明 | PromQLクエリ | しきい値 |
|---|---|---|---|
CPU使用率(%) | CPU使用率、PromQLクエリではなくKEDAのネイティブ CPU リソーススケーラーを使用 | — | 80 |
ヒカリアクティブコネクション | HikariCP JDBC接続プール内のアクティブな接続 | max(hikaricp_ActiveConnections{namespace="<environment-namespace>"}) | 50 |
jvmメモリヒープ使用率 | JVMヒープメモリの使用率(パーセント) | max(jvm_memory_used_bytes{area="heap",namespace="<environment-namespace>"} / jvm_memory_max_bytes{area="heap",namespace="<environment-namespace>"} * 100) | 80 |
jvm-threads-current | 現在のJVMスレッド数 | max(jvm_threads_current{namespace="<environment-namespace>"}) | 500 |
この表は、 <environment-namespace> を自動的に埋めます。 これらのしきい値は、デプロイメントに合わせて調整された値ではなく、あくまでも出発点として扱ってください。JVMスレッドプールやHikariプールのサイズを変更した場合は、ご自身の構成に合わせて再調整してください。
カスタムトリガー
トリガーを追加したり、デフォルトのトリガーを上書きして無効にするには、 autoscaling.keda.customTriggers を使用します。
トリガーを追加するには、 autoscaling.keda.customTriggers の下にエントリを追加します。
liferay-default:
autoscaling:
keda:
customTriggers:
my-new-trigger:
metadata:
metricName: <unique_trigger_name>
query: <promQL_query>
threshold: <query_threshold>
デフォルトのトリガーを上書きするには、そのキーを参照して変更内容を指定します。 以下の例では、デフォルトの hikari-active-connections トリガーのしきい値を 50 から 60 に引き上げています。
liferay-default:
autoscaling:
keda:
customTriggers:
hikari-active-connections:
metadata:
threshold: "60"
デフォルトトリガーを無効にするには、そのキーを参照し、 enabled: false : を設定します。
liferay-default:
autoscaling:
keda:
customTriggers:
jvm-threads-current:
enabled: false