すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:HSF アプリケーションのグレースフルリリース

最終更新日:Jan 07, 2025

このトピックでは、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 を設定する前 Instance deployment information - Before a health check URL is configured
    • ヘルスチェック URL を設定した後 Instance deployment information - After a health check URL is configured

背景情報

アプリケーションの起動中に、サービスがレジストリに登録されます。サービスコンシューマーは、登録が成功したという通知を受信した後、サービスプロバイダーへの呼び出しを開始します。ただし、アプリケーションの起動は継続的なプロセスです。このプロセス中に、サービスはリリースされている可能性がありますが、Redis やデータベースリソースなどの依存コンポーネントはまだ初期化されていない可能性があります。このような状況でインバウンドトラフィックが発生すると、呼び出しは失敗します。呼び出しの失敗を防ぐために、HSF アプリケーションをグレースフルリリースできます。

HSF のすべてのプロバイダー Bean は、初期化中にレジストリに登録されません。代わりに、Spring コンテナ内のすべての Bean が初期化され、RefreshEvent が送信された後に登録されます。さらに、Pandora はすべてのサービスが登録された後にステータスを true に設定します。O&M も必要です。app server(Tomcat) が起動し、Web サーバーが起動する前に、curl localhost: 12201/hsf/status コマンドを実行して、サービスが初期化されているかどうかを確認できます。初期化されている場合は、Apache または NGINX Web サーバーを起動します。

HSF アプリケーションの遅延リリースを設定する

  1. にログインします。

  2. 左側のナビゲーションペインで、[アプリケーション管理] > [アプリケーション] を選択します。

  3. 上部のナビゲーションバーで、リージョン を選択します。アプリケーション ページで、グレースフルリリースするアプリケーションが属する マイクロサービス名前空間 を選択します。次に、アプリケーションの名前をクリックします。
  4. アプリケーションの 基本情報 ページで、編集JVM パラメーター[アプリケーション設定] セクションの の右側にある をクリックします。
  5. [アプリケーション設定] ダイアログボックスで、[カスタム] をクリックします。[カスタムパラメーター] フィールドに、-Dhsf.publish.delayed=true と入力し、[JVM パラメーターの設定] をクリックします。
    遅延リリースが設定されると、HSF アプリケーションはすぐにリリースされません。代わりに、HSF アプリケーションは、リリーススクリプトから送信された通知を受信した後にリリースされます。
  6. HSF アプリケーションがデプロイされている Elastic Compute Service(ECS)インスタンスにログインして、遅延リリースを確認します。
    1. telnet localhost 12201 コマンドを実行して、ECS インスタンスにログインします。
    2. cd hsf コマンドを実行して、HSF ディレクトリに移動します。
    3. ls コマンドを実行して、サービスのリリースステータスを表示します。
      View the HSF service release status

自動リリーススクリプトをマウントする

  1. にログインします。

  2. 左側のナビゲーションペインで、[アプリケーション管理] > [アプリケーション] を選択します。

  3. 上部のナビゲーションバーで、リージョン を選択します。アプリケーション ページで、グレースフルリリースするアプリケーションが属する マイクロサービス名前空間 を選択します。次に、アプリケーションの名前をクリックします。
  4. アプリケーションの 基本情報 ページで、マウント スクリプト[アプリケーション設定] セクションの をクリックします。
  5. [スクリプトのマウント] ダイアログボックスで、[起動後スクリプト] をクリックし、次のスクリプトを入力します。
    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 に通知するために使用されます。 このコマンドは手動で実行することもできます。

結果の確認

Quality of Service(QoS)方式またはログ方式を使用して、HSF アプリケーションが正常にリリースされたかどうかを確認できます。

  • QoS

    スクリプトが構成された後、アプリケーションのデプロイやリセットなどの操作を実行するときに、HSF アプリケーションを正常にリリースできます。 アプリケーションがデプロイされている ECS インスタンスにログオンし、サービスのリリース状態を確認できます。

    Check whether the HSF application is gracefully released - QoS
  • ログ

    [/home/admin/logs/hsf/hsf.log] ファイルに次のログが含まれているかどうかを確認します。 ログが存在する場合、HSF アプリケーションはリリースコマンドを受信しています。

    01 2019-11-26 16:23:03.456 INFO [qos-worker-3-1:t.hsf] [38ef6d0