JBoss EAP アプリケーションを Azure VM 上の JBoss EAP に移行する
このガイドでは、既存の JBoss EAP アプリケーションを Azure VM 上の JBoss EAP に移行して実行する場合に知っておくべきことについて説明します。
移行前
移行を確実に成功させるには、開始する前に、次のセクションで説明する評価とインベントリの手順を完了します。
"移行の完了" が意味することを定義する
このガイドおよび対応する Azure Marketplace オファーが、JBoss EAP ワークロードの Azure への移行を促進するための出発点となります。 移行作業の範囲を定義することが重要です。 たとえば、既存のインフラストラクチャから Azure Virtual Machines に厳密な "リフト アンド シフト" を行うのでしょうか。 その場合、移行の際に多少の "リフト アンド改良" を取り入れたくなる可能性があります。
このガイドで詳しく説明されている必要な変更を考慮して、できるだけ純粋な "リフ トアンド シフト" に近づけることをお勧めします。 このマイルストーンに到達したことがわかるように、"移行の完了" が意味することを定義してください。 "移行の完了" に到達したら、「仮想ハード ディスクのスナップショットを作成する」の説明に従って、仮想マシンのスナップショットを取得できます。 スナップショットから正常に復元できることを確認してから、改善を行う方が安全です。 これにより、これまでに達成した移行の進行状況が失われるのを恐れることなく続行できます。
事前構築済みの Azure Marketplace オファーが適切な出発点であるかどうか判断する
Red Hat と Microsoft は提携して、Azure ソリューション テンプレートのセットを Azure Marketplace に導入し、Azure への移行の確固たる出発点を提供しています。 オファーのリストは、「Azure での Red Hat JBoss EAP」 の「Azure Virtual Machines 上の JBoss EAP」セクションで確認できます。
事前構築済みの Azure Marketplace オファーの感触を理解するには、「クイック スタート: Azure Virtual Machines (VM) に JBoss EAP クラスターをデプロイする」を参照してください。
既存のオファーがいずれも適切な開始点でない場合は、Azure Virtual Machines で利用可能なリソースを使用して手動でデプロイを再現する必要があります。 詳細については、「IaaS とは」を参照してください。
JBoss EAP バージョンに互換性があるかどうか確認する
既存の JBoss EAP バージョンは、サービスとしてのインフラストラクチャ (IaaS) オファーのバージョンと互換性がある必要があります。 オファーの Azure portal ページには、使用可能な JBoss EAP のバージョンが表示されます。 詳細については、Azure portal 上の JBoss EAP Cluster on VMs オファーを参照してください。 既存の JBoss EAP バージョンとオファーで利用可能なバージョンの間に互換性がない場合、Azure IaaS リソースを使って手動でデプロイを再現する必要があります。 詳細については、「IaaS とは」を参照してください。
必要なライセンスがあることを確認する
事前構築済みの Azure Marketplace オファーを使用する場合、すべての JBoss EAP サーバーに対して Red Hat から最新のライセンスを取得している必要があります。 それらを Azure に移動すると、ニーズに合わせて次のデプロイ オプションから選択できます。
- Red Hat Enterprise Linux 従量課金制仮想マシンにデプロイする。 このオプションは PAYG と呼ばれます。
- Red Hat Cloud Access プログラムを通じて、Red Hat JBoss EAP および Red Hat Enterprise Linux サブスクリプションを Azure に移行します。 このオプションは BYOS と呼ばれます。
どちらのオプションでも、ライセンスの移植性のために、Red Hat から プール ID の入力を求められます。 オファーを試す前に、この ID が手元にあることを確認してください。
事前構築済みの Azure Marketplace オファーには、ライセンス管理のため Red Hat Satellite のサポートが含まれています。 Red Hat Satellite の概要については、「Red Hat Satellite」をご覧ください。
Note
EAP エンタイトルメントをお持ちでない場合は、 Red Hat Developer Subscription for Individuals を使用して無料の開発者サブスクリプションにサインアップできます。 事前構築済みの Azure Marketplace オファーで RHSM ユーザー名 および RHSM パスワード として使用するアカウントの詳細を保存しておきます。
プール ID を検出する手順については、「クイック スタート: Azure Virtual Machines (VM) に JBoss EAP クラスターをデプロイする」の「前提条件」の項で説明されています。
サーバー容量をインベントリする
現在の実稼働サーバーのハードウェア (メモリ、CPU、ディスク) と、平均およびピーク時の要求数とリソース使用率を文書化します。 この情報は、選択した移行パスに関係なく必要になります。 たとえば、ノード プール内の VM のサイズ、コンテナーによって使用されるメモリの量、コンテナーが必要とする CPU 共有の数などの選択に役立ちます。
AKS でノード プールのサイズを変更できます。 方法については、「Azure Kubernetes Service (AKS) でノード プールのサイズを変更する」を参照してください。
すべてのシークレットをインベントリする
すべてのシークレットとパスワードについて、実稼働サーバー上のすべてのプロパティと構成ファイルを確認します。 必ず、ご自分の WAR 内の jboss-web.xml を確認してください。 また、パスワードや資格情報を含む構成ファイルがアプリケーション内に見つかる場合もあります。
これらのシークレットを Azure Key Vault に格納することを検討してください。 詳細については、「Azure Key Vault の基本的な概念」をご覧ください。
すべての証明書をインベントリする
パブリック SSL エンドポイントで使用されるすべての証明書を文書化します。 次のコマンドを実行して、運用サーバー上のすべての証明書を表示できます。
keytool -list -v -keystore <path to keystore>
サポートされている Java バージョンが正しく動作することを検証する
JBoss EAP on Azure VMs には、サポートされているバージョンの Java が必要です。 使用する JDK のバージョンに関するガイダンスについては、Red Hat ドキュメントの サポートされている構成に関するページ をご覧ください。
Note
現在のサーバーがサポートされていない JDK (Oracle JDK や IBM OpenJ9 など) で実行されている場合、この検証が特に重要です。
現在の Java バージョンを取得するには、実稼働サーバーにサインインし、次のコマンドを実行します。
java -version
外部リソースをインベントリする
データ ソース、JMS メッセージ ブローカー、およびその他の外部リソースは、JNDI (Java Naming and Directory Interface) を介して挿入されます。 こうしたリソースの一部では、移行または再構成が必要な場合があります。
アプリケーション内
WEB-INF/jboss-web.xml または WEB-INF/web.xml あるいはその両方のファイルを調べます。 <Context>
要素内の <Resource>
要素を探します。
データソース
データソースは、 type
属性が javax.sql.DataSource
に設定されている JNDI リソースです。 データソースごとに、次の情報を文書にまとめます。
- データソース名
- 接続プールの構成
- JDBC ドライバーの JAR ファイルの場所
詳細については、JBoss EAP のドキュメントの「JBoss EAP データソース」を参照してください。
その他のすべての外部リソース
このガイドでは、考えられるすべての外部依存関係を記載することはできません。 アプリケーションの外部依存関係がすべて満たされるよう確認するのは、担当チームの責任です。
ファイル システムが使用されているかどうかとその使用方法を判断する
アプリケーション サーバーでファイル システムを使用する場合は、再構成や、まれにアーキテクチャの変更が必要になります。 JBoss EAP モジュールまたはアプリケーション コードによってファイル システムが使用される場合があります。 次のセクションに記載された一部または全部のシナリオを確認できます。
読み取り専用の静的コンテンツ
現在、アプリケーションで静的コンテンツを提供している場合は、そのための別の場所が必要になります。 静的コンテンツを Azure Blob Storage に移動し、グローバルな高速ダウンロードのために Azure CDN を追加することを検討できます。 詳細については、「Azure Storage での静的 Web サイト ホスティング」と 「クイック スタート:Azure ストレージ アカウントと Azure CDN との統合」を参照してください。
動的に公開される静的コンテンツ
アプリケーションによってアップロードまたは生成されるが、作成後に変更できない静的コンテンツをアプリケーションで許可する場合は、前述のように Azure Blob Storage と Azure CDN を使用し、Azure Function でアップロードと CDN の更新を処理します。 「Azure Functions を使用した静的コンテンツのアップロードと CDN の事前読み込み」で、ご利用いただけるサンプルの実装を提供しています。
オンプレミスへの接続が必要かどうかを判断する
アプリケーションからオンプレミスのサービスのいずれかにアクセスする必要がある場合、Azure の接続サービスの 1 つをプロビジョニングする必要があります。 詳しくは、「オンプレミス ネットワークの Azure への接続」をご覧ください。 または、オンプレミスのリソースで公開されている一般公開の API を使用するように、アプリケーションをリファクタリングする必要があります。
Java Message Service (JMS) キューまたはトピックが使用中かどうか確認する
アプリケーションで JMS キューまたはトピックを使用している場合は、外部でホストされている JMS サーバーにそれらを移行する必要があります。 Azure Service Bus と Advanced Message Queuing Protocol (AMQP) は、JMS を使用している場合の優れた移行方法となります。 詳細については、「Azure Service Bus Standard と AMQP 1.0 で Java Message Service 1.1 を使用する」を参照してください。
JMS 永続ストアが構成されている場合は、それらの構成を把握して、移行後に適用する必要があります。
JCA コネクタが使用されているかどうかを判断する
アプリケーションで JCA コネクタを使用する場合は、JBoss EAP で JCA コネクタを使用できることを確認する必要があります。 JBoss EAP で JCA コネクタを使用できる場合は、それを使用できるように、JAR をサーバーのクラスパスに追加し、必要な構成ファイルを JBoss EAP サーバー ディレクトリ内の適切な場所に配置しする必要があります。
JAAS が使用されているかどうかを判断する
アプリケーションで JAAS が使用されている場合は、JAAS がどのように構成されているかを把握する必要があります。 データベースを使用している場合は、それを JBoss EAP 上の JAAS ドメインに変換できます。 カスタム実装の場合は、それを JBoss EAP で使用できるかどうかを確認する必要があります。
アプリケーションが複数の WAR で構成されているかどうか確認する
アプリケーションが複数の WAR で構成されている場合は、これらの各 WAR を個別のアプリケーションとして扱い、それぞれについてこのガイドに従う必要があります。
アプリケーションが EAR としてパッケージ化されているかどうか確認する
アプリケーションが EAR ファイルとしてパッケージ化されている場合は、必ず application.xml ファイルを調べて、構成を把握してください。
Note
Azure VM リソースの使用を改善するために各 Web アプリケーションを個別に拡張できるようにする場合は、個々の Web アプリケーションに EAR を分割する必要があります。
実稼働サーバーで実行されているすべての外部プロセスとデーモンを特定する
デーモンの監視など、アプリケーション サーバーの外部で実行されているプロセスがある場合は、それらを削除するか、別の場所に移行する必要があります。
移行
Azure Virtual Machines オファーで JBoss EAP を選択する
次のセクションで説明するオファーは、Azure Virtual Machines 上の JBoss EAP で利用できます。
オファーのデプロイ中に、JBoss EAP サーバー ノードの仮想マシンのサイズを選択するよう求められます。 VM サイズを選択する際、サイズ設定 (メモリ、プロセッサ、ディスク) のすべての側面を考慮することが重要です。 詳細については、「Cloud Services (クラシック) のサイズ」を参照してください。
Azure Virtual Machine Scale Sets 上の JBoss EAP
Virtual Machine Scale Sets は、負荷分散される非常にスケーラブルな仮想マシンのグループを、任意のサイズのワークロードに提供します。 詳細については、「Virtual Machine Scale Sets とは」を参照してください。
クラスター化された Virtual Machines 上の JBoss EAP
JBoss EAP クラスタリング機構を使用する VM の従来のクラスターを使用する場合、この機能を既に使用しているデプロイからのリフト アンド シフトに適しています。 詳細については、JBoss EAP ドキュメントの「Web アプリケーションdえのクラスター化」に関するページを参照してください。 事前構築済みの Azure Marketplace オファーには、ドメイン モードのサポートが含まれています。 EAP ドメインとドメイン モードの概要については、「ドメイン管理」を参照してください。
JBoss EAP 単一サーバー
テストと評価のために、または軽量のワークロードのために単一サーバーしか必要でない場合は、単一の VM に JBoss EAP 単一サーバーをデプロイするオファーがあります。
Red Hat Migration Toolkit for Apps
Red Hat Migration Toolkit for Applications は、Visual Studio Code 用の無料の拡張機能です。 この拡張機能により、アプリケーション コードと構成を分析して、オンプレミスからクラウドに移行するための推奨事項を提供します。 詳細については、「Migration Toolkit for Applications の概要」を参照してください。
このガイドの内容は、適切な VM サイズの選択やセッション状態の外部化など、移行プロセスの他のコンポーネントに対処するのに役立ちます。
移行後
「移行前」ステップで定義した移行の目標に到達したら、エンド ツー エンドの受け入れテストを実施して、すべてが予期したとおりに機能することを確認します。 移行後の機能強化の可能性については、以下の記事を参照してください。
Azure Storage を使用して、仮想マシンにマウントされた静的コンテンツを提供します。 詳細については、 「Azure DevTest Labs の ラボ仮想マシンに対してデータ ディスクをアタッチまたはデタッチする」を参照してください。
Azure DevOps を使用して、移行した JBoss EAP クラスターにアプリケーションをデプロイします。 詳細については、 「Azure DevOps の概要」にかんするドキュメントを参照してください。
高度な負荷分散サービスを使用してネットワーク トポロジを強化します。 詳細については、「Azure で負荷分散サービスを使用する」を参照してください。
Azure マネージド ID を使ってシークレットを管理し、Azure リソースへのロール ベースのアクセス権を割り当てます。 詳細については、「Azure リソースのマネージド ID とは」を参照してください。
Java Enterprise Edition 認証と Microsoft Entra ID での認証を統合します。 詳細については、 「Microsoft Entra ID とアプリケーションの統合に関する概要ガイド」を参照してください。
Azure Key Vault を使用して、"シークレット" として機能するすべての情報を格納します。 詳細については、「Azure Key Vault の基本的な概念」をご覧ください。