产品文档
- 部分 I. 概述和规划
- Resiliency Platform 简介
- 关于 Resiliency Platform 功能和组件
- Resiliency Platform 部署中的复制
- 关于 Veritas Resiliency Platform Data Mover
- 使用 Resiliency Platform 的恢复选项
- 部署检查清单
- 系统要求
- 管理许可证
- 使用 Web 控制台
- Resiliency Platform 简介
- 部分 II. 部署和配置虚拟设备
- 部署和配置
- 通过 AWS Marketplace 在 AWS 中部署虚拟设备
- 在 AWS 中使用 OVA 文件部署虚拟设备
- 在 AWS 中部署数据网关
- 使用 PowerShell 脚本在 Azure 中部署虚拟设备
- 通过 Azure Marketplace 在 Azure 中部署虚拟设备
- 在 vCloud 中部署虚拟设备
- 在华为云中部署虚拟设备
- 在 Orange Recovery Engine 中部署虚拟设备
- 关于配置 Resiliency Platform 组件
- 虚拟设备安全功能
- 关于修补程序
- 应用更新
- 关于应用 Resiliency Platform 更新
- 设置 YUM 服务器
- 部署和配置
- 部分 III. 设置和管理 Resiliency Domain
- 管理 Resiliency Domain
- 与 NetBackup 集成
- 与 InfoScale Operations Manager 集成
- 部分 IV. 添加资产基础架构
- 管理 Resiliency Platform 主机资产
- 管理 VMware 资产
- 管理 Veritas Replication VIB
- 管理 Hyper-V 资产
- 管理网关
- 关于 Replication Gateway 对
- 管理数据网关
- 管理 Enclosure 资产
- 部分 V. 管理网络
- 管理网络
- 关于网络对象
- 管理设置
- 管理网络
- 部分 VI. 使用 Resiliency Group
- 组织资产
- 管理 Virtual Business Service
- 组织应用程序
- 管理自定义应用程序
- 管理 Service Objective
- 部分 VII. 配置灾难恢复
- 使用 Resiliency Platform Data Mover 配置
- 在 Amazon Web Services 中管理用于远程恢复 (DR) 的虚拟机
- 管理用于远程恢复 (DR) 到 Azure 的虚拟机
- 管理用于远程恢复 (DR) 到 OpenStack 的虚拟机
- 管理用于远程恢复 (DR) 到华为云的虚拟机
- 管理用于远程恢复 (DR) 到 Orange Recovery Engine 的虚拟机
- 在 vCloud Director 中管理用于远程恢复 (DR) 的虚拟机
- 使用 Resiliency Platform Data Mover 管理用于远程恢复 (DR) 的虚拟机
- 使用 Resiliency Platform Data Mover 管理物理计算机以进行远程恢复 (DR)
- 使用 NetBackup 配置
- 使用第三方复制技术配置
- 使用 Resiliency Platform Data Mover 配置
- 部分 VIII. 管理灾难恢复
- 对虚拟机执行 DR 操作
- 对 VBS 执行 DR 操作
- 对应用程序执行 DR 操作
- 撤离资产
- 管理 Resiliency Plan
- 关于自定义脚本
- 部分 IX. 产品设置
- 部分 X. 使用 Resiliency Platform API
- 部分 XI. 故障排除和使用命令行界面
- 故障排除
- 从灾难场景中恢复 Resiliency Platform 组件
- 解决管理员等待状态
- 使用 klish 菜单
- 使用 Application Enablement SDK
- 故障排除
定义应用程序
此类别包含“新”API,它们是任何应用程序模块脚本的起点。还包含可用于定义应用程序发现级别、定义可在应用程序等上执行的操作的 API。
说明:此 API 将应用程序类型(如 MSSQL、Oracle、SAP)传送到 Resiliency Platform。此接口是任何应用程序模块脚本的起点,并且是强制性的。这将启动应用程序和记录器。默认情况下,日志记录级别设置为“信息”。
要更改日志级别,请使用 reset_log API。
请参见日志记录。
注意:
如果用户指定的应用程序类型具有除了非 A-Z、a-z、0-9、短划线 (-) 或下划线 (_) 之外的任何字符,此接口将返回未定义对象。
强制:是
输入参数:字符串:应用程序类型。
返回值:应用程序对象,否则为未定义。
语法:
new VRTS::AppSDK::AppEnablementSDK::Application("<Application Type>");
示例:
my $appObj = new VRTS::AppSDK::AppEnablementSDK::Application("TestApp");
说明:使用此接口声明应用程序脚本支持的发现类型。对于用来发现应用程序的 Resiliency Platform,需要定义发现类型,如深度和探测。使用逗号作为分隔符定义多个发现级别。
深度和探测发现类型是强制性的。
深度:发现整个应用程序及其组件,包括文件。
探测:仅检查应用程序实例的状态。例如,应用程序是处于联机还是脱机状态。
强制:是
输入参数:字符串:发现级别类型,值必须为“深度”和“探测”。
返回值:如果成功则返回 0,否则返回任意正数。
示例:
my $appObj = new VRTS::AppSDK::AppEnablementSDK::Application("TestApp"); $appObj->set_discovery_types("DEEP", "PROBE");
说明:使用此接口提供特定应用程序模块脚本支持的操作的列表。例如,启动应用程序和停止应用程序。使用逗号作为分隔符定义多个操作类型。此接口是强制接口,可用于 Resiliency Platform 执行发现脚本和对应用程序执行操作。
启动和停止操作是强制性的。
强制:是
输入参数:字符串:操作类型,值必须为“启动”和“停止”。
返回值:如果成功则返回 0,否则返回任意正数。
示例:
my $appObj = new VRTS::AppSDK::AppEnablementSDK::Application("TestApp"); $appObj->set_operation_types("START", "STOP");
说明:使用此接口可针对使用 set_discovery_types API 定义的发现操作类型注册发现操作回调函数。仅当使用上述发现操作调用应用程序模块脚本时,才会调用注册的回调函数。此接口是强制接口,可向 Resiliency Platform 传送子例程,该例程可执行操作并返回相应的返回代码和返回消息。
确保发现脚本继续发现处于脱机模式的应用程序。否则,应用程序处于脱机状态时无法发现,因此会从 Resiliency Platform 控制台中删除实例。使用实例创建的 Resiliency Group 变为无效。
回调函数是在应用程序模块脚本中定义的且能够成功执行上述发现操作的一个子例程。如果成功执行上述操作,则回调函数返回 0,否则将返回任意正数,以表示操作失败。除了返回代码以外,还将返回一个字符串,其中包含成功或失败消息。必需提供返回代码,否则会将操作视为失败。可以选择是否提供返回消息。
强制:是
输入参数:字符串:发现操作 - 先前使用 set_discovery_types API 设置的发现操作名称。
输入参数:回调函数引用 - 在应用程序模块脚本中定义的子例程引用。
返回值:如果成功则返回 0,否则返回任意正数。
示例:
my $appObj = new VRTS::AppSDK::AppEnablementSDK::Application("TestApp"); if(defined $appObj) { $appObj->set_discovery_types("DEEP, PROBE"); $ret=$appObj->register_discovery_callback("PROBE",\&probe); $ret=$appObj->register_discovery_callback("DEEP",\&deep); } sub probe { # Write the code here to discover all application instances my $inst_name = "app_inst"; $appObj->log(LOGLEVEL_DEBUG,"Application instance name: [$inst_name]"); # Write the code here to discover state of each application instance # Report the state of the discovered application instance # on the Resiliency Platform. my $inst = $appObj->add_application_inst($inst_name); if (defined $inst) { # The state must be reported either 'online' or 'offline' $inst->set_property(APP_INST_STATE, "Online"); } # return 0 for successful and 1 for failure return 0,"probe is successful"; }
注意:
在以上示例的第二个参数中,"\&probe" 和 "\&deep" 是回调函数的引用,即在应用程序模块脚本中定义的子例程引用。
说明:使用此接口可针对使用 set_operation_types API 定义的操作类型注册回调函数。仅当使用上述操作调用应用程序模块脚本时,才会调用注册的回调函数。此接口是强制接口,可向 Resiliency Platform 传送子例程,该例程可执行操作并返回相应的返回代码和返回消息。
回调函数是在应用程序模块脚本中定义的且能够成功执行上述操作的一个子例程。如果成功执行上述操作,则回调函数返回 0,否则将返回任意正数,以表示操作失败。除了返回代码以外,还可输入一个字符串,其中包含成功或失败消息。必需提供返回代码,否则会将操作视为失败。可以选择是否提供返回消息。
通过上述任一 API 使用 AppEnablementSDK 进行注册时,回调函数会将 hashref 作为参数接收。hashref 参数包含 INSTANCE_NAME
(键)和应用程序实例名称(值)。
强制:是
输入参数:字符串:操作 - 先前使用 set_operation_types API 定义的操作名称。
回调函数引用 - 在应用程序模块脚本中定义的子例程引用。
返回值:如果成功则返回 0,否则返回任意正数。
示例:
my $appObj=new VRTS::AppSDK::AppEnablementSDK::Application("TestApp"); if(defined $appObj) { $appObj->set_operation_types("START,STOP"); $ret = $appObj->register_operation_callback("START",\&start); $ret = $appObj->register_operation_callback("STOP",\&stop); } sub start { my ($arg) = @_; my $FuncName = ( caller 0 )[3]; $appObj->log(LOGLEVEL_DEBUG,"Inside $FuncName"); my $inst_name = $arg->{INSTANCE_NAME}; $appObj->log(LOGLEVEL_DEBUG,"Application instance name: [$inst_name]"); # Write the code here to start an application instance # and return appropriate status code and message. # Return 0 for successful and 1 for failure return 0, "Start is successful"; }
注意:
在上述示例的第二个参数中,"\&start" 和 "\&stop" 是回调函数的引用,即在应用程序模块脚本中定义的子例程引用。