4.15. 配置代理健康检查
您可以使用启动、存活度和就绪度探测在 AMQ Broker 上配置健康检查。
- 启动探测指示容器内的应用程序是否启动。
- 存活度探测决定容器是否仍在运行。
- 就绪度探测(Readiness probe)决定容器是否准备好接受服务请求
如果启动探测或存活度探测检查失败,探测会重启 Pod。
AMQ Broker 包括默认的就绪度和存活度探测。默认存活度探测通过 ping 代理的 HTTP 端口来检查代理是否在运行。默认就绪度探测通过打开到为代理配置的每个接受端口的连接来检查代理是否可以接受网络流量。
使用默认存活度和就绪度探测的限制是它们无法识别底层问题,例如,代理的文件系统出现问题。您可以创建自定义存活度和就绪度探测,以使用代理的命令行工具 artemis
运行更全面的健康检查。
AMQ Broker 不包括默认的启动探测。您可以在 ActiveMQArtemis
自定义资源(CR)中配置启动探测。
4.15.1. 配置启动探测 复制链接链接已复制到粘贴板!
您可以配置启动探测来检查代理容器中的 AMQ Broker 应用程序是否已启动。
流程
编辑代理部署的 CR 实例。
使用 OpenShift 命令行界面:
- 以具有特权的用户身份登录 OpenShift Container Platform,以便在代理部署的项目中部署 CR。
编辑部署的 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录 OpenShift Container Platform,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 点代理部署的实例。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,供您编辑 CR 实例。
在 CR 的
deploymentPlan
部分中,添加一个startupProbe
部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令
-
在容器内运行的启动探测命令。在示例中,启动探测使用
artemis check node
命令来验证是否在容器中为代理 Pod 启动 AMQ Broker。 initialDelaySeconds
-
探测在容器启动后运行前的延迟(以秒为单位)。默认值为
0
。 periodSeconds
-
探测运行的时间间隔(以秒为单位)。默认值为
10
。 timeoutSeconds
-
启动探测命令等待代理回复的时间(以秒为单位)。如果没有收到对命令的响应,命令将被终止。默认值为
1
。 failureThreshold
连续失败(包括探测被认为已失败)的启动探测的最小失败。当探测被视为失败时,它会重启 Pod。默认值为
3
。根据集群的资源和代理日志的大小,您可能需要增加故障阈值,以允许代理有足够的时间启动并传递探测检查。否则,代理会输入一个循环条件,其中会重复达到失败阈值,代理每次由启动探测重启。例如,如果您将
failureThreshold
设置为30
,且探测的默认间隔为 10 秒,则代理有 300 秒才能启动并传递探测检查。
- 保存 CR。
其他资源
如需有关 OpenShift Container Platform 中存活度和就绪度探测的更多信息,请参阅 OpenShift Container Platform 文档中的使用 健康检查来监控应用程序健康状况。
4.15.2. 配置存活度和就绪度探测 复制链接链接已复制到粘贴板!
以下示例演示了如何为代理部署配置主自定义资源(CR)实例,以使用存活度和就绪度探测运行健康检查。
先决条件
- 您应该熟悉如何使用 CR 实例创建基本代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
流程
编辑代理部署的 CR 实例。
使用 OpenShift 命令行界面:
- 以具有特权的用户身份登录 OpenShift Container Platform,以便在代理部署的项目中部署 CR。
编辑部署的 CR。
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
oc edit ActiveMQArtemis <CR instance name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 OpenShift Container Platform Web 控制台:
- 以具有特权的用户身份登录 OpenShift Container Platform,以便在代理部署的项目中部署 CR。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 点代理部署的实例。
- 点 YAML 标签。
要配置存活度探测,请在 CR 的
deploymentPlan
部分中添加一个livenessProbe
部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow initialDelaySeconds
探测在容器启动后运行前的延迟(以秒为单位)。默认值为
5
。注意如果部署也配置了启动探测,则可以将存活度和就绪度探测的延迟设置为 0。这两个探测仅在启动探测通过后运行。如果启动探测已经通过,它会确认代理已成功启动,因此不需要延迟运行存活度和就绪度探测。
periodSeconds
-
探测运行的时间间隔(以秒为单位)。默认值为
5
。 failureThreshold
连续最小失败,包括表示探测失败的存活度探测的超时。当探测失败时,它会重启 Pod。默认值为 3。
如果您的部署没有配置启动探测,它会验证代理应用程序是否在存活度探测运行前启动,您可能需要增加故障阈值,以允许代理有足够的时间启动并传递存活度探测检查。否则,代理可能会输入一个循环条件,其中不再达到失败阈值,代理 Pod 每次由存活度探测重启。
代理启动和传递存活度探测检查所需的时间取决于集群的资源和代理日志的大小。例如,如果您将
failureThreshold
设置为 30,且探测在默认间隔 5 秒运行,代理需要 150 秒才能启动并传递存活度探测检查。注意如果您没有配置存活度探测,或者没有配置的探测,AMQ Broker Operator 会创建一个具有以下配置的默认 TCP 探测。默认 TCP 探测尝试为指定端口上的代理容器打开一个套接字。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要配置就绪度探测,请在 CR 的
deploymentPlan
部分中添加一个readinessProbe
部分。例如:spec: deploymentPlan: readinessProbe: initialDelaySeconds: 5 periodSeconds: 5
spec: deploymentPlan: readinessProbe: initialDelaySeconds: 5 periodSeconds: 5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您没有配置就绪度探测,则内置 脚本将检查 所有接收器是否可以接受连接。
如果要配置更全面的健康检查,请将
artemis check
命令行工具添加到存活度或就绪度探测配置中。如果要配置健康检查,以创建与代理的完整客户端连接,在
livenessProbe
或readinessProbe
部分中,添加一个exec
部分。在exec
部分中,添加一个command
部分。在command
部分中,添加artemis check node
命令语法。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,
artemis check node
命令使用名为artemis
的 acceptor 的 URI。如果代理有一个名为artemis
,您可以在命令中排除--acceptor <acceptor name&
gt; 选项。注意$AMQ_USER
和$AMQ_PASSWORD
是 AMQ Operator 配置的环境变量。如果要配置生成和消耗消息的健康检查,它也在
livenessProbe
或readinessProbe
部分中验证代理文件系统的健康状态,请添加exec
部分。在exec
部分中,添加一个command
部分。在command
部分中,添加artemis check queue
命令语法。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您指定的队列名称必须在代理上配置,且
anycast
为routingType
。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 保存 CR。
其他资源
如需有关 OpenShift Container Platform 中存活度和就绪度探测的更多信息,请参阅 OpenShift Container Platform 文档中的使用 健康检查来监控应用程序健康状况。