
Leading the Way: Payara Platform Community 7 Beta Now Fully Jakarta EE 11 Certified
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
入門ブログシリーズの続きとして、 このブログでは2インスタンスからなるシンプルなHazelcastデプロイメント・グループをどのようにセットアップするのかを実演します。デプロイメント・グループはクラスタを代替するためにPayara 5で導入されました。デプロイメント・グループはサーバーを管理し、単一のデプロイ対象について、インスタンスが同一構成を共有するクラスタリングを可能とする、より柔軟な方法を提供します。デプロイメント・グループの詳細についてはこちらをご覧ください。
開発環境で 「概念実証」を行うには単一サーバーで十分であるのに対して、商用環境ではサービスの信頼性を担保し将来の拡張を可能にするため、アプリケーションを複数の冗長なホストに渡って高い信頼性でホスティングすることが常に要求されます。Payara Serverでは、簡単にインスタンスを作成しHazelcastを用いたデプロイメント・グループへ追加することが可能で、分散したアプリケーションの構成がとても行いやすくなっています。
このブログを進めるには、以下のものが必要です。
最初のステップとしてSSHノードを構成します。SSHノードの詳細と、なぜここでSSHノードを使用するのかについては、概要のブログをご覧ください。
前提条件が整ったら、クラスタを作成する最初のステップは、2番目のUbuntuホスト (“computer2“) にPayara Server自身をインストールして元のUbuntuホスト (“computer“) と通信できるように構成することです。
双方のホストではGNU/Linux OSが稼働しているため、2番目のホストのフルコントロールを要求して、computer2上にSSHノードを作成することになります。ノード作成の一環として、とても便利なPayara Serverの機能のアドバンテージを受けることもできます。Payara Serverは自身のZIPアーカイブを作成して、それをリモート・ノード上にインストールすることができるのです (そのため、両方のインストレーションは同じものであることが保証され、時間も節約することができます)。
以上から、computer2を構成する大まかなは以下のようになります。
sudo apt install openssh-server
Ubuntu 16.04以前のバージョンでは “apt-get install” を使用します。
SSHノードを2番目のUbuntuホストにセットアップしたので、新しいノードを問題なく作成することができます。“Nodes” ウィンドウで “New” ボタンをクリックしてください。
ここでは以下に示す新しいノードのプロパティを入力する必要があります。
各項目を埋めたら OK ボタンを押下してください。”A long-running process has been detected” というポップアップが表示されても心配はいりません。Payara Serverインストレーションのコピーを作成してそれを2番目のUbuntuホストにインストールするしばらくの間、一時停止しているだけです。
Payara Serverインストレーションが問題なく転送されると、ノードが作成され、 “Nodes” ページに戻ります。
リモート・ノードをセットアップしたことで基礎の部分は出来上がりました。次は各ノードに1つずつある2つのインスタンスを、アプリケーションをデプロイできるように構成します。2つのインスタンスが同一の構成を共有し、それらをデプロイメント・グループに追加することで、Payara 4のクラスタと似たものにすることができます。まず、以前のクラスタのように一箇所の変更が両方のインスタンスに反映されるようにするため、両方のインスタンスが参照する新しい構成を作成する必要があります。
Hazelcastクラスタ用の新しい構成を作成するには、左側のツリー上の “Configurations” 親ノードをクリックして構成ページを開き、 “New…” ボタンをクリックしてデプロイメント・グループ用の新しい構成を作成します。
すべての新規Payara Serverインストレーションには、2つの構成が存在します。
何か変更を加えることでDASの構成に悪影響を及ぼしたくないので、ここではdefault-configをコピーしてdg-configという名前にします。
デフォルトの設定で、新しい構成を保存します。
次に、新しい構成を使用するインスタンスを作成する必要があります。Localhost上にインスタンスを作成するには、Instancesページの “New” をクリックします。
“OK” を押下して最初のインスタンスの作成を完了します。
以下のようにリモート・ノードを対象として上記と同様の手順を繰り返すことで、ローカル・ノード上にインスタンスを容易に作成することができます。
“OK” ボタンを押下して2番目かつ最後のインスタンスを作成し、Instancesページに戻ります。すると “Stopped” と示された2つのインスタンスがあるはずです。左側のチェックボックスで両方のインスタンスを選択して起動します。
では、サーバー・インスタンスを互いに関連付けるため、デプロイメント・グループを作成しましょう。これにより、アプリケーションを各インスタンスに対して同時にデプロイすることができるようになります。
デプロイメント・グループを作成するには、 左側のツリー上にある “Deployment Groups” 親ノードをクリックして構成ページを開き、新規デプロイメント・グループを作成するため “New…” ボタンをクリックします。
作成ページ上で、デプロイメント・グループ名の構成を確認し、作成したインスタンスをデプロイメント・グループに追加してください。
“OK” をクリックするとデプロイメント・グループが作成されます。
デプロイメント・グループの作成後は、デプロイメント・グループのページからすべてのインスタンスの起動および停止が可能になります。
GitHub上のPayara Examplesリポジトリには、Payara Serverで利用可能な各機能のデモのプロジェクトが満載です。ここではHazelcastがシームレスにデータを分散する rest-jcache を使用することにします。ただし、まずプロジェクトをダウンロードしてビルドする必要があります。
sudo apt install git maven
git clone https://github.com/Payara/Payara-Examples
その後、”mvn clean install” コマンドを実行してMavenによるプロジェクトをビルドすることができます。
Mavenは自動的に依存ライブラリをダウンロードしてプロジェクトをビルドします。コンパイルされたWebアプリケーションはWARファイルとしてtargetディレクトリ内に保存されます。
これでテスト・アプリケーションがビルドできました。それではこれをデプロイしてみましょう。
クラスタの分散キャッシュ機能をテストするため、アプリケーションをすべてのインスタンスにデプロイして、それから1つのインスタンスのローカル・キャッシュの値を編集することで同時にクラスタ全体のデータが変更されることのデモを行うため、いくつかのデータを追加します。
最初に、ページのツリーから “Applications” ページを選択し、 “Deploy…” をクリックします。
次に、 “Browse…” ボタンでビルドしたアプリケーションをアップロードします。どちらのインスタンスも “Selected Targets” に存在しないことを確認し、代わりに新しく作成したデプロイメント・グループを追加します。
rest-jcache アプリケーションはJAX-RS RESTメソッド上でJCache APIアノテーションを使用し、”cache” エンドポイントをリスンします。GET、PUTおよびDELETEリクエストに対応しています。
まず、2番目のUbuntuホストでデフォルト値の “Helloworld” が返され、値を編集するとそれが1番目のUbuntuホストにも保存され、Hazelcastがクラスタのすべてのメンバーにキャッシュ・エントリを自動的に作成する様子を見てみましょう。
curl “http://<Local_IP>:<Local_Instance_Port>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
ご覧の通り、現時点では “payara” に値が保存されていないため、ローカル・インスタンスからはデフォルト値が返ってきました。
以下のコマンドで “payara” キーに値を追加することができます。
curl -H “Content-Type: application/json” -X PUT -d “badassfish” “http://<Remote_IP>:<Remote_Instance_Port>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
Hazelcastキャッシュのおかげで、この更新されたキーと値のペアはデプロイメント・グループをまたがって即座に分散されます。
最初のコマンドを再実行すると新しい値をすぐに確認することができます。
curl “http://<Local_IP>:<Local_Instance_Port>/rest-jcache-1.0-SNAPSHOT/webresources/cache?key=payara”
また、HazelcastによるPayara Serverのクラスタが動作していることもわかりました。これでデプロイメント・グループが適切に構成され、アプリケーションのデプロイと、今後のブログでご紹介する予定のデプロイメント・グループの負荷分散構成や適切なセッション・ハンドリングといった新しいスケーラビリティのほとんどを始められるようになります。
Share:
We’re excited to announce that Payara Platform Community 7 Beta application server is now fully certified as Jakarta EE 11 […]
Enterprise Java applications power global commerce, healthcare, government and countless other industries. These systems must be scalable, secure and […]
May 2025 marks a monumental milestone in software development: Java turns 30. The impact of this language on the […]