この記事では、Python、FLASK、psutil を使用して HTTP 正常性プローブ用のカスタム API を作成する方法について説明します。 正常性チェックは、HTTP GET を使用してバックエンド インスタンスで実行され、応答に基づいて正常または異常としてマークされます。 この記事のカスタム プローブでは、CPU 使用率が 75% を超える場合にインスタンスが異常としてマークされます。 HTTP 正常性プローブは、独自のロジックおよび正常性チェックと組み合わせると、CPU 使用率だけでなく多くの目的で使用できます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成して、Azure portal にアクセスします。
- 既存の Standard SKU Azure Load Balancer。 ロード バランサーの作成の詳細については、 Azure portal を使用したパブリック ロード バランサーの作成 に関する記事を参照してください。
- Azure Load Balancer のバックエンド プールで Linux を実行している Azure 仮想マシンについては、Azure portal を使用した仮想マシンの作成に関する記事を参照してください。
- Linux 仮想マシンには、python3、pip、次のパッケージがインストールされています。
- flask
- flask_restful
- psutil
- SSH または Azure Bastion を介した仮想マシンへのリモート アクセス。
重要
時間単位の料金は、送信データの使用量に関係なく、Bastion がデプロイされた時点から発生します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環として Bastion をデプロイしている場合は、使用終了後にこのリソースを削除することをお勧めします。
仮想マシンで API を構成する
このセクションでは、HTTP 正常性プローブ用のカスタム API を実行するように仮想マシンを構成します。
SSH または Azure Bastion を使用して VM に接続します。 この記事では、SSH を使用して VM に接続します。
正常性 API のコードを格納する新しいフォルダーを作成し、その新しいフォルダーを入力します。
mkdir health_API && cd health_API新しい python ファイルを作成し、次のコードをファイルに貼り付けます。
touch health.py && vim health.py# Import libraries from flask import Flask from flask_restful import Resource, Api import psutil # Define app and API app = Flask(__name__) api = Api(app) # Define API GET method class check_CPU_VM(Resource): def get(self): # If VM CPU utilization is over 75%, throw an error if psutil.cpu_percent() >= 75.0: return '',408 # Else keep the VM as healthy else: return '',200 # Add the GET method to the API at the path 'health_check' api.add_resource(check_CPU_VM, '/health_check/') # Expose the API on all available IP address on the VM if __name__ == "__main__": app.run(debug=True, host ="0.0.0.0")コードをファイルにコピーしたら、必要に応じて python3 と必要なパッケージ (flask、flask_restful、psutil) をインストールします。 次のコマンドでは、python3 と必要なパッケージを Ubuntu にインストールします。
#Install Python sudo apt-get update sudo apt-get install python3 sudo apt-get install python3-pip pip3 install flask flask_restful psutil次のコマンドを使用して API を実行します。
python3 health.pyAPI の実行が開始されると、ポート 5000 で API に公開されている 2 つの IP アドレスが表示されます。
- 最初の IP アドレスは、VM でのみ使用できるローカル IP アドレスです。
- 2 番目の IP アドレスは VM のプライベート IP アドレスです。Load Balancer の正常性プローブではこの IP アドレスをテストします。
注意
正常性プローブを機能させるには、VM で API が実行されている必要があります。 SSH セッションを閉じると、API の実行が停止します。 正常性プローブの作成時にウィンドウを開いたままにするか、バックグラウンドで API を実行します。
正常性プローブの作成
このセクションでは、カスタム API を実行しているバックエンド インスタンスの正常性をチェックするために使用する正常性プローブを作成します。
Azure portal に移動し、正常性プローブを追加するロード バランサーを選択します。
[設定] で、[正常性プローブ] を選択します。
[+ 追加] を選択します。
[正常性プローブの追加] ページで、次の情報を入力または選択します。
設定 Value 名前 「HTTP_Health」と入力します プロトコル [HTTP] を選択します ポート 「5000」と入力します パス 「/health_check/」と入力します 間隔 (秒) 「5」と入力します [OK] を選択して、正常性プローブを作成します。
ロード バランサー規則を作成する
このセクションでは、HTTP 正常性プローブを使用するロード バランサー規則を作成します。
ロード バランサーの概要ページで、[設定] の [負荷分散規則] を選択します。
[+ 追加] を選択します。
[負荷分散規則の追加] ページで次の情報を入力します。
設定 Value 名前 「custom_HTTP_rule」と入力します フロントエンド IP アドレス ロード バランサーのフロントエンド IP アドレスを選択します。 バックエンド プール 使用するバックエンド プールを選択します。 プロトコル [TCP] を選択します ポート 「5000」と入力します バックエンド ポート 「5000」と入力します 正常性プローブ [HTTP_Health (HTTP:5000/health_check/)] を選択します セッション永続化 [なし] を選択します アイドル タイムアウト (分) 「5」と入力します
[保存] を選択して、負荷分散規則を作成します。
正常性プローブを確認する
このセクションでは、実行中の API とロード バランサーのメトリックを確認して、正常性プローブが予期したとおりに動作していることを確認します。
API を実行している VM への SSH セッションに戻ります。
API を実行しているコンソール ウィンドウに、VM の正常性をチェックし、VM が正常な場合は 200 状態コードで応答する GET 要求が 5 秒ごとに表示されます。
API を停止するには、Ctrl + C キーを押します。
VM への SSH セッションを閉じます。
ロード バランサーの概要ページに戻ります。
[監視] で [メトリック] を選択します。
[+ メトリックの追加] を選択し、次の情報を入力または選択します。
設定 Value スコープ 監視するロード バランサーを選択します。 メトリック名前空間 [Load Balancer Standard] を選択します メトリック [正常性プローブの状態] を選択します 集計 [最大] を選択します チェックマークを選択してメトリックを追加します。
リソースをクリーンアップする
リソース グループ、ロード バランサー、および関連するすべてのリソースは、不要になったら削除します。