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

Serverless App Engine:リモートデバッグの実行

最終更新日:Sep 03, 2024

Serverless App Engine (SAE) にデプロイされているアプリケーションをリモートで診断する場合は、SAEのリモートデバッグ機能を使用できます。 このトピックでは、ジャンプサーバーとOpenSSHを使用してリモートデバッグを実行する方法について説明します。

前提条件

アプリケーションが作成されていること。 詳細については、「JavaアプリケーションのSAE 1.0へのデプロイ」をご参照ください。

背景情報

ジャンプサーバーは、他のサーバーにアクセスするために使用できるアクセス可能なサーバーです。 SAEでは、ジャンプサーバーを使用して、SSHプロトコルを介してオンプレミスデバイスとSAEアプリケーションインスタンス間の相互アクセスとリモート管理を実行します。 SAEは、名前空間レベルのジャンプサーバーを提供します。 名前空間にジャンプサーバーを追加すると、ジャンプサーバーは、名前空間がバインドされている仮想プライベートクラウド (VPC) に自動的に関連付けられます。 次に、ジャンプサーバーを使用して、数回クリックするだけで名前空間内のすべてのアプリケーションインスタンスにアクセスできます。 オンプレミスデバイスとSAEアプリケーションインスタンス間で相互アクセスとデバッグを実行できます。

警告

リモートデバッグは、一時的なデバッグにのみ使用されます。 リモートデバッグを長期間有効にすると、データ漏えいなどのリスクが発生する可能性があります。 リモート診断タスクの完了後、関連するジャンプサーバーを削除してリモートデバッグを無効にすることを推奨します。

手順1: ジャンプサーバーの設定

  1. SAEコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[名前空間] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、名前空間の名前をクリックします。

  3. On the基本情報タブをクリックします。ジャンプサーバーの追加で、ジャンプサーバー情報フィールドを選択します。

  4. では、ジャンプサーバーの追加パネル、パラメータを設定します。

    1. [ジャンプサーバー作成情報の設定] ステップで、パラメーターを設定し、[次へ] をクリックします。 下表にパラメーターを示します。

      パラメーター

      説明

      VPC

      ジャンプサーバーが存在するVPC。 VPCは、SAEアプリケーションが存在するVPCと同じです。 値は自動的に指定されます。

      vSwitch

      少なくとも1つのvSwitchを指定する必要があります。 3つ以下のvSwitchを指定することを推奨します。 [変更] をクリックすると、選択したvSwitchを変更できます。 [vSwitchの選択] ダイアログボックスで、推奨ゾーンのvSwitchを表示して選択します。

      セキュリティグループ

      TCPポート22を許可するカスタムインバウンドルールが、選択したセキュリティグループに関連付けられていることを確認します。

      SSH証明書

      コードエディターで、SSH証明書の名前を入力するか、[ファイルの選択] をクリックしてSSH証明書をアップロードします。

      ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 形式でコマンドを実行し、SSH証明書を生成できます。 SSH証明書の取得方法の詳細については、「新しいSSHキーの生成とssh-agentへの追加」をご参照ください。

    2. では、Jump Serverリソースの作成ステップ、設定を確認し、OK.

      システムは、0.5コアCPUと1 GiBメモリ、および現在の名前空間内の指定されたVPCとvSwitchのelastic IPアドレス (EIP) を備えたジャンプサーバーインスタンスを自動的に作成します。 使用期間に基づいて課金されます。 詳細については、「SAE pay-as-you-go」および「EIP pay-as-you-go」をご参照ください。

    ジャンプサーバーの作成後、[基本情報] タブでジャンプサーバーのネットワーク構成を確認できます。 ネットワーク設定には、関連するEIP、VPC、vSwitch、およびセキュリティグループが含まれます。

ステップ2: OpenSSHのインストール

OpenSSHをインストールし、リモートデバッグ機能を使用してSSHプロトコルにログオンし、SFTPまたはSCPプロトコルを使用してファイルをアップロードおよびダウンロードできます。 これにより、SAEアプリケーションインスタンスの一時的なデバッグを簡単に実行できます。 詳細については、「コマンドをコピーしてO&Mコンポーネントをインストールする」をご参照ください。

  1. SAEコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。

  3. [基本情報] ページで、[インスタンスのデプロイ情報] タブをクリックします。 [デフォルトグループ] セクションで、管理するインスタンスを見つけ、[操作] 列の [Webshell] をクリックします。

  4. をクリックし、bt_copy_codeウェブシェルウィンドウの右上隅にあるアイコン。

  5. では、コピーコマンドダイアログボックスで、opensshのインストールコマンドをプレビューし、コピー.

  6. [Webshell] ウィンドウで、次のコマンドを実行してOpenSSHを設定します。

    1. コピーしたOpenSSHインストールコマンドを実行します。

    2. を実行します。Run thepasswdログイン用のインスタンスパスワードを設定します。

ステップ3: リモートデバッグの実行

リモートデバッグを有効にすると、取得したリモートデバッグIPアドレスとポートを使用して、インターネットにアクセスできるSSHクライアントを持つホストでリモートデバッグを実行できます。 次のシナリオでは、リモートデバッグ結果を検証する方法について説明します。

シナリオ1: オンプレミスのデバイスからSAEアプリケーションインスタンスにアクセスする

以下のコマンドを実行します。

ssh -v root @ {SAEアプリケーションインスタンスのIPアドレス} -J root @{Jump server IP address}

シナリオ2: SAEアプリケーションインスタンスの特定のポートをローカルポートにマップする

以下のコマンドを実行します。

ssh -v -L {ローカルデバッグポート }:{ SAEアプリケーションインスタンスのIPアドレス }:{ SAEアプリケーションインスタンスのポート} root @{Jump server IP address} -N

シナリオ3: Javaアプリケーションを使用したリモートデバッグの実行

  1. SAEコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。

  3. の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.

  4. [アプリケーションのデプロイ] ページの [スタートアップコマンドの設定] セクションで、スタートアップコマンドを設定します。 設定後、[確認] をクリックします。

    起動コマンドに必要なパラメーターは、Javaアプリケーションの作成時に構成するApplication Deployment Methodパラメーターの値によって異なります。

    重要

    [確認] をクリックすると、アプリケーションが再起動されます。 予測できないエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることを推奨します。

    • イメージ

      この例では、ENTRYPOINT: [nginx, '-g', 'daemon off;'] コマンドが設定されています。 コマンドのパラメーターを次の表に示します。

      パラメーター

      説明

      Startupコマンド

      起動コマンドを入力します。 例: nginx

      スタートアップパラメーター

      起動パラメーターを入力します。 例: -g

      [+ 追加] をクリックして、新しい行にパラメーターを追加します。 例: daemon off

    • JARパッケージ

      パラメーター

      説明

      デフォルトの起動コマンド

      によって提供されるデフォルトの起動コマンド。SAE.

      オプション設定

      JVMパラメーター。 詳細については、「JVMオプション」、「Java仮想マシンのチューニング」、および「JVMチューニング: パフォーマンスチューニングのために環境を準備する方法」をご参照ください。

      アプリケーションのリモートデバッグ機能を使用する場合は、JDKのバージョンに応じて次のコマンドを設定します。

      • JDK 11およびJDK 17

        -agentlib:jdwp=transport=dt_socket,address=*:9000,server=y,suspend=n
      • その他のJDKバージョン

        -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n

      説明:

      • transport: リモートデバッグ中にデータを送信するために使用されるメソッド。

      • address: O&Mエンジニアがリモートデバッグを実行するクライアントのIPアドレス。 リモートデバッグを有効にしたときに指定したポートを使用します。 詳細については、「リモートデバッグの実行」をご参照ください。

      重要

      WARパッケージを使用してアプリケーションをデプロイするときに使用される起動コマンドは、JARパッケージを使用してアプリケーションをデプロイするときに使用される起動コマンドとは異なります。 異なる方法でアプリケーションをデプロイする場合は、同じスタートアップコマンドを使用しないことをお勧めします。 WARパッケージとJARパッケージのどちらを使用してアプリケーションをデプロイするかに関係なく、前述のリモートデバッグコマンドを使用してアプリケーションをデバッグできます。

      args設定

      標準出力 (stdout) および標準エラー (stderr) のリダイレクトパラメーター。 例: 1>>/tmp/std.log>&1

      optionsショートカット設定

      このパラメーターは、Java環境パラメーターをDragonwell.

      • マイクロサービスのパフォーマンス向上の有効化 (Wisp2 Coroutine): デフォルトでは、この機能は有効になっています。 この機能により、実行時の複数スレッドのパフォーマンスが向上します。

      • Enable Application Memory Optimization (G1): デフォルトでは、この機能は有効になっています。 この機能により、複数のCPUと大容量メモリが必要なシナリオでGC時間が短縮されます。 この機能は、GC最適化およびビッグデータシナリオにも適しています。

      • Application Startup Acceleration (クイックスタート) の有効化: このパラメーターは、Java EnvironmentパラメーターをDragonwell 11に設定した場合にのみ使用できます。 [Application Startup Accelerationの有効化 (クイックスタート)] を選択し、[Persistent Storage Directory] パラメーターを設定して、アプリケーションの起動効率を向上させることができます。

        重要

        Enable Application Startup Acceleration (クイックスタート) を選択する前に、Apsara File Storage NASファイルシステムを設定する必要があります。 詳細は、「NASストレージの設定」をご参照ください。

      • Persistent Storage Directory: このパラメーターは、[アプリケーションのスタートアップアクセラレーションを有効にする (クイックスタート)] を選択した場合に必要です。 インスタンス間でアプリケーションの起動を高速化するには、Persistent Storage DirectoryパラメーターをNASファイルシステムのディレクトリまたはサブディレクトリに設定することを推奨します。 NASファイルシステムの設定方法については、「NASストレージの設定」をご参照ください。

    • WARパッケージ

      パラメーター

      説明

      デフォルトの起動コマンド

      によって提供されるデフォルトの起動コマンド。SAE.

      オプション設定

      JVMパラメーター。 詳細については、「JVMオプション」、「Java仮想マシンのチューニング」、および「JVMチューニング: パフォーマンスチューニングのために環境を準備する方法」をご参照ください。

      アプリケーションのリモートデバッグ機能を使用する場合は、JDKのバージョンに応じて次のコマンドを設定します。

      • JDK 11およびJDK 17

        -agentlib:jdwp=transport=dt_socket,address=*:9000,server=y,suspend=n
      • その他のJDKバージョン

        -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n

      説明:

      • transport: リモートデバッグ中にデータを送信するために使用されるメソッド。

      • address: O&Mエンジニアがリモートデバッグを実行するクライアントのIPアドレス。 リモートデバッグを有効にしたときに指定したポートを使用します。 詳細については、「リモートデバッグの実行」をご参照ください。

      重要

      WARパッケージを使用してアプリケーションをデプロイするときに使用される起動コマンドは、JARパッケージを使用してアプリケーションをデプロイするときに使用される起動コマンドとは異なります。 異なる方法でアプリケーションをデプロイする場合は、同じスタートアップコマンドを使用しないことをお勧めします。 WARパッケージとJARパッケージのどちらを使用してアプリケーションをデプロイするかに関係なく、前述のリモートデバッグコマンドを使用してアプリケーションをデバッグできます。

      optionsショートカット設定

      このパラメーターは、Java環境パラメーターをDragonwell.

      • マイクロサービスのパフォーマンス向上の有効化 (Wisp2 Coroutine): デフォルトでは、この機能は有効になっています。 この機能により、実行時の複数スレッドのパフォーマンスが向上します。

      • Enable Application Memory Optimization (G1): デフォルトでは、この機能は有効になっています。 この機能により、複数のCPUと大容量メモリが必要なシナリオでGC時間が短縮されます。 この機能は、GC最適化およびビッグデータシナリオにも適しています。

      • Application Startup Acceleration (クイックスタート) の有効化: このパラメーターは、Java EnvironmentパラメーターをDragonwell 11に設定した場合にのみ使用できます。 [Application Startup Accelerationの有効化 (クイックスタート)] を選択し、[Persistent Storage Directory] パラメーターを設定して、アプリケーションの起動効率を向上させることができます。

        重要

        Enable Application Startup Acceleration (クイックスタート) を選択する前に、Apsara File Storage NASファイルシステムを設定する必要があります。 詳細は、「NASストレージの設定」をご参照ください。

      • Persistent Storage Directory: このパラメーターは、[アプリケーションのスタートアップアクセラレーションを有効にする (クイックスタート)] を選択した場合に必要です。 インスタンス間でアプリケーションの起動を高速化するには、Persistent Storage DirectoryパラメーターをNASファイルシステムのディレクトリまたはサブディレクトリに設定することを推奨します。 NASファイルシステムの設定方法については、「NASストレージの設定」をご参照ください。

  5. のデバッグを有効にするEnable debugging for anSAEアプリケーションインスタンスの手順に従って、ステップ1ステップ2.

  6. 次のコマンドを実行して、SAEアプリケーションインスタンスの特定のポートをローカルポートにマップします。

    ssh -v -L {ローカルデバッグポート }:{ SAEアプリケーションインスタンスのIPアドレス }:{ SAEアプリケーションインスタンスのポート} root @{Jump server IP address} -N
  7. アクセス127.0.0.1 {ローカルデバッグポート}デバッグ用にオンプレミスのデバイスから

関連ドキュメント

JavaおよびPHPリモートデバッグの詳細については、次のトピックを参照してください。

Javaリモートデバッグポートのヘルスチェックを設定する場合は、デバッグ中にIntelliJ IDEAのブレークポイントをThreadに設定する必要があります。 そうでなければ、ヘルスチェックは失敗です。 詳細については、「ヘルスチェックの設定」をご参照ください。db_set_suspend_thread_in_IDEA