4.15. 配置代理健康检查
您可以使用启动、存活度和就绪度探测在 AMQ Broker 上配置健康检查。
- 启动探测(startup probe)指示容器内的应用程序是否启动。
- 存活度探测决定容器是否仍然在运行。
- 就绪度探测(Readiness probe)决定容器是否准备好接受服务请求
如果启动探测或存活度探测检查 Pod 失败,则探测会重启 Pod。
AMQ Broker 包括默认的就绪度和存活度探测。默认存活度探测通过 ping 代理的 HTTP 端口来检查代理是否在运行。默认就绪度探测通过打开到为代理配置的每个 acceptor 端口的连接来检查代理是否可以接受网络流量。
使用默认存活度和就绪度探测的一个限制是它们无法识别底层问题,例如代理的文件系统出现问题。您可以创建自定义存活度和就绪度探测,这些探测使用代理的命令行实用程序 artemis
来运行更全面的健康检查。
AMQ Broker 不包括默认启动探测。您可以在 ActiveMQArtemis
自定义资源(CR)中配置启动探测。
4.15.1. 配置启动探测 复制链接链接已复制到粘贴板!
您可以配置启动探测来检查代理容器中的 AMQ Broker 应用程序是否已启动。
流程
编辑代理部署的 CR 实例。
使用 OpenShift 命令行界面:
- 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
编辑部署的 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 控制台:
- 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
-
在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
- 点代理部署的实例。
点 YAML 标签。
在控制台中,会打开 YAML 编辑器,允许您编辑 CR 实例。
在 CR 的
deploymentPlan
部分中,添加一个startupProbe
部分。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令
-
要在容器中运行的启动探测命令。在示例中,启动探测使用
artemis check node
命令来验证 AMQ Broker 是否已在容器中为代理 Pod 启动。 initialDelaySeconds
-
探测在容器启动后运行前的延迟(以秒为单位)。默认值为
0
。 periodSeconds
-
探测运行的时间间隔(以秒为单位)。默认值为
10
。 timeoutSeconds
-
启动 probe 命令等待代理回复的时间(以秒为单位)。如果未收到对 命令的响应,则命令将终止。默认值为
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 命令行界面:
- 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
编辑部署的 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 控制台:
- 以有权在代理部署的项目中部署 CR 的用户身份登录 OpenShift Container Platform。
-
在左侧窗格中,单击
。 - 单击 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
的接收器,您可以从命令中排除 the-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 文档中的使用 健康检查来监控应用程序健康状况。