Serverless App Engine (SAE) を使用してアプリケーションを管理する場合、コンテナーは一時的な環境として使用され、アプリケーションが実行され、O&Mは必要ありません。 SAEでは、SAEコンソールに軽量のWebシェル機能が組み込まれており、コンテナーの表示とデバッグが可能です。 これにより、オンラインの問題を効率的にトラブルシューティングできます。 SAEアプリケーションコンテナのベースイメージはアプリケーションランタイムで使用でき、不安定なアプリケーションコンテナは一時的な使用のみです。 基本イメージに対してSSHを有効にする必要はありませんが、コードに実行可能な /bin/bash
コマンドを含めるだけで済みます。 トラブルシューティングを実行するために必要なすべてのO&Mツールを準備することを推奨します。
制限事項
webshell機能はWindowsイメージをサポートしていません。
ネットワーク環境
SAEアプリケーションは、名前空間機能をサポートする自己管理型仮想プライベートクラウド (VPC) にデプロイされます。 ミドルウェアのサービス呼び出しを論理的に分離できます。 名前空間はVPC内の1つのvSwitchにのみ関連付けることができますが、vSwitchは複数の名前空間に関連付けることができます。 VPC内のリソースのIPアドレスはVPC内でのみアクセスでき、アプリケーションはVPC間で相互にやり取りすることはできません。 名前空間は、ミドルウェアサービス呼び出しを論理的に分離するために使用されます。 異なる名前空間のアプリケーションは、サービス検出や構成配信などのミドルウェアサービス呼び出しで分離されます。
VPCの動作メカニズムと製品導入については、「サービスアーキテクチャ」をご参照ください。
VPCとSAEの特性により、SAEアプリケーションコンテナーはVPC外のサービス (OSSやContainer RegistryなどのAlibaba Cloudサービスを除く) に接続できないことがわかります。 追加の設定を構成しない場合、SAEアプリケーションコンテナは分離されたネットワークで実行され、コンテナに直接アクセスすることはできません。
次のコードは、アプリケーションコンテナーへのアクセス失敗の例を示しています。
アプリケーションインスタンスがインターネット上のサービスにアクセスする場合は、NATゲートウェイを購入し、VPCのvSwitchの送信元ネットワークアドレス変換 (SNAT) を設定する必要があります。 詳細については、「SAEアプリケーションのNATゲートウェイを構成してインターネットアクセスを有効にする」をご参照ください。
SNATでは、インスタンスにパブリックIPアドレスが割り当てられていない場合、VPC内のアプリケーションインスタンスがインターネットにアクセスできるようにします。 NATゲートウェイに関連付けられているelastic IPアドレス (EIP) を使用するように、インスタンスのSNATエントリを設定できます。 このようにして、インスタンスはインターネット経由でサービスを呼び出し、インターネットリソースを取得できます。 詳細については、「インターネットにアクセスできる製品」をご参照ください。
イメージを作成する
SAEはContainer Registryと連携して、イメージを構築および管理できます。 SAEは、centos:7
ベースイメージ、プログラミング言語、コーデック、タイムゾーン、およびOpenJDKなどの開発環境を提供します。
コンテナはアプリケーションの実行を容易にするように設計されており、SAEはデフォルトで限られた数のツールのみを統合します。 SAEが過剰な数のツールを統合すると、ツールのリソース消費がアプリケーションのステータスに影響を与える可能性があります。 SAEに統合されていないツールが必要な場合は、イメージを作成するか、OSSからイメージを取得する必要があります。 詳細については、「Javaアプリケーションをデプロイするイメージの作成」をご参照ください。
Webシェルウィンドウをフルスクリーンで表示する
Webシェルウィンドウをフルスクリーンで表示するには、次の手順を実行します。
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
On the基本情報ページをクリックし、インスタンスのデプロイ情報タブをクリックします。
では、デフォルトグループのセクションインスタンスのデプロイ情報タブで、管理するインスタンスを見つけて、ウェブシェルで、アクション列を作成します。
(オプション) Webシェルウィンドウが表示されたら、右上隅にあるアイコンで、ウィンドウをフルスクリーンで表示します。
ビジネス要件に基づいてwebshellウィンドウでコマンドを実行し、コンテナを表示およびデバッグします。
詳細については、「アプリケーションインスタンスのメタデータの取得」および「アプリケーションのヘルスステータスの確認」をご参照ください。
アプリケーションインスタンスのメタデータの取得
アプリケーションをSAEにデプロイした後、セキュリティグループID、VPC ID、vSwitch IDなど、アプリケーションインスタンスのメタデータを取得できます。
メタデータの場所 | 説明 |
/etc/podinfo/sgId | セキュリティグループIDが存在するパス。 |
/etc/podinfo/vpcId | VPC IDが存在するパス。 |
/etc/podinfo/vswitchId | vSwitch IDが存在するパス。 説明 複数のvSwitchが存在する場合、vSwitch IDはコンマ (,) で区切ります。 |
SAEコンソールにログインし、webshellウィンドウで次のコマンドを実行して、セキュリティグループID、VPC ID、およびvSwitch IDを確認できます。
次のコマンドを実行して、
podinfo
ディレクトリを開きます。cd /etc/podinfo/
説明コマンドの実行時に
can't cd to /etc/podinfo/
エラーが報告された場合は、インスタンスを再起動するか、アプリケーションを再デプロイできます。次のコマンドを実行して、インスタンスのすべてのメタデータファイルを表示します。
ls
期待される出力:
sgId vpcId vswitchId
ビジネス要件に基づいて次のコマンドを実行し、アプリケーションインスタンスのメタデータを確認します。
次のコマンドを実行して、セキュリティグループのIDを取得します。
cat sgId
期待される出力:
sg-2ze4ddm2rqgenvcx **** sh-4.2#
次のコマンドを実行して、VPC IDを取得します。
cat vpcId
期待される出力:
vpc-2zeqku2oevokwm66b **** sh-4.2#
次のコマンドを実行して、vSwitch IDを取得します。
cat vswitchId
期待される出力:
vsw-2zewmy4ynhljytzhu **** sh-4.2#
O&Mコンポーネントをインストールするコマンドをコピーする
SAEコンソールにログインし、次の手順を実行して、ビジネス要件に基づいてWebシェルウィンドウにコマンドをコピーできます。 このコマンドは、O&Mコンポーネントのインストールに使用されます。
webshellウィンドウにインストールされたコマンドは、コンテナーの再構築後に無効になります。 一般的なコマンドの場合は、イメージの作成時にインストールすることをお勧めします。
をクリックし、ウェブシェルウィンドウの右上隅にあるアイコン。
[コマンドのコピー] ダイアログボックスで、必要なコンポーネントを選択し、表示されたコマンドをプレビューし、[コピー] をクリックします。 インストールコンポーネントの選択パラメータには、次のオプションがあります。
opensshのインストール: OpenSSHはSSHプロトコルの無料でオープンソースの実装です。 OpenSSHは、サーバー側のバックエンドプログラムとクライアントツールを提供し、リモートコントロールとファイル転送で送信されるデータを暗号化します。 OpenSSHをインストールし、リモートデバッグを使用して、SSHプロトコルを介したリモートログイン、sftpとscpを使用したファイルのアップロードとダウンロードの機能を実装できます。 これにより、SAEアプリケーションインスタンスをデバッグして、予期しない要件を満たすことができます。
Install net-tools (netstat): netstatコマンドは、ネットワークステータスを監視するために使用されます。 このコマンドを実行すると、ルートテーブル、アクティブなネットワーク接続、およびネットワークインターフェイスのステータスを表示できます。
Install iproute (ss): socket statistics (ss) コマンドを使用して、netstatコマンドを実行して取得した情報と同様のソケット統計を表示します。 netstatコマンドを実行する場合と比較して、ssコマンドを実行すると、TCP接続に関する詳細情報をすばやく取得できます。
コピーしたコマンドをwebshellウィンドウに貼り付け、Enterキーを押してコマンドを実行します。
アプリケーションのヘルスステータスの確認
アプリケーションのルーチンチェックの実行
定期的なチェックを実行するか、ログをアップロードおよびダウンロードして、SAEアプリケーションのヘルスステータスを確認できます。 複数のルーチンチェックが利用可能です。 たとえば、Javaアプリケーションのプロセス、スレッド、およびJava仮想マシン (JVM) を確認できます。 ここでは, Javaアプリケーションのプロセスを确认する方法と, Javaアプリケーションのオンライン解析を行う方法について说明します。
次のコマンドを実行して、Javaアプリケーションに使用可能なプロセスがあるかどうかを確認します。
ps -ef | grep java
説明コンテナでは、メインプロセスを使用してアプリケーションを起動します。 アプリケーションが停止されると、コンテナは終了する。 SAEはサービスの中断を防ぐためにコンテナを自動的に再起動します。
利用可能なプロセスがない場合は、
dmesg | grep -i kill
コマンドを実行して、メモリ不足 (OOM) ログを確認します。OOMログが存在する場合、アプリケーションプロセスは停止されます。 原因を特定するには、作業ディレクトリ内の
hs_err_pid{PID}.log
という名前のログファイルを確認する必要があります。
Alibaba Cloudが提供するオープンソースソフトウェアArthasを使用して、Javaアプリケーションのオンライン分析を実行することもできます。 Arthasをテストイメージに統合して、ルーチンチェックを実行することを推奨します。 Arthasは、Javaクラスの読み込みステータスをリアルタイムで表示できます。 これにより、入力および出力パラメータと環境変数を表示できます。
アプリケーションをインターネットに接続します。
詳細については、「SAEアプリケーションのNATゲートウェイを構成してインターネットアクセスを有効にする」をご参照ください。
次のコマンドを実行してArthasをダウンロードします。
sudo wget https:// alibaba.github.io/arthas/arthas-boot.jar
次のコマンドを実行してArthasを起動します。
sudo java -jar arthas-boot.jar
ログをアップロードしてダウンロードし、アプリケーションのヘルスステータスを確認
定期的なチェックで必要な情報を提供できない場合は、コンテナから収集されたログをクラウドにアップロードし、アプリケーション分析のためにログをオンプレミスのマシンにダウンロードできます。
ログファイルのサイズが10 MB以下の場合は、SAEの組み込みWebシェル機能を使用できます。 詳細については、「webshell機能を使用したファイルのアップロードとダウンロード」をご参照ください。
ログファイルのサイズが10 MBを超える場合は、ログファイルをOSSにアップロードできます。 OSSサービスは、Alibaba Cloudのすべてのネットワーク環境と互換性があります。 OSSを使用してログをアップロードおよびダウンロードするには、次の手順を実行します。
OSSコマンドラインツールossutilをコンテナーにインストールします。 詳細については、「ossutilのインストール」をご参照ください。
この例では、64ビットCentOSのユーザーがログをダウンロードしたいと考えています。 アプリケーションがインターネットに接続されていない場合、rootユーザーはログファイルをオンプレミスマシンにダウンロードし、ダウンロードしたファイルをOSSにアップロードしてから、OSSからVPC内でアクセスできる内部アドレスを取得してファイルをダウンロードする必要があります。
次のコマンドを実行してossutilをダウンロードします。
sudo wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64
次のコマンドを実行して、ossutilインストールパッケージの実行権限を変更します。
sudo chmod 755 ossutil64
ossutilを設定し、アプリケーションが存在するリージョンのVPCの内部エンドポイントを指定します。 アップロードされたファイルの受信、既存のバケットの表示、OSSサービスが利用可能かどうかの確認に使用するアカウントのAccessKeyペアを指定します。
説明Alibaba CloudアカウントでOSSサービスが有効化されていることを確認します。 アカウントは、SAEアプリケーションを管理するために使用されるアカウントでなくてもよい。
バケットが作成されていることを確認します。 詳細については、「バケットの作成」をご参照ください。
次のコマンドを実行して、OSSアクセス情報を保存する設定ファイルを作成します。
画面の指示に従って、AccessKeyペアとエンドポイント情報を指定できます。 Security Token Service (STS) トークンを指定する必要はありません。
./ossutil64設定
次のコマンドを実行して、すべてのバケットを一覧表示します。
アカウントが使用できるかどうかを確認してください。 エラーが報告された場合、設定は無効です。
./ossutil64 ls
サンプル出力:
CreationTimeリージョンStorageClass BucketName 2021-12-08 18:53:46 + 0800 CST oss-cn-hangzhou Standard oss:// test-bucket
次のコマンドを実行して、という名前のシミュレートされたログファイルを作成します。sae-app.log.
echo "Hello" > sae-app.log
次のコマンドを実行して、ログファイルを指定されたバケットにアップロードします。
./ossutil64 cp sae-app.log {bucket-address}
サンプルコード:
./ossutil64 cp sae-app.log oss:// test-bucket
次のいずれかの方法で結果を確認します。
方法1: 次のコマンドを実行して、アップロードされたログファイルを表示します。
./ossutil64 ls oss:// test-bucket
サンプル出力:
LastModifiedTimeサイズ (B) StorageClass ETAG ObjectName 2021-12-08 19:26:18 + 0800 CST 6 Standard 09F7E02F1290BE211DA707A266F1 **** oss:// cri-55md3gmii09m ****-チャート /sae-app.log オブジェクト番号: 1 0.047758経過
方法2: OSSコンソールまたはツールを使用してログファイルを検索します。 次に、オンプレミスマシンにファイルをダウンロードし、アプリケーションのステータスを分析するツールを選択します。