このトピックでは、Enterprise Distributed Application Service(EDAS)で High-Speed Service Framework(HSF)アプリケーションをグレースフルリリースする方法について説明します。
前提条件
- EDAS Container のバージョンが V3.5.7 以降であること。EDAS Container のバージョンが V3.5.7 より前の場合は、更新してください。詳細については、「ランタイム環境のアップグレードまたはダウングレード」をご参照ください。
- アプリケーションにヘルスチェック URL が設定されていること。
HSF アプリケーションをグレースフルリリースするには、アプリケーションのヘルスチェック URL を設定する必要があります。このようにして、アプリケーションの起動時に EDAS に通知するためのスクリプトをマウントできます。このスクリプトは、アプリケーションの起動後に自動的に実行されます。
デフォルトでは、EDAS にヘルスチェック URL は設定されていません。必要なコントローラーを手動で作成し、アプリケーションコードで設定する必要があります。
@RestController public class HealthCheckController { @RequestMapping("/health") public String healthCheck(){ // 成功を返します return "success"; } }URL ベースのヘルスチェックは、ポートベースのヘルスチェックよりもアプリケーションのヘルスステータスをより正確に反映します。
- ヘルスチェック URL を設定する前

- ヘルスチェック URL を設定した後

- ヘルスチェック URL を設定する前
背景情報
アプリケーションの起動中に、サービスがレジストリに登録されます。サービスコンシューマーは、登録が成功したという通知を受信した後、サービスプロバイダーへの呼び出しを開始します。ただし、アプリケーションの起動は継続的なプロセスです。このプロセス中に、サービスはリリースされている可能性がありますが、Redis やデータベースリソースなどの依存コンポーネントはまだ初期化されていない可能性があります。このような状況でインバウンドトラフィックが発生すると、呼び出しは失敗します。呼び出しの失敗を防ぐために、HSF アプリケーションをグレースフルリリースできます。
HSF のすべてのプロバイダー Bean は、初期化中にレジストリに登録されません。代わりに、Spring コンテナ内のすべての Bean が初期化され、RefreshEvent が送信された後に登録されます。さらに、Pandora はすべてのサービスが登録された後にステータスを true に設定します。O&M も必要です。app server(Tomcat) が起動し、Web サーバーが起動する前に、curl localhost: 12201/hsf/status コマンドを実行して、サービスが初期化されているかどうかを確認できます。初期化されている場合は、Apache または NGINX Web サーバーを起動します。
HSF アプリケーションの遅延リリースを設定する
にログインします。
左側のナビゲーションペインで、 を選択します。
- 上部のナビゲーションバーで、リージョン を選択します。アプリケーション ページで、グレースフルリリースするアプリケーションが属する マイクロサービス名前空間 を選択します。次に、アプリケーションの名前をクリックします。
- アプリケーションの 基本情報 ページで、編集JVM パラメーター[アプリケーション設定] セクションの の右側にある をクリックします。
- [アプリケーション設定] ダイアログボックスで、[カスタム] をクリックします。[カスタムパラメーター] フィールドに、-Dhsf.publish.delayed=true と入力し、[JVM パラメーターの設定] をクリックします。遅延リリースが設定されると、HSF アプリケーションはすぐにリリースされません。代わりに、HSF アプリケーションは、リリーススクリプトから送信された通知を受信した後にリリースされます。
- HSF アプリケーションがデプロイされている Elastic Compute Service(ECS)インスタンスにログインして、遅延リリースを確認します。
- telnet localhost 12201 コマンドを実行して、ECS インスタンスにログインします。
- cd hsf コマンドを実行して、HSF ディレクトリに移動します。
- ls コマンドを実行して、サービスのリリースステータスを表示します。

自動リリーススクリプトをマウントする
にログインします。
左側のナビゲーションペインで、 を選択します。
- 上部のナビゲーションバーで、リージョン を選択します。アプリケーション ページで、グレースフルリリースするアプリケーションが属する マイクロサービス名前空間 を選択します。次に、アプリケーションの名前をクリックします。
- アプリケーションの 基本情報 ページで、マウント スクリプト[アプリケーション設定] セクションの をクリックします。
- [スクリプトのマウント] ダイアログボックスで、[起動後スクリプト] をクリックし、次のスクリプトを入力します。
grep "PANDORA QOS PORT" /home/admin/edas-assist/edas-assist.pid | sed 's/\x0D$//' | awk- edas-assist.pid ファイルの内容
PID:19426 // プロセスID HSF PORT:12200 // HSFポート PANDORA QOS PORT:12203 // Pandora QOSポート MONITOR PORT:8006 // 監視ポート CSP PORT:8719 // CSPポート - /home/admin/edas-assist/edas-assist.pid は、Pandora Boot のポート番号を記録するファイルです。 Pandora Boot のポート番号は、EDAS Container の起動後にランダムに生成されます。 ほとんどの場合、ポート番号は 12201 です。 ポートが使用中の場合は、次のポートが使用されます。
- curl localhost:"$2"/hsf/online?k=hsf コマンドは、HSF アプリケーションをリリースし、HSF アプリケーションがリリースされたことを EDAS Container に通知するために使用されます。 このコマンドは手動で実行することもできます。
- edas-assist.pid ファイルの内容
結果の確認
Quality of Service(QoS)方式またはログ方式を使用して、HSF アプリケーションが正常にリリースされたかどうかを確認できます。
- QoS
スクリプトが構成された後、アプリケーションのデプロイやリセットなどの操作を実行するときに、HSF アプリケーションを正常にリリースできます。 アプリケーションがデプロイされている ECS インスタンスにログオンし、サービスのリリース状態を確認できます。

- ログ
[/home/admin/logs/hsf/hsf.log] ファイルに次のログが含まれているかどうかを確認します。 ログが存在する場合、HSF アプリケーションはリリースコマンドを受信しています。
01 2019-11-26 16:23:03.456 INFO [qos-worker-3-1:t.hsf] [38ef6d0