スタートガイド
概要
第1章 スタートガイド リンクのコピーリンクがクリップボードにコピーされました!
これは、物理サーバーまたは仮想サーバーで Red Hat build of Keycloak を使用するためのスタートガイドです。
1.1. 作業を開始する前の注意事項 リンクのコピーリンクがクリップボードにコピーされました!
マシンまたはコンテナープラットフォームが、Red Hat build of Keycloak で必要な使用方法に十分なメモリーと CPU を提供できることを確認してください。実稼働環境のサイジングを開始する方法の詳細は、{links_high-availability_concepts-memory-and-cpu-sizing_name} を参照してください。
OpenJDK 21 がインストールされていることを確認してください。
1.2. Red Hat build of Keycloak のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak を Red Hat の Web サイト からダウンロードして展開します。
このファイルを展開すると、rhbk-26.4.0 という名前のディレクトリーが作成されます。
1.3. Red Hat build of Keycloak の起動 リンクのコピーリンクがクリップボードにコピーされました!
-
ターミナルから
rhbk-26.4.0ディレクトリーを開きます。 以下のコマンドを実行します。
Linux では、次を実行します。
bin/kc.sh start-dev
bin/kc.sh start-devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows では、次を実行します。
bin\kc.bat start-dev
bin\kc.bat start-devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
start-dev オプションを使用すると、開発モードで Red Hat build of Keycloak が起動します。このモードでは、Red Hat build of Keycloak を初めて試して、すぐに起動して実行することができます。このモードは、Red Hat build of Keycloak の開発など、開発者にとって便利なデフォルト設定を提供します。
1.4. 管理者ユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak にはデフォルトの管理者ユーザーがありません。Keycloak を起動する前に、管理者ユーザーを作成する必要があります。
- http://localhost:8080/ を開きます。
- ユーザー名とパスワードをフォームに入力します。
1.5. 管理コンソールへのログイン リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat build of Keycloak 管理コンソール に移動します。
- 前の手順で作成したユーザー名とパスワードでログインします。
1.6. レルムを作成します。 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak のレルムはテナントに相当します。各レルムにより、管理者はアプリケーションとユーザーの分離グループを作成できます。Red Hat build of Keycloak には、最初は master と呼ばれる単一のレルムが含まれています。このレルムは、Red Hat build of Keycloak の管理にのみ使用し、アプリケーションの管理には使用しません。
次の手順を使用して、最初のレルムを作成します。
- Red Hat build of Keycloak 管理コンソール を開きます。
- Current Realm の横にある Create Realm をクリックします。
-
Realm name フィールドに
myrealmと入力します。 - Create をクリックします。
図1.1 レルムの追加
1.7. ユーザーを作成します。 リンクのコピーリンクがクリップボードにコピーされました!
最初、レルムにはユーザーがいません。ユーザーを作成するには、以下を実行します。
- 現在のレルム の隣にある myrealm レルムにまだ表示されていることを確認します。
- 左側のメニューで Users をクリックします。
- Create new user をクリックします。
フォームに次の値を入力します。
-
Username:
myuser - First name: 任意の名
- Last name: 任意の姓
-
Username:
- Create をクリックします。
図1.2 ユーザーの作成
このユーザーがログインするにはパスワードが必要です。初期パスワードを設定するには、以下を実行します。
- ページの上部にある Credentials をクリックします。
- Set password フォームにパスワードを入力します。
- ユーザーが最初のログイン時にこのパスワードを更新する必要がないように、Temporary を Off に切り替えます。
図1.3 パスワードの設定
1.8. アカウントコンソールにログインします。 リンクのコピーリンクがクリップボードにコピーされました!
これで、アカウントコンソールにログインし、このユーザーが正しく設定されていることを確認できます。
- Red Hat build of Keycloak アカウントコンソール を開きます。
-
前の手順で作成した
myuserとパスワードでログインします。
アカウントコンソールのユーザーとして、プロファイルの変更、2 要素認証の追加、ID プロバイダーアカウントの追加などを実行してアカウントを管理できます。
1.9. 最初のアプリケーションのセキュリティー保護 リンクのコピーリンクがクリップボードにコピーされました!
最初のアプリケーションに対してセキュリティー保護を行うには、まずアプリケーションを Red Hat build of Keycloak インスタンスに登録します。
- Red Hat build of Keycloak 管理コンソール を開きます。
- Current realm の横にある myrealm をクリックします。
- Clients をクリックします。
- Create client をクリックします
フォームに次の値を入力します。
-
Client type:
OpenID Connect Client ID:
myclient図1.4 クライアントの追加
-
Client type:
- Next をクリックします。
- Standard flow が有効になっていることを確認します。
- Next をクリックします。
Login settings で以下の変更を行います。
-
Valid redirect URIs を
https://www.keycloak.org/app/*に設定します。 -
Web origins を
https://www.keycloak.orgに設定します。
-
Valid redirect URIs を
- Save をクリックします。
図1.5 クライアントの更新
クライアントが正常に作成されたことを確認するために、Keycloak Web サイト の SPA テストアプリケーションを使用できます。
- https://www.keycloak.org/app/ を開きます。
- Save をクリックして、デフォルト設定を使用します。
- Sign in をクリックし、前に起動した Red Hat build of Keycloak サーバーを使用してこのアプリケーションを認証します。
1.10. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
実稼働環境で Red Hat build of Keycloak を実行する前に、以下の操作を行うことを検討してください。
- PostgreSQL などの実稼働対応データベースへの切り替え。
- 独自の証明書を使用した SSL の設定。
- よりセキュアな管理者パスワードへの切り替え。
詳細は、サーバー設定ガイド を参照してください。
第2章 スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak のインストールを拡張および調整します。
Red Hat build of Keycloak を開始した後、次のスケーリングおよびチューニングのガイドラインを使用して、インスタンスを必要なロードに適応させることを検討してください。
- リソースの利用を最小限に抑える
- 目標応答時間を達成する
- データベースプールの競合を最小限に抑える
- メモリー不足エラーや過剰なガベージコレクションのオーバーヘッドを解決する
- 水平スケーリングによる高い可用性を実現する
2.1. 垂直スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak ワークロードを監視するときは、CPU またはメモリーの使用率が低すぎたり高すぎたりしていないかを確認します。Java 仮想マシン (JVM) で使用可能なリソースをより適切に調整するには、CPU およびメモリーリソースのサイジングの概念 を参照してください。
JVM で使用可能なメモリーの量を増やす前に、特にメモリー不足エラーが発生した場合は、ヒープダンプを使用してフットプリントの増加原因を特定することが最善策となります。応答時間が長すぎる場合は、HTTP 作業キューが大きすぎることを示している可能性があり、単にメモリーを増やすよりもロード制限を調整した方が効果的です。以下のセクションを参照してください。
2.1.1. 一般的なチューニングオプション リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak は、使用可能なコアの数に基づいて、使用されるスレッドの数を自動的に調整します。スレッド数を手動で変更すると、全体的なスループットが向上する可能性があります。詳細は、スレッドプールの設定の概念 を参照してください。ただし、スレッド数の変更は、データベース接続などの他の JVM リソースと組み合わせて行う必要があります。そうしないと、ボトルネックが別の場所に移動する可能性があります。詳細は、データベース接続プールの概念 を参照してください。
キューに入れられた作業のメモリー使用率を制限し、負荷制限を指定するには、スレッドプールの設定の概念 を参照してください。
データベース接続の取得時にタイムアウトが発生する場合は、利用可能な接続数を増やすことを検討する必要があります。詳細は、データベース接続プールの概念 を参照してください。
2.1.2. 垂直自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes などの一部のプラットフォームでは、垂直方向に自動スケーリングするメカニズムが提供されています。垂直自動スケーリングは、サーバーインスタンスの再起動が必要な場合 (現時点で Java on Kubernetes の場合に該当)、Red Hat build of Keycloak では推奨されません。代わりに、CPU やメモリーの制限を高くして、必要に応じて JVM がそれらの制限内で適応できるようにすることを検討できます。
2.2. 水平スケーリング リンクのコピーリンクがクリップボードにコピーされました!
単一の Red Hat build of Keycloak インスタンスは可用性の問題の影響を受けやすくなります。インスタンスがダウンすると、別のインスタンスが起動するまで完全な停止が発生します。異なるマシン上で 2 つ以上のクラスターメンバーを実行すると、Red Hat build of Keycloak の可用性が大幅に向上します。
単一の JVM では、同時に処理できるリクエストの数に制限があります。追加のサーバーインスタンスは、データベースや分散キャッシュなどの関連リソースによってスケーリングが制限されるまで、スループットをほぼリニアスケーリングできます。
一般的には、水平スケーリングの問題を処理するために、Red Hat build of Keycloak Operator を許可することを検討してください。Operator を使用する場合は、水平方向にスケーリングするために、必要に応じて Keycloak カスタムリソースの spec.instances を設定します。詳細は、Operator を使用した複数のアベイラビリティーゾーンにまたがる Red Hat build of Keycloak のデプロイ 参照してください。
Operator を使用していない場合は、以下を確認してください。
- インスタンスを別々のマシンに配置すれば、可用性を高めることができます。Kubernetes では、Pod のアンチアフィニティーを使用してこれを適用してください。
分散キャッシュを使用してください。マルチクラスターデプロイメントの場合は、クラスターメンバーが同じ状態を共有できるように外部キャッシュを使用します。関連する設定の詳細は、分散キャッシュの設定 を参照してください。組み込み Infinispan キャッシュには、次のような水平スケーリングの考慮事項があります。
- インスタンスには互いを検出する方法が必要です。詳細は、分散キャッシュの設定 の検出を参照してください。
- このキャッシュは、複数のメンバーが同時に参加または離脱することを適切に処理しません。特に、メンバーが同時に退会すると、データが失われる可能性があります。Kubernetes では、デフォルトのシリアル処理を備えた StatefulSet を使用して、Pod が順番に開始および停止されるようにします。デプロイメントの使用はサポートされておらず、推奨もされていません。
クラスター全体が利用できなくなった場合にサービスの可用性が失われないようにするには、「高可用性ガイド」を参照して、マルチクラスターデプロイメントの詳細を確認してください。高可用性の概要 を参照してください。
2.2.1. 水平自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
水平自動スケーリングにより、オンデマンドで Red Hat build of Keycloak インスタンスを追加または削除できます。起動時間は瞬時には発生しないため、起動時間を最小限に抑えるには最適化されたイメージを使用する必要があることに注意してください。
組み込み Infinispan キャッシュクラスターを使用する場合、クラスターメンバーを動的に追加または削除するには、Infinispan が Infinispan キャッシュの再バランスを実行する必要がありますが、それらのキャッシュに多くのエントリーが存在する場合は、コストが高くなる可能性があります。この時間を最小限に抑えるために、セッション関連のキャッシュ内のエントリー数をデフォルトで 10000 に制限します。注記: この最適化は、persistent-user-sessions 機能が設定で明示的に無効にされていない場合にのみ可能です。
Kubernetes では、Keycloak カスタムリソースはスケーラブルであるため、組み込みの自動スケーラー の対象にすることができます。たとえば、平均 CPU 使用率に基づいてスケーリングするには、次のようにします。
通常、永続セッションが有効になっている場合はメモリーのスケーリングは必要ありません。また、リモート Data Grid を使用する場合もまったく必要ありません。永続セッションまたはリモート Data Grid を使用しており、メモリーの問題が発生した場合は、問題を完全に診断し、CPU およびメモリーリソースのサイジングの概念 ガイドを再確認することを推奨します。水平スケーリングよりも、メモリー要求と制限を調整する方が望ましいです。
カスタムメトリクス の使用法など、追加情報は、Kubernetes のドキュメント を参照してください。