14.3. 配置检查和通知脚本
keepalived 通过定期运行可选用户提供的检查脚本来监控应用程序的健康状况。例如,该脚本可以通过发出请求并验证响应来测试 Web 服务器。作为集群管理员,您可以提供一个可选的 notify 脚本,该脚本会在状态发生变化时调用。
检查和通知在 IP 故障转移容器集中运行的脚本,并使用容器集文件系统,而不是主机文件系统。但是,IP 故障转移 pod 使主机文件系统在 /hosts
挂载路径下可用。在配置检查或通知脚本时,您必须提供脚本的完整路径。提供脚本的建议方法是使用 ConfigMap
对象。
检查和通知脚本的完整路径名称添加到 Keepalived 配置文件 _/etc/keepalived/keepalived.conf
中,该文件会在 Keepalived 每次启动时加载。可以使用 ConfigMap
对象将脚本添加到 pod,如以下方法所述。
检查脚本
不提供检查脚本时,将运行一个简单的默认脚本来测试 TCP 连接。当监控端口为 0
时,禁止此默认测试。
每个 IP 故障转移 pod 管理一个 Keepalived 守护进程,在运行 pod 的节点上管理一个或多个虚拟 IP (VIP)地址。Keepalived 守护进程为该节点保留每个 VIP 的状态。特定节点上的特定 VIP 可能处于 master
、backup
或 fault
状态。
如果检查脚本返回非零,节点会进入 backup
状态,并且它拥有的任何 VIP 被重新分配。
notify 脚本
keepalived 将以下三个参数传递给 notify 脚本:
-
$1
-group
或instance
-
$2
-group
或instance
的名称 -
$3
- 新状态:master
、backup
或fault
先决条件
-
已安装 OpenShift CLI(
oc
)。 -
使用具有
cluster-admin
权限的用户登陆到集群。
流程
创建所需脚本,并创建
ConfigMap
对象来容纳它。脚本没有输入参数,并且必须返回0
(OK
)和1
(fail
)。检查脚本,
mycheckscript.sh
:#!/bin/bash # Whatever tests are needed # E.g., send request and verify response exit 0
创建
ConfigMap
对象:$ oc create configmap mycustomcheck --from-file=mycheckscript.sh
将脚本添加到容器集。挂载的
ConfigMap
对象的defaultMode
必须能够使用oc
命令或编辑部署配置来运行。值通常为0755
、493
(十进制):$ oc set env deploy/ipfailover-keepalived \ OPENSHIFT_HA_CHECK_SCRIPT=/etc/keepalive/mycheckscript.sh
$ oc set volume deploy/ipfailover-keepalived --add --overwrite \ --name=config-volume \ --mount-path=/etc/keepalive \ --source='{"configMap": { "name": "mycustomcheck", "defaultMode": 493}}'
注意oc set env
命令对空格敏感。=
符号的两侧不能有空格。提示您还可以编辑
ipfailover-keepalived
部署配置:$ oc edit deploy ipfailover-keepalived
spec: containers: - env: - name: OPENSHIFT_HA_CHECK_SCRIPT 1 value: /etc/keepalive/mycheckscript.sh ... volumeMounts: 2 - mountPath: /etc/keepalive name: config-volume dnsPolicy: ClusterFirst ... volumes: 3 - configMap: defaultMode: 0755 4 name: customrouter name: config-volume ...
保存更改并退出编辑器。这会重启
ipfailover-keepalived
。