Serverless App Engine (SAE) にデプロイされているアプリケーションをリモートで診断する場合は、SAEのリモートデバッグ機能を使用できます。 このトピックでは、ジャンプサーバーとOpenSSHを使用してリモートデバッグを実行する方法について説明します。
前提条件
アプリケーションが作成されていること。 詳細については、「JavaアプリケーションのSAE 1.0へのデプロイ」をご参照ください。
背景情報
ジャンプサーバーは、他のサーバーにアクセスするために使用できるアクセス可能なサーバーです。 SAEでは、ジャンプサーバーを使用して、SSHプロトコルを介してオンプレミスデバイスとSAEアプリケーションインスタンス間の相互アクセスとリモート管理を実行します。 SAEは、名前空間レベルのジャンプサーバーを提供します。 名前空間にジャンプサーバーを追加すると、ジャンプサーバーは、名前空間がバインドされている仮想プライベートクラウド (VPC) に自動的に関連付けられます。 次に、ジャンプサーバーを使用して、数回クリックするだけで名前空間内のすべてのアプリケーションインスタンスにアクセスできます。 オンプレミスデバイスとSAEアプリケーションインスタンス間で相互アクセスとデバッグを実行できます。
リモートデバッグは、一時的なデバッグにのみ使用されます。 リモートデバッグを長期間有効にすると、データ漏えいなどのリスクが発生する可能性があります。 リモート診断タスクの完了後、関連するジャンプサーバーを削除してリモートデバッグを無効にすることを推奨します。
手順1: ジャンプサーバーの設定
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[名前空間] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、名前空間の名前をクリックします。
On the基本情報タブをクリックします。ジャンプサーバーの追加で、ジャンプサーバー情報フィールドを選択します。
では、ジャンプサーバーの追加パネル、パラメータを設定します。
[ジャンプサーバー作成情報の設定] ステップで、パラメーターを設定し、[次へ] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
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への追加」をご参照ください。では、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コンポーネントをインストールする」をご参照ください。
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
[基本情報] ページで、[インスタンスのデプロイ情報] タブをクリックします。 [デフォルトグループ] セクションで、管理するインスタンスを見つけ、[操作] 列の [Webshell] をクリックします。
をクリックし、ウェブシェルウィンドウの右上隅にあるアイコン。
では、コピーコマンドダイアログボックスで、opensshのインストールコマンドをプレビューし、コピー.
[Webshell] ウィンドウで、次のコマンドを実行してOpenSSHを設定します。
コピーしたOpenSSHインストールコマンドを実行します。
を実行します。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アプリケーションを使用したリモートデバッグの実行
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.
[アプリケーションのデプロイ] ページの [スタートアップコマンドの設定] セクションで、スタートアップコマンドを設定します。 設定後、[確認] をクリックします。
起動コマンドに必要なパラメーターは、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ストレージの設定」をご参照ください。
のデバッグを有効にするEnable debugging for anSAEアプリケーションインスタンスの手順に従って、ステップ1とステップ2.
次のコマンドを実行して、SAEアプリケーションインスタンスの特定のポートをローカルポートにマップします。
ssh -v -L {ローカルデバッグポート }:{ SAEアプリケーションインスタンスのIPアドレス }:{ SAEアプリケーションインスタンスのポート} root @{Jump server IP address} -N
アクセス
127.0.0.1 {ローカルデバッグポート}
デバッグ用にオンプレミスのデバイスから
関連ドキュメント
JavaおよびPHPリモートデバッグの詳細については、次のトピックを参照してください。
Javaリモートデバッグポートのヘルスチェックを設定する場合は、デバッグ中にIntelliJ IDEAのブレークポイントをThreadに設定する必要があります。 そうでなければ、ヘルスチェックは失敗です。 詳細については、「ヘルスチェックの設定」をご参照ください。