次の方法で共有


WebSphere Liberty または Open Liberty のセッション キャッシュとして Azure Redis を使用する

この記事では、WebSphere Liberty または Open Liberty の HTTP セッション キャッシュとして Azure Redis を使用する方法について説明します。

このガイドでは、以下を行います。

  • セッション キャッシュとして Azure Managed Redis インスタンスを作成します。
  • HTTP セッションの永続化を可能にするサンプル アプリケーションを準備します。
  • サンプル アプリケーションをローカルで実行します。

この記事は、デプロイをすばやく行うのに役立ちます。 運用環境に移行する前に、Tuning Liberty について調べる必要があります。

WebSphere on Azure ソリューションを開発しているエンジニアリング チームと密接に連携しながら移行シナリオに取り組むことに関心がある場合は、こちらの簡単な WebSphere 移行に関するアンケートに内容を記入し、連絡先情報を含めてください。 プログラム マネージャー、アーキテクト、エンジニアのチームからすぐに連絡があり、緊密なコラボレーションが開始されます。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
  • Ubuntu、macOS、Windows Subsystem for Linux などの Unix 系オペレーティング システムがインストールされたローカル マシンを準備します。
  • Java Standard Edition (SE) 実装バージョン 17 以降 ( OpenJDK の Microsoft ビルドなど) をインストールします。
  • Maven 3.9.8 以上をインストールします。
  • Git がインストールされていることを確認します。

Azure Managed Redis インスタンスを作成する

Azure Managed Redis には、 Redis Enterprise ソフトウェアに基づくメモリ内データ ストアが用意されています。 Azure Managed Redis インスタンスを作成し、その接続情報をメモするには、次の手順に従います。 この情報は、後でサンプル アプリケーションを構成するために使用します。

  1. 「クイック スタート: Azure Managed Redis インスタンスを作成する」の手順に従って 、Azure Managed Redis インスタンスを作成します。 以下の相違点に特に注意してください。

    1. 基本」タブにある「Redis インスタンスの作成」セクションの手順 3 で、Azure Managed Redis をサポートするキャッシュ SKU を選択します。 このガイドでは、[ バランス] を選択します (一般的なパフォーマンス要件がある汎用ワークロードの場合)。 詳細については、「 適切なレベルの選択」を参照してください。

    2. 「ネットワーク」タブの「Redis インスタンスを作成する」セクションの手順 4 で、「接続」オプションで「パブリック エンドポイント」を選択します。 このガイドを使用する場合、このオプションはわかりやすくするために最適な選択肢です。 運用環境では、セキュリティを強化するために プライベート エンドポイント の使用を検討する必要があります。

    3. セクション「 Redis インスタンスを作成する」セクションの手順 5 で、[ 詳細設定 ] タブで、次の設定を構成します。

      • 認証の場合は、アクセス キー認証を有効にします。 このガイドを使用する場合、このオプションはわかりやすくするために最適な選択肢です。 最適なセキュリティを確保するために、可能であれば、マネージド ID で Microsoft Entra ID を使用して、キャッシュに対する要求を承認することをお勧めします。 Microsoft Entra ID とマネージド ID を使用した承認は、共有アクセス キーの承認よりも優れたセキュリティと使いやすさを提供します。 キャッシュでマネージド ID を使用する方法の詳細については、「キャッシュ認証に Microsoft Entra ID を使用する」を参照してください。

      • クラスター化されていないキャッシュの クラスタリング ポリシーEnterprise に設定します。これは、単一ノード構成が使用されるこのガイドで機能します。 詳細については、「 エンタープライズでのクラスタリング」を参照してください。

  2. デプロイが完了したら、[デプロイ] ページで [リソースに移動] を選択します。 それ以外の場合は、Azure portal に移動し、Azure Managed Redis インスタンスを見つけて選択します。

  3. [ 概要 ] ページで、[ エンドポイント ] の値をメモします。 この値は、後で REDIS_CACHE_ADDRESS 環境変数で使用します。

  4. [設定]>[認証]を選択します。 [アクセス キー] を選択し、[プライマリ] の値を書き留めます。 この値は、後で REDIS_CACHE_KEY 環境変数として使用します。

  5. 次のコマンドを使用して、環境変数の REDIS_CACHE_ADDRESSREDIS_CACHE_KEYをエクスポートします。

    export REDIS_CACHE_ADDRESS=rediss://<your-redis-cache-endpoint>
    export REDIS_CACHE_KEY=<your-primary-access-key>
    

サンプル アプリケーションを準備する

WebSphere Liberty と Open Liberty には、HTTP セッション・データを外部キャッシュに格納できるセッション・キャッシュ機能が用意されています。 このガイドでは、 JCache セッション永続化 機能を使用して、セッション データを Azure Managed Redis インスタンスに格納します。

次のコマンドを使用して、このガイドのサンプル コードのクローンを作成します。 サンプルは、GitHub の open-liberty-on-aks リポジトリにあります。 リポジトリにはいくつかのサンプルがあります。 この記事ではjava-app-jcache を使用します。

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
git checkout 20250228
cd java-app-jcache

detached HEAD 状態であることを示すメッセージが表示された場合、このメッセージは無視しても問題はありません。 あなたがタグをチェックアウトしただけということです。

アプリケーションには次のファイル構造があります。

java-app-jcache/
├── pom.xml
├── pom-redisson.xml
└── src
    └── main
        ├── docker
        │   ├── Dockerfile
        │   └── Dockerfile-wlp
        ├── java
        ├── liberty
        │   └── config
        │       └── server.xml
        ├── redisson
        │   └── redisson-config.yaml
        ├── resources
        └── webapp

pom.xml ファイルは、サンプル アプリケーションの依存関係とプラグインを含む Maven プロジェクト ファイルです。

pom-redisson.xml ファイルは、Redisson クライアント ライブラリの依存関係を後で Liberty サーバーの共有リソース ディレクトリにコピーするために使用されます。

javaresources、および webapp ディレクトリには、サンプル アプリケーションのソース コードが含まれています。

liberty/config ディレクトリーでは、server.xml・ファイルを使用して、Open Liberty および WebSphere Liberty の HTTP セッション・キャッシュを構成します。

redisson ディレクトリでは、redisson-config.yaml ファイルを使用して、Azure Managed Redis インスタンスへの接続を構成します。

Docker ディレクトリには、2 つの Dockerfile が含まれています。 Dockerfile は Open Liberty を使用してイメージをビルドするために使用され、 Dockerfile-wlp は WebSphere Liberty を使用してイメージをビルドするために使用されます。

サンプル アプリケーションをローカルで実行する

サンプル アプリケーションをローカルでビルドして実行するには、次の手順に従います。 これらの手順では、Maven と liberty-maven-pluginを使用します。 liberty-maven-pluginの詳細については、「Maven を使用した Web アプリケーションのビルド」を参照してください。

  1. 現在の作業ディレクトリがローカルクローン内の java-app-jcache であることを確認します。

  2. Maven コマンドを mvn clean package 実行し、アプリケーションをパッケージ化します。

  3. mvn -Predisson validateを実行して、Redisson 構成ファイルを適切なターゲットの場所にコピーします。 この手順では、環境変数 REDIS_CACHE_ADDRESSREDIS_CACHE_KEY の値を redisson-config.yaml ファイルに挿入します。これは server.xml ファイルによって参照されます。

  4. mvn dependency:copy-dependencies -f pom-redisson.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resourcesを実行して、Redisson クライアント ライブラリとその依存関係を Liberty サーバーの共有リソース ディレクトリにコピーします。

  5. mvn liberty:dev Maven コマンドを実行し、アプリケーションを起動します。 アプリケーションが正常に起動すると、コマンド出力に The defaultServer server is ready to run a smarter planet. が表示されます。

    Redis 接続が成功すると、次のような出力が表示されます。

    [INFO] [err] [Default Executor-thread-3] INFO org.redisson.Version - Redisson 3.23.4
    [INFO] [err] [redisson-netty-2-7] INFO org.redisson.connection.pool.MasterPubSubConnectionPool - 1 connections initialized for redacted.<region>.redis.azure.net/<ip_address>:10000
    [INFO] [err] [redisson-netty-2-20] INFO org.redisson.connection.pool.MasterConnectionPool - 24 connections initialized for redacted.<region>.redis.azure.net/<ip_address>:10000
    

アプリケーションをテストする

Web ブラウザーを開いて http://localhost:9080 すると、アプリケーションのホーム ページが表示されます。

Java Liberty アプリケーションが正常に実行されているスクリーンショット。

[ 新しいコーヒー ] フォームで、[ 名前 ] フィールドと [ 価格] フィールドの値を設定し、[送信] を選択 します。 アプリケーションは新しいコーヒーを作成し、保持し、HTTP セッションを Azure Managed Redis インスタンスに格納します。

数秒後、「私たちのコーヒー」のテーブルで新しいコーヒーが表示されるのが見えます

アプリケーションのセッションで作成および永続化された新しいコーヒーを示すサンプル アプリケーションのスクリーンショット。

セッション データを Redis から取得できることを示すには、Ctrl+キーを使用してアプリケーションを停止し、mvn liberty:dev コマンドを使用して再起動します。

次に、アプリケーションのホーム ページを更新します。 [New coffee]\( 新しいコーヒー\) セクションに同じセッション データが表示されます。 テストが完了したら、アプリケーションを停止します。

アプリケーションのコンテナー格納

必要に応じて、次の手順を使用して、コンテナーでアプリケーションをパッケージ化して実行できます。 このサンプル アプリケーションでは、Open Liberty と WebSphere Liberty に 2 つの Dockerfile が用意されています。 このガイドでは、Open Liberty 用の Dockerfile を使用しますが、同様の手順に従って、WebSphere Liberty 用の Dockerfile を使用できます。

  1. OS 用の Docker をインストールします。 詳細については、「Docker の 取得」を参照してください。

  2. 次のコマンドを使用して Docker イメージをビルドします。

    docker build -t javaee-cafe-jcache:v1 -f src/main/docker/Dockerfile .
    
  3. Docker コンテナーを開始するには、次のコマンドを使用します。

    docker run -it --rm \
       -p 9080:9080 \
       -e REDIS_CACHE_ADDRESS=${REDIS_CACHE_ADDRESS} \
       -e REDIS_CACHE_KEY=${REDIS_CACHE_KEY} \
       --mount type=bind,source=$(pwd)/target/liberty/wlp/usr/servers/defaultServer/redisson-config.yaml,target=/config/redisson-config.yaml \
       javaee-cafe-jcache:v1
    

    コンテナーが起動したら、Docker なしでアプリケーションをローカルで実行するために使用する手順と同様の手順を使用して、コンテナーをテストできます。

リソースをクリーンアップする

Azure の課金を回避するには、不要なリソースをクリーンアップする必要があります。 Azure Managed Redis インスタンスが不要になったら、そのリソース グループ名を見つけて、Azure portal から削除します。

詳細については、「 リソース グループの削除」を参照してください。

次のステップ

このガイドで使用された以下の参考資料から、より多くのことを学習できます。

サンプル アプリケーションを Azure にデプロイする場合は、次の記事を参照してください。

Azure で WebSphere 製品を実行するオプションについては、「Azure で WebSphere ファミリの製品を実行するためのソリューションとは?」を参照してください。