文档

设置应用生命周期挂载脚本

更新时间:

如果您希望在应用生命周期中的不同阶段(例如启动、重启或停止)配置特定的脚本或代码,用于执行相关任务。您可以在ECS实例上设置应用生命周期挂载脚本,在事件发生时,可以自动执行自定义脚本。

挂载脚本定义说明

生命周期挂载脚本的运行过程图示意如下:

image

脚本执行须知:

  • 脚本采用root用户执行。

  • 脚本执行时间最长为600s,当执行时间超过600s,将认为超时导致脚本执行失败。

  • 脚本可能被重复执行,需要脚本自身保证重复执行的正确性,例如:脚本应避免将相同的配置项追加到同一配置文件。

  • 脚本在独立的进程中执行,与应用进程无关。

  • 如需设置环境变量在应用启动后使用,建议将环境变量写入到/home/admin/.bashrc中。

  • 脚本通过ECS的发送远程命令执行,命令名称为CoCustomHookScript

  • 执行结果状态:

    • 成功:按照Linux、Unix的标准,执行退出码为0时为成功。如命令echo xyz退出码为0。

    • 失败:执行退出码非0时为失败。如命令ls 不存在的目录,退出码非0。

  • 忽略失败:开启时,若执行结果状态失败,则不中断应用变更单的执行。

  • 不忽略失败:当脚本执行失败并且健康检查URL通过时,挂载脚本将被重复执行。您可通过以下方法继续执行应用变更:

    • 修复相应的脚本问题,然后重试变更任务。

    • 若是启动后挂载脚本,可在变更任务单击略过,在执行挂载脚本这个变更单任务时,将采用忽略失败模式,变更记录将继续执行。

  • 允许输入的脚本最大 8 KB,若超过,可将脚本放置于外部存储,如对象存储OSS服务中,通过网络下载后执行。

设置挂载脚本

您可参照以下步骤进入到挂载脚本的设置页面。

  1. 登录EDAS控制台

  2. 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。

  3. 进入应用或应用分组设置页面。

    • 应用:在基本信息页签的应用设置区域右侧,单击挂载脚本

    • 应用分组:单击实例部署信息页签,在分组设置的下拉列表中选择挂载脚本

  4. 挂载脚本对话框,展开需设置的应用生命周期的脚本,在文本框中输入脚本内容,然后单击修改

    挂在脚本配置

    配置项

    描述

    准备实例脚本

    在ECS实例扩容到应用中时发生一次。通常可用于设置应用相关的环境变量、hosts等。相比于cloud-init在虚拟机初始化阶段触发,进一步提供了跟应用相关的触发点。

    销毁实例脚本

    ECS实例从应用移除时发生一次。通常可用于移除应用相关的配置等。

    启动前脚本

    通过变更触发的应用启动,在应用容器每次启动前,如调用Tomcat的启动脚本start.sh之前。

    启动后脚本

    通过变更触发的应用启动,在应用容器每次启动后,如调用Tomcat的启动脚本start.sh之后。具体触发点为:当应用配置了健康检查URL时,则通过健康检查后触发;若没有配置健康检查URL,则在端口存在后触发,不建议只使用端口检查方式,通常在应用未完全启动前,应用容器早已经打开网络端口。

    停止前脚本

    通过变更触发的应用停止,在应用容器每次停止前。

    停止后脚本

    通过变更触发的应用停止,在应用容器每次停止后。

查看执行结果

在修改挂载脚本后,您可查看应用变更。下图以执行准备实例脚本为例展示执行结果。

准备实例脚本

常见问题

怎么查找发送远程命令的执行状态?

在变更记录日志中的InvocationId可查找到相应的发送远程命令的命令执行状态。