Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

健康检查

总结 在云原生 Contrail 网络 (CN2) 版本 22.3 中,引入了一个新的运行状况检查自定义资源对象,用于将虚拟机接口 (VMI) 关联到容器创建和更新工作流。运行状况检查资源是命名空间范围的资源。

运行状况检查概述

运行状况检查功能由 Contrail 虚拟路由器代理提供。您可以将 ping 或 HTTP 运行状况检查关联到接口。如果运行状况检查失败,将根据运行状况检查对象中配置的计时器和间隔,将接口设置为管理性关闭,并撤回关联的路由。运行状况检查流量将继续以管理性关闭状态传输,以允许接口恢复。

创建健康检查对象

使用此过程创建运行状况检查对象。

  1. Contrail 网络下载页面的部署清单中,使用hc.yaml运行状况检查对象的 YML 定义的文件(如下所示)。同一文件夹还包括具有 YML 定义的 ,hc_pod.yaml用于通过容器定义将运行状况检查对象与 VMI 相关联。

    示例 hc.yaml 文件:

  2. 填写参数以定义运行状况检查。 表 1 列出并解释了参数。
    表1:健康检查可配置参数
    字段 说明
    Delay 重复运行状况检查的延迟(以秒为单位)。
    DelayUsecs 重复运行状况检查的时间(以微秒为单位)。
    Enabled 表示已启用运行状况检查。默认值为 False
    ExpectedCodes 当监视器协议为 HTTP 时,HTTP 操作的预期返回代码。必须在 200-299 范围内。
    HealthCheckType 指示运行状况检查类型: link-local, end-to-end, segment, vn-ip-list,end2end。默认值为 link-local

    在这两种link-localend-to-end模式下,都会对运行 VMI 的虚拟路由器上的容器执行运行状况检查。

    HttpMethod 当监视器协议为 HTTP 时,使用的 HTTP 方法类型为 GET。
    MaxRetries 在宣布实例运行状况下降之前要尝试的重试次数。
    MonitorType 要使用的协议类型:PING、BFD 或 TCP。
    Timeout 等待响应的秒数。
    TimeoutUsecs 等待响应的时间(以微秒为单位)。
    UrlPath 必须是有效的 URL。例如, http://172.16.0.1/<path>IP 地址可以是占位符,它将替换为 pod 链路本地 IP 地址或元数据 IP 地址。

    以下是运行状况检查资源的抽象 Golang 模式。

    Golang 模式的 YML 表示形式为:

  3. 通过容器注释引用值core.juniper.net/health-check将运行状况检查对象链接到 VMI 。默认行为是将运行状况检查与主接口关联。
  4. (可选)要将运行状况检查与多个接口(附加到不同的 NAD 或 VN)链接,可以在该部分中引用运行状况检查对象cni-args。下面是在批注中配置cni-args的示例。

    现有 VMI 对象将具有一个新字段来引用该 HealthCheck 对象。

    对于基于 PING 或 HTTP 监控的运行状况检查,最小间隔为 1second。如果您需要对关键应用进行亚秒级健康检查,可以选择基于 BFD 的监控类型。

健康检查流程

Contrail vRouter 代理负责提供运行状况检查服务。代理生成运行状况检查探测进程以监视同一计算节点上托管的服务的状态,并将状态更新到 vRouter 代理。

vRouter 代理会根据脚本提供的状态撤消或恢复导出的接口路由。代理还负责提供链路本地元数据 IP 地址,以允许脚本使用适当的 NAT 转换与来自底层网络的目标 IP 地址进行通信。在正在运行的系统中,此信息显示在 vRouter 代理侦测中,地址为: