4.10. 配置代理健康检查
您可以使用存活度和就绪度探测在正在运行的代理容器上配置定期健康检查。存活度探测通过 ping 代理的 HTTP 端口来检查代理是否在运行。就绪度探测(Readiness probe)通过打开与为代理配置的每个接受器端口的连接来检查代理是否可以接受网络流量。
使用基本的存活度和就绪度探测打开与 HTTP 的连接,并接受器端口来验证代理的健康状况限制是这些检查无法识别底层问题,例如代理文件系统的问题。您可以将代理的命令行实用程序 artemis 合并到存活度或就绪度探测配置中,以创建包括向代理发送消息的更全面的健康检查。
4.10.1. 配置存活度和就绪度探测 复制链接链接已复制到粘贴板!
以下示例演示了如何使用存活度和就绪度探测配置代理部署的主要自定义资源(CR)实例,以运行健康检查。
先决条件
- 您应该熟悉如何使用 CR 实例创建基本代理部署。请参阅 第 3.4.1 节 “部署基本代理实例”。
流程
创建 CR 实例。
使用 OpenShift 命令行界面:
以有权在项目中部署代理部署的 CR 的用户登录到 OpenShift。
oc login -u <user> -p <password> --server=<host:port>-
打开名为
broker_activemqartemis_cr.yaml的示例 CR 文件,该文件包含在您下载和提取的 Operator 安装存档的deploy/crs目录中。
使用 OpenShift Container Platform Web 控制台:
- 以有权在项目中部署 CR 的用户登录到控制台,以进行代理部署。
-
根据主代理 CRD 启动一个新的 CR 实例。在左侧窗格中,单击
。 - 单击 ActiveMQArtemis CRD。
- 点 实例 选项卡。
单击 Create ActiveMQArtemis。
在控制台中,会打开 YAML 编辑器,供您配置 CR 实例。
要配置存活度探测,在 CR 的
deploymentPlan部分中添加一个livenessProbe部分。例如:spec: deploymentPlan: livenessProbe: initialDelaySeconds: 5 periodSeconds: 5initialDelaySeconds-
探测在容器启动后运行前的延迟(以秒为单位)。默认值为
5。 periodSeconds探测运行的时间间隔(以秒为单位)。默认值为
5。注意如果您没有配置存活度探测,或者配置探测中缺少处理程序,AMQ Operator 会创建一个具有以下配置的默认 TCP 探测。默认 TCP 探测尝试打开指定端口上的代理容器的套接字。
spec: deploymentPlan: livenessProbe: tcpSocket: port: 8181 initialDelaySeconds: 30 timeoutSeconds: 5
要配置就绪度探测,在 CR 的
deploymentPlan部分中添加一个readinessProbe部分。例如:spec: deploymentPlan: readinessProbe: initialDelaySeconds: 5 periodSeconds: 5如果您没有配置就绪度探测,内置 脚本会 检查所有接收器是否可以接受连接。
如果要配置更全面的健康检查,请将
artemis 检查命令行工具添加到存活度或就绪度探测配置中。如果要配置健康检查以在
livenessProbe或readinessProbe部分中创建一个与代理的完整客户端连接,请添加exec部分。在exec部分中,添加command部分。在command部分中,添加artemis 检查节点命令语法。例如:spec: deploymentPlan: readinessProbe: exec: command: - bash - '-c' - /home/jboss/amq-broker/bin/artemis - check - node - '--silent' - '--acceptor' - <acceptor name> - '--user' - $AMQ_USER - '--password' - $AMQ_PASSWORD initialDelaySeconds: 30 timeoutSeconds: 5默认情况下,
artemis 检查节点命令使用名为artemis的 acceptor 的 URI。如果代理有一个名为artemis的接受器,您可以在该命令中排除--acceptor <acceptor name> 选项。注意$AMQ_USER和$AMQ_PASSWORD是 AMQ Operator 配置的环境变量。如果要配置生成和使用消息的健康检查,在
livenessProbe或readinessProbe部分中验证代理文件系统的健康状况,请添加exec部分。在exec部分中,添加command部分。在command部分中,添加artemis 检查队列命令语法。例如:spec: deploymentPlan: readinessProbe: exec: command: - bash - '-c' - /home/jboss/amq-broker/bin/artemis - check - queue - '--name' - livenessqueue - '--produce' - "1" - '--consume' - "1" - '--silent' - '--user' - $AMQ_USER - '--password' - $AMQ_PASSWORD initialDelaySeconds: 30 timeoutSeconds: 5注意您指定的队列名称必须在代理上配置,且
anycast为routingType。例如:apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisAddress metadata: name: livenessqueue namespace: activemq-artemis-operator spec: addressName: livenessqueue queueConfiguration: purgeOnNoConsumers: false maxConsumers: -1 durable: true enabled: true queueName: livenessqueue routingType: anycast
部署 CR 实例。
使用 OpenShift 命令行界面:
- 保存 CR 文件。
切换到您要在其中创建代理部署的项目。
$ oc project <project_name>创建 CR 实例。
$ oc create -f <path/to/custom_resource_instance>.yaml
使用 OpenShift Web 控制台:
- 完成配置 CR 后,点 Create。
其他资源
如需有关 OpenShift Container Platform 中存活度和就绪度探测的更多信息,请参阅 OpenShift Container Platform 文档中的使用 健康检查来监控应用程序健康状况。