管理应用程序执行挂钩
执行挂钩是一种自定义操作、您可以将其配置为与受管应用程序的数据保护操作结合运行。例如、如果您有一个数据库应用程序、则可以使用执行挂钩在快照之前暂停所有数据库事务、并在快照完成后恢复事务。这样可以确保应用程序一致的快照。
执行挂钩的类型
Astra Control支持以下类型的执行挂钩、具体取决于何时可以运行:
-
预快照
-
快照后
-
预备份
-
备份后
-
还原后
-
故障转移后
执行钩筛选器
向应用程序添加或编辑执行挂钩时,可以向执行挂钩添加过滤器,以管理挂钩将匹配的容器。对于在所有容器上使用相同容器映像的应用程序、筛选器非常有用、但可能会将每个映像用于不同的用途(例如Elasticsearch)。通过筛选器、您可以创建执行挂钩在某些容器上运行的方案、但不一定是所有相同的容器上运行的方案。如果为单个执行钩创建多个筛选器、则这些筛选器将与逻辑运算符和运算符结合使用。每个执行连接最多可以有10个活动筛选器。
添加到执行挂钩中的每个筛选器都会使用一个正则表达式来匹配集群中的容器。当某个挂钩与某个容器匹配时、该挂钩将在该容器上运行其关联脚本。筛选器的正则表达式使用正则表达式2 (RE2)语法、不支持创建从匹配列表中排除容器的筛选器。有关Astra Control在执行挂钩筛选器中支持正则表达式语法的信息、请参见 "正则表达式2 (RE2)语法支持"。
如果将命名空间筛选器添加到在还原或克隆操作之后运行的执行挂钩、并且还原或克隆源和目标位于不同的命名空间中、则命名空间筛选器仅会应用于目标命名空间。 |
有关自定义执行挂钩的重要注意事项
在为应用程序规划执行挂钩时,请考虑以下几点。
由于执行挂钩通常会减少或完全禁用其运行的应用程序的功能,因此您应始终尽量缩短自定义执行挂钩运行所需的时间。 |
-
执行挂钩必须使用脚本执行操作。许多执行挂钩可以引用同一个脚本。
-
Astra Control要求执行挂钩使用的脚本以可执行Shell脚本的格式写入。
-
脚本大小限制为96 KB。
-
Astra Control使用执行挂钩设置和任何匹配条件来确定哪些挂钩适用于快照、备份或还原操作。
-
所有执行挂钩故障均为软故障;即使某个挂钩发生故障、仍会尝试执行其他挂钩和数据保护操作。但是,如果挂机发生故障,则会在 * 活动 * 页面事件日志中记录一个警告事件。
-
要创建,编辑或删除执行挂钩,您必须是具有所有者,管理员或成员权限的用户。
-
如果执行挂机运行时间超过 25 分钟,则此挂机将失败,从而创建返回代码为不适用的事件日志条目。任何受影响的快照都将超时并标记为失败,并会生成一个事件日志条目,用于记录超时情况。
-
对于临时数据保护操作,所有钩子事件都会生成并保存在*Activity*页面事件日志中。但是、对于计划的数据保护操作、事件日志中仅会记录挂钩故障事件(计划的数据保护操作本身生成的事件仍会记录下来)。
-
如果Astra Control Center将复制的源应用程序故障转移到目标应用程序、则在故障转移完成后、为源应用程序启用的任何故障转移后执行挂钩都会在目标应用程序上运行。
如果您一直在Astra Control Center 23.04中运行还原后执行挂钩、并将Astra Control Center升级到23.07、则在执行故障转移复制后、将不再执行还原后执行挂钩。您需要为应用程序创建新的故障转移后执行挂钩。或者、您也可以将用于故障转移的现有还原后挂钩的操作类型从"还原后"更改为"故障转移后"。
执行顺序
运行数据保护操作时、执行钩事件按以下顺序发生:
-
任何适用的自定义操作前执行挂钩都会在相应的容器上运行。您可以根据需要创建和运行任意数量的自定义操作前挂钩、但操作前这些挂钩的执行顺序既不能保证也不可配置。
-
执行数据保护操作。
-
任何适用的自定义操作后执行挂钩都会在相应的容器上运行。您可以根据需要创建和运行任意数量的自定义操作后挂机、但这些挂机在操作后的执行顺序既不能保证也不可配置。
如果创建多个相同类型的执行挂钩(例如、预快照)、则无法保证这些挂钩的执行顺序。但是、可以保证不同类型的挂钩的执行顺序。例如、具有所有不同类型挂钩的配置的执行顺序如下所示:
-
已执行备份前的挂钩
-
已执行预快照挂钩
-
已执行后快照挂钩
-
已执行备份后挂钩
-
已执行还原后挂机
您可以从中的表中的第2种情形中查看此配置的示例 确定挂钩是否会运行。
在生产环境中启用执行钩脚本之前,应始终对其进行测试。您可以使用 "kubectl exec" 命令方便地测试脚本。在生产环境中启用执行挂钩后、请测试生成的快照和备份、以确保它们一致。为此、您可以将应用程序克隆到临时命名空间、还原快照或备份、然后测试应用程序。 |
确定挂钩是否会运行
使用下表帮助确定是否会为您的应用程序运行自定义执行挂钩。
请注意、所有高级应用程序操作都包括运行快照、备份或还原的基本操作之一。根据具体情况、克隆操作可能由这些操作的各种组合组成、因此克隆操作运行时的执行挂钩将会有所不同。
原位还原操作需要现有快照或备份、因此这些操作不会运行快照或备份挂钩。
如果启动并取消包含快照的备份、并且存在关联的执行挂钩、则某些挂钩可能会运行、而其他挂钩则可能不会运行。这意味着、备份后执行挂钩不能假定备份已完成。对于已取消的备份以及关联的执行挂钩、请记住以下几点:
|
场景 | 操作 | 现有快照 | 现有备份 | 命名空间 | 集群 | 快照挂钩运行 | 备份挂钩运行 | Restore Hooks run | 故障转移挂钩运行 |
---|---|---|---|---|---|---|---|---|---|
1. |
克隆 |
不包括 |
不包括 |
新增 |
相同 |
Y |
不包括 |
Y |
不包括 |
2. |
克隆 |
不包括 |
不包括 |
新增 |
不同 |
Y |
Y |
Y |
不包括 |
3. |
克隆或还原 |
Y |
不包括 |
新增 |
相同 |
不包括 |
不包括 |
Y |
不包括 |
4. |
克隆或还原 |
不包括 |
Y |
新增 |
相同 |
不包括 |
不包括 |
Y |
不包括 |
5. |
克隆或还原 |
Y |
不包括 |
新增 |
不同 |
不包括 |
不包括 |
Y |
不包括 |
6. |
克隆或还原 |
不包括 |
Y |
新增 |
不同 |
不包括 |
不包括 |
Y |
不包括 |
7. |
还原 |
Y |
不包括 |
现有 |
相同 |
不包括 |
不包括 |
Y |
不包括 |
8. |
还原 |
不包括 |
Y |
现有 |
相同 |
不包括 |
不包括 |
Y |
不包括 |
9 |
Snapshot |
不适用 |
不适用 |
不适用 |
不适用 |
Y |
不适用 |
不适用 |
不包括 |
10 |
备份 |
不包括 |
不适用 |
不适用 |
不适用 |
Y |
Y |
不适用 |
不包括 |
11. |
备份 |
Y |
不适用 |
不适用 |
不适用 |
不包括 |
不包括 |
不适用 |
不包括 |
12 |
故障转移 |
Y |
不适用 |
由复制创建 |
不同 |
不包括 |
不包括 |
不包括 |
Y |
13 |
故障转移 |
Y |
不适用 |
由复制创建 |
相同 |
不包括 |
不包括 |
不包括 |
Y |
执行钩示例
请访问 "NetApp Verda GitHub项目" 为Apache Cassandra和Elasticsearch等常见应用程序下载真正的执行挂钩。您还可以查看示例并了解如何构建自己的自定义执行挂钩。
查看现有执行挂钩
您可以查看应用程序的现有自定义执行挂钩。
-
转到 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择 * 执行挂钩 * 选项卡。
您可以在显示的列表中查看所有已启用或已禁用的执行挂钩。您可以查看挂钩的状态、匹配的容器数量、创建时间以及运行时间(操作前或操作后)。您可以选择
+
此挂机名称旁边的图标可展开要运行它的容器列表。要查看与此应用程序的执行挂钩相关的事件日志、请转到*活动*选项卡。
查看现有脚本
您可以查看已上传的现有脚本。您还可以在此页面上查看正在使用哪些脚本以及正在使用哪些挂钩。
-
转到*帐户*。
-
选择*脚本*选项卡。
您可以在此页面上查看已上传的现有脚本列表。*使用者*列显示了使用每个脚本的执行挂钩。
添加脚本
每个执行挂钩都必须使用脚本执行操作。您可以添加一个或多个可供执行挂钩引用的脚本。许多执行挂钩可以引用同一个脚本;这样、您只需更改一个脚本、即可更新多个执行挂钩。
-
转到*帐户*。
-
选择*脚本*选项卡。
-
选择 * 添加 * 。
-
执行以下操作之一:
-
上传自定义脚本。
-
选择 * 上传文件 * 选项。
-
浏览到文件并上传。
-
为脚本指定一个唯一名称。
-
(可选)输入其他管理员应了解的有关该脚本的任何注释。
-
选择*保存脚本*。
-
-
从剪贴板粘贴到自定义脚本中。
-
选择*粘贴或类型*选项。
-
选择文本字段并将脚本文本粘贴到字段中。
-
为脚本指定一个唯一名称。
-
(可选)输入其他管理员应了解的有关该脚本的任何注释。
-
-
-
选择*保存脚本*。
新脚本将显示在*脚本*选项卡的列表中。
删除脚本
如果不再需要某个脚本、并且任何执行挂钩都不使用该脚本、则可以将其从系统中删除。
-
转到*帐户*。
-
选择*脚本*选项卡。
-
选择要删除的脚本、然后在*操作*列中选择菜单。
-
选择 * 删除 * 。
如果该脚本与一个或多个执行挂钩关联、则*删除*操作将不可用。要删除此脚本、请先编辑关联的执行挂钩、然后将其与其他脚本关联。 |
创建自定义执行挂钩
您可以为应用程序创建自定义执行挂钩、并将其添加到Astra Control中。请参见 执行钩示例 有关挂机示例。要创建执行挂钩,您需要拥有所有者,管理员或成员权限。
创建用作执行挂钩的自定义Shell脚本时、请务必在文件开头指定适当的Shell、除非您正在运行特定命令或提供可执行文件的完整路径。 |
-
选择 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择 * 执行挂钩 * 选项卡。
-
选择 * 添加 * 。
-
在*挂机详细信息*区域中:
-
从*操作*下拉菜单中选择操作类型、以确定何时应运行挂钩。
-
输入此挂钩的唯一名称。
-
(可选)输入执行期间传递到挂机的任何参数,在输入的每个参数之后按 Enter 键以记录每个参数。
-
-
(可选)在*挂机筛选器详细信息*区域中、您可以添加筛选器来控制执行挂机运行在哪些容器上:
-
选择*添加筛选器*。
-
在*挂机筛选器类型*列中、从下拉菜单中选择要筛选的属性。
-
在*正则表达式*列中、输入要用作筛选器的正则表达式。Astra Control使用 "正则表达式2 (RE2)正则表达式语法"。
如果在正则表达式字段中按属性的确切名称(例如Pod名称)进行筛选、而没有其他文本、则会执行子字符串匹配。要匹配确切的名称以及仅匹配该名称、请使用精确的字符串匹配语法(例如、 ^exact_podname$
)。 -
要添加更多筛选器、请选择*添加筛选器*。
一个执行钩的多个筛选器与一个逻辑运算符和运算符结合使用。每个执行连接最多可以有10个活动筛选器。
-
-
完成后、选择*下一步*。
-
在 * 脚本 * 区域中,执行以下操作之一:
-
添加新脚本。
-
选择 * 添加 * 。
-
执行以下操作之一:
-
上传自定义脚本。
-
选择 * 上传文件 * 选项。
-
浏览到文件并上传。
-
为脚本指定一个唯一名称。
-
(可选)输入其他管理员应了解的有关该脚本的任何注释。
-
选择*保存脚本*。
-
-
从剪贴板粘贴到自定义脚本中。
-
选择*粘贴或类型*选项。
-
选择文本字段并将脚本文本粘贴到字段中。
-
为脚本指定一个唯一名称。
-
(可选)输入其他管理员应了解的有关该脚本的任何注释。
-
-
-
-
从列表中选择一个现有脚本。
这将指示执行挂钩使用此脚本。
-
-
选择 * 下一步 * 。
-
查看执行钩配置。
-
选择 * 添加 * 。
检查执行挂钩的状态
在快照、备份或还原操作运行完毕后、您可以检查在该操作中运行的执行挂钩的状态。您可以使用此状态信息来确定是要保持执行状态、修改执行状态还是删除执行状态。
-
选择 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择*数据保护*选项卡。
-
选择*快照*可查看正在运行的快照、选择*备份*可查看正在运行的备份。
*挂机状态*显示操作完成后执行挂机运行的状态。有关详细信息、可以将鼠标悬停在状态上。例如、如果在快照期间发生执行挂机故障、则将鼠标悬停在该快照的挂机状态上可显示失败的执行挂机列表。要查看每次失败的原因、您可以查看左侧导航区域中的*活动*页面。
查看脚本使用情况
您可以在Astra Control Web UI中查看哪些执行挂钩使用特定脚本。
-
选择 * 帐户 * 。
-
选择*脚本*选项卡。
脚本列表中的*使用者*列包含有关列表中每个脚本使用哪些挂钩的详细信息。
-
在*使用者*列中选择您感兴趣的脚本的信息。
此时将显示一个更详细的列表、其中包含正在使用此脚本的挂钩的名称以及这些挂钩配置为运行的操作类型。
编辑执行挂钩
如果要更改执行挂钩的属性、筛选器或所使用的脚本、您可以编辑该执行挂钩。要编辑执行挂钩、您需要拥有所有者、管理员或成员权限。
-
选择 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择 * 执行挂钩 * 选项卡。
-
在*操作*列中选择要编辑的挂钩的选项菜单。
-
选择 * 编辑 * 。
-
完成每个部分后、选择*下一步*进行所需的更改。
-
选择 * 保存 * 。
禁用执行挂钩
如果要暂时阻止执行挂钩在应用程序快照之前或之后运行,可以禁用执行挂钩。要禁用执行挂钩,您需要拥有所有者,管理员或成员权限。
-
选择 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择 * 执行挂钩 * 选项卡。
-
在 * 操作 * 列中选择要禁用的挂机的选项菜单。
-
选择 * 禁用 * 。
删除执行挂钩
如果您不再需要执行挂钩,则可以将其完全移除。要删除执行挂钩,您需要拥有所有者,管理员或成员权限。
-
选择 * 应用程序 * ,然后选择受管应用程序的名称。
-
选择 * 执行挂钩 * 选项卡。
-
在 * 操作 * 列中选择要删除的挂机的选项菜单。
-
选择 * 删除 * 。
-
在显示的对话框中、键入"delete"进行确认。
-
选择*是、删除执行钩*。