本文介绍如何使用 Python、FLASK 和 psutil 创建自定义 API 进行 HTTP 运行状况探测。 运行状况检查使用 HTTP GET 在后端实例上执行,并根据响应标记为“运行正常”或“运行不正常”。 如果实例的 CPU 使用率超过 75%,则本文中的自定义探测会将其标记为“运行不正常”。 当与你自己的逻辑和运行状况检查结合使用时,HTTP 运行状况探测可用于多种用途,而不仅仅是探测 CPU 使用率。
- 具有活动订阅的 Azure 帐户。 创建试用版订阅并访问 Azure 门户。
- 一个现有的标准 SKU Azure 负载均衡器。 有关创建负载均衡器的详细信息,请参阅使用 Azure 门户创建公共负载均衡器。
- 在 Azure 负载均衡器的后端池中运行 linux 的 Azure 虚拟机,请参阅使用 Azure 门户创建虚拟机。
- Linux 虚拟机已安装 python3、pip 和以下包:
- flask
- flask_restful
- psutil
- 通过 SSH 或 Azure Bastion 远程访问虚拟机。
重要
小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
在本部分中,将虚拟机配置为运行自定义 API 以进行 HTTP 运行状况探测。
使用 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)。 以下命令将在 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.py
API 开始运行后,你会看到端口 5000 上向 API 公开的两个 IP 地址。
- 第一个 IP 地址是本地 IP 地址,仅对虚拟机开放。
- 第二个 IP 地址是虚拟机的专用 IP 地址,负载均衡器的运行状况探测会测试此 IP 地址。
备注
需要在 VM 上运行 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 的 VM 的 SSH 会话。
在运行 API 的控制台窗口中,应该会每隔 5 秒看到一个 GET 请求,检查 VM 的运行状况,如果 VM 运行正常,则使用 200 状态代码进行响应。
输入 ctrl+c 以停止 API。
关闭与 VM 的 SSH 会话。
导航回负载均衡器概述页。
在“监视”下选择“指标”。
选择“+ 添加指标”,然后输入/选择以下信息:
设置 值 范围 选择要监视的负载均衡器。 指标命名空间 选择“负载均衡器标准” 指标 选择“运行状况探测状态” 聚合 选择“最大值” 选择“复选标记”以添加指标。
若不再需要资源组、负载均衡器以及所有相关资源,请将其删除。