为 Azure 负载均衡器创建自定义 HTTP/HTTPS 运行状况探测

本文介绍如何使用 Python、FLASK 和 psutil 创建自定义 API 进行 HTTP 运行状况探测。 运行状况检查使用 HTTP GET 在后端实例上执行,并根据响应标记为“运行正常”或“运行不正常”。 如果实例的 CPU 使用率超过 75%,则本文中的自定义探测会将其标记为“运行不正常”。 当与你自己的逻辑和运行状况检查结合使用时,HTTP 运行状况探测可用于多种用途,而不仅仅是探测 CPU 使用率。

先决条件

重要

小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

在虚拟机上配置 API

在本部分中,将虚拟机配置为运行自定义 API 以进行 HTTP 运行状况探测。

  1. 使用 SSH 或 Azure Bastion 连接到 VM。 本文使用 SSH 连接到 VM。

  2. 创建一个新文件夹来存储运行状况 API 的代码,并进入该新文件夹:

    mkdir health_API && cd health_API
    
  3. 创建一个新的 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") 
    
  4. 将代码复制到文件中后,请根据需要安装 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
    
  5. 使用以下命令运行 API:

    python3 health.py
    
  6. API 开始运行后,你会看到端口 5000 上向 API 公开的两个 IP 地址。

    • 第一个 IP 地址是本地 IP 地址,仅对虚拟机开放。
    • 第二个 IP 地址是虚拟机的专用 IP 地址,负载均衡器的运行状况探测会测试此 IP 地址。

    运行运行状况探测的 API 得到的输出的屏幕截图。

备注

需要在 VM 上运行 API,运行状况探测才能正常工作。 关闭 SSH 会话时,API 将停止运行。 创建运行状况探测或在后台运行 API 时,使窗口保持打开状态。

创建运行状况探测

在本部分中,将创建运行状况探测,用于检查运行自定义 API 的后端实例的运行状况。

  1. 导航到 Azure 门户并选择要添加运行状况探测的负载均衡器。

  2. 选择“设置”下的“运行状况探测”。

  3. 选择“+ 添加”。

  4. 在“添加运行状况探测”中,输入或选择以下信息:

    设置
    名称 输入 HTTP_Health
    协议 选择“HTTP
    端口 输入 5000
    路径 输入 /health_check/
    间隔(秒) 输入 5
  5. 选择“确定”以创建运行状况探测。

创建负载均衡器规则

在本部分,将创建使用 HTTP 运行状况探测的负载均衡器规则。

  1. 在负载均衡器概述页,选择“设置”下的“负载均衡规则”。

  2. 选择“+ 添加”。

  3. 在“添加负载均衡规则”页面,输入以下信息:

    设置
    名称 输入 custom_HTTP_rule
    “前端 IP 地址” 选择负载均衡器的前端 IP 地址。
    后端池 选择要使用的后端池。
    协议 选择“TCP”
    端口 输入 5000
    后端端口 输入 5000
    运行状况探测 选择 HTTP_Health (HTTP:5000/health_check/)
    会话暂留 选择“无”
    空闲超时(分钟) 输入 5

    添加负载均衡规则以及自定义运行状况探测设置的屏幕截图。

  4. 选择“保存”以创建负载均衡规则。

验证运行状况探测

在本部分,通过检查正在运行的 API 和负载均衡器指标来验证运行状况探测是否按预期工作。

  1. 导航到运行 API 的 VM 的 SSH 会话。

  2. 在运行 API 的控制台窗口中,应该会每隔 5 秒看到一个 GET 请求,检查 VM 的运行状况,如果 VM 运行正常,则使用 200 状态代码进行响应。

    GET 响应为 200 的 API 输出的屏幕截图。

  3. 输入 ctrl+c 以停止 API。

  4. 关闭与 VM 的 SSH 会话。

  5. 导航回负载均衡器概述页。

  6. 在“监视”下选择“指标”。

  7. 选择“+ 添加指标”,然后输入/选择以下信息:

    设置
    范围 选择要监视的负载均衡器。
    指标命名空间 选择“负载均衡器标准
    指标 选择“运行状况探测状态
    聚合 选择“最大值
  8. 选择“复选标记”以添加指标。

    指标图表的屏幕截图,其中包含负载均衡器的运行状况探测状态。

清理资源

若不再需要资源组、负载均衡器以及所有相关资源,请将其删除。

后续步骤