5.2. 手順
- CPU およびメモリーリソースのサイジングの概念 の章を使用して、デプロイメントのサイジングを決定します。
- Red Hat build of Keycloak Operator のインストール の章の説明に従って、Red Hat build of Keycloak Operator をインストールします。
- 複数のアベイラビリティーゾーンへの AWS Aurora のデプロイ の章の説明に従って、Aurora AWS をデプロイします。
- Amazon Aurora PostgreSQL データベースで使用するために準備 したカスタムの Red Hat build of Keycloak イメージをビルドします。
ステップ 1 で計算したリソース要求および制限を含む次の値を使用して、Red Hat build of Keycloak CR をデプロイします。
apiVersion: k8s.keycloak.org/v2alpha1 kind: Keycloak metadata: labels: app: keycloak name: keycloak namespace: keycloak spec: hostname: hostname: <KEYCLOAK_URL_HERE> resources: requests: cpu: "2" memory: "1250M" limits: cpu: "6" memory: "2250M" db: vendor: postgres url: jdbc:aws-wrapper:postgresql://<AWS_AURORA_URL_HERE>:5432/keycloak poolMinSize: 30 1 poolInitialSize: 30 poolMaxSize: 30 usernameSecret: name: keycloak-db-secret key: username passwordSecret: name: keycloak-db-secret key: password image: <KEYCLOAK_IMAGE_HERE> 2 startOptimized: false 3 features: enabled: - multi-site 4 transaction: xaEnabled: false 5 additionalOptions: - name: http-max-queued-requests value: "1000" - name: log-console-output value: json - name: metrics-enabled 6 value: 'true' - name: http-pool-max-threads 7 value: "66" - name: db-driver value: software.amazon.jdbc.Driver http: tlsSecret: keycloak-tls-secret instances: 3
- 1
- データベースのステートメントキャッシュを許可するには、データベース接続プールの初期サイズ、最大サイズ、最小サイズが同一である必要があります。この数値はシステムのニーズに合わせて調整してください。Red Hat build of Keycloak の組み込みキャッシュにより、ほとんどのリクエストはデータベースに影響を与えないため、このように変更すると、1 秒あたり数百件のリクエストを処理できます。詳細は、データベース接続プールの概念 の章を参照してください。
- 2 3
- Red Hat build of Keycloak イメージへの URL を指定します。イメージが最適化されている場合は、
startOptimized
フラグをtrue
に設定します。 - 4
- ロードバランサープローブ
/lb-check
などのマルチサイトサポートの追加機能を有効にします。 - 5
- XA トランザクションは、Amazon Web Services JDBC Driver ではサポートされていません。
- 6
- 負荷がかかっているシステムを分析できるように、メトリクスエンドポイントを有効にします。この設定の欠点は、外部の Red Hat build of Keycloak エンドポイントでメトリクスが利用可能になるため、エンドポイントが外部から利用できないようにフィルターを追加する必要があることです。Red Hat build of Keycloak の前にリバースプロキシーを使用して、これらの URL をフィルタリングして除外します。
- 7
- 内部 JGroup スレッドプールのデフォルト設定は、最大 200 スレッドです。StatefulSet 内の Red Hat build of Keycloak スレッドの総数が、JGroup スレッドの数を超えないようにしてください。これは JGroup スレッドプールの枯渇により、Red Hat build of Keycloak のリクエスト処理が停止するのを避けるためです。Red Hat build of Keycloak スレッドの数をさらに制限することを検討してもよいでしょう。要求された CPU 制限に達すると、複数の同時実行スレッドが原因で Kubernetes によるスロットリングが発生するためです。詳細は、スレッドプールの設定の概念 の章を参照してください。