在本文中,您將了解使用 Python、FLASK 和 psutil 為 HTTP 健全狀態探查建立自訂 API。 使用 HTTP GET 對後端執行個體執行健康情況檢查,並根據回應將其標記為良好或基礎映像。 如果執行個體的 CPU 使用量超過 75%,本文中的自訂探查會將其標記為狀況不良。 當與您自己的邏輯和健康情況檢查相結合時,HTTP 健全狀態探查可以用於多種目的,而不僅僅是 CPU 使用率。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶和 Azure 入口網站的存取。
- 現有標準 SKU Azure Load Balancer。 如需建立負載平衡器的詳細資訊,請參閱使用 Azure 入口網站建立公開負載平衡器。
- 在 Azure Load Balancer 的後端集區中執行 linux 的 Azure 虛擬機器,請參閱使用 Azure 入口網站建立虛擬機器。
- Linux 虛擬機器安裝了 python3、pip 和以下封裝:
- flask
- flask_restful
- psutil
- 透過 SSH 或 Bastion 遠端存取虛擬機器。
重要
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要將 Bastion 部署為教學課程或測試的一部份,建議您在使用完畢後刪除此資源。
在虛擬機器上設定 API
在此區段中,您將虛擬機器設定為執行 HTTP 健全狀態探查的自訂 API。
使用 SSH 或 Bastion 連線至虛擬機器。 本文使用 SSH 連線至虛擬機器。
建立新資料夾以儲存健康情況 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)。 以下命令在 Ubuntu 上安裝 python3 和所需封裝:
#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 開始執行後,您將看到兩個 IP 位址在連接埠 5000 上公開給 API。
- 第一個 IP 位址是僅對 VM 可用的本機 IP 位址。
- 第二個 IP 位址是虛擬機器的私人 IP 位址,Load Balancer 的健全狀態探查將測試此 IP 位址。
注意
API 需要在虛擬機器上執行,健全狀態探查才能運作。 當您關閉 SSH 工作階段時,API 將停止執行。 在建立健全狀態探查或在背景執行 API 時保持視窗開啟。
建立健全狀況探查
在此區段中,您將建立用於檢查執行自訂 API 的後端執行個體之健康情況的健全狀態探查。
瀏覽至 Azure 入口網站並選取要將健全狀態探查新增至的負載平衡器。
在 [設定] 下選取 [健全狀態探查]。
選取 + 新增。
在 [新增健全狀態探查] 頁面中,輸入或選取以下資訊:
設定 值 名稱 輸入「HTTP_Health」 通訊協定 選取 [HTTP] 通訊埠 輸入「5000」 路徑 輸入「/health_check/」 間隔 (秒) 輸入「5」 選取 [確定] 以建立健全狀態探查。
建立負載平衡器規則
在此區段中,您將建立使用 HTTP 健全狀態探查的負載平衡器規則。
在負載平衡器概觀頁面中,選取 [設定] 下的 [負載平衡規則]。
選取 + 新增。
在 [新增負載平衡規則] 頁面上,輸入以下資訊:
設定 值 名稱 輸入「custom_HTTP_rule」 前端 IP 位址 選取負載平衡器的前端 IP 位址。 後端集區 選取要使用的後端集區。 通訊協定 選取 [TCP] 通訊埠 輸入「5000」 後端連接埠 輸入「5000」 健康狀態探查 選取 HTTP_Health (HTTP:5000/health_check/) 工作階段持續性 選取 [無] 閒置逾時 (分鐘) 輸入「5」
選取 [儲存] 以建立負載平衡規則。
驗證健全狀態探查
在此區段中,您將透過檢查正在執行的 API 和負載平衡器計量來驗證健全狀態探查是否依預期運作。
瀏覽回執行 API 的虛擬機器之 SSH 工作階段。
在執行 API 的主控台視窗中,您應該每 5 秒看到 GET 要求,檢查虛擬機器的健康情況,如果虛擬機器良好,則傳回 200 狀態程式碼。
輸入「ctrl+c」以停止 API。
關閉與虛擬機器的 SSH 工作階段。
瀏覽回負載平衡器概觀頁面。
在 [監視] 下,選取 [計量]。
選取 [+ 新增計量],然後輸入/選取以下資訊:
設定 值 範圍 選取要監視的負載平衡器。 計量命名空間 選取 [負載平衡器標準] 計量 選取 [健全狀態探查狀態] 彙總 選取 [最大] 選取 [核取記號] 以新增計量。
清除資源
若不再需要,可刪除資源群組、負載平衡器和所有相關資源。