如果您希望在应用生命周期中的不同阶段(例如启动、重启或停止)配置特定的脚本或代码,用于执行相关任务。您可以在ECS实例上设置应用生命周期挂载脚本,在事件发生时,可以自动执行自定义脚本。
挂载脚本定义说明
生命周期挂载脚本的运行过程图示意如下:
脚本执行须知:
脚本采用
root
用户执行。脚本执行时间最长为600s,当执行时间超过600s,将认为超时导致脚本执行失败。
脚本可能被重复执行,需要脚本自身保证重复执行的正确性,例如:脚本应避免将相同的配置项追加到同一配置文件。
脚本在独立的进程中执行,与应用进程无关。
如需设置环境变量在应用启动后使用,建议将环境变量写入到/home/admin/.bashrc中。
脚本通过ECS的发送远程命令执行,命令名称为CoCustomHookScript。
执行结果状态:
成功:按照Linux、Unix的标准,执行退出码为0时为成功。如命令
echo xyz
退出码为0。失败:执行退出码非0时为失败。如命令
ls 不存在的目录
,退出码非0。
忽略失败:开启时,若
执行结果状态
为失败
,则不中断应用变更单的执行。不忽略失败:当脚本执行失败并且健康检查URL通过时,挂载脚本将被重复执行。您可通过以下方法继续执行应用变更:
修复相应的脚本问题,然后重试变更任务。
若是启动后挂载脚本,可在变更任务单击略过,在执行挂载脚本这个变更单任务时,将采用忽略失败模式,变更记录将继续执行。
允许输入的脚本最大
8 KB
,若超过,可将脚本放置于外部存储,如对象存储OSS服务中,通过网络下载后执行。
设置挂载脚本
您可参照以下步骤进入到挂载脚本的设置页面。
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在应用列表页面单击具体的应用名称。
进入应用或应用分组设置页面。
应用:在基本信息页签的应用设置区域右侧,单击挂载脚本。
应用分组:单击实例部署信息页签,在分组设置的下拉列表中选择挂载脚本。
在挂载脚本对话框,展开需设置的应用生命周期的脚本,在文本框中输入脚本内容,然后单击修改。
配置项
描述
准备实例脚本
在ECS实例扩容到应用中时发生一次。通常可用于设置应用相关的环境变量、hosts等。相比于cloud-init在虚拟机初始化阶段触发,进一步提供了跟应用相关的触发点。
销毁实例脚本
ECS实例从应用移除时发生一次。通常可用于移除应用相关的配置等。
启动前脚本
通过变更触发的应用启动,在应用容器每次启动前,如调用Tomcat的启动脚本start.sh之前。
启动后脚本
通过变更触发的应用启动,在应用容器每次启动后,如调用Tomcat的启动脚本start.sh之后。具体触发点为:当应用配置了健康检查URL时,则通过健康检查后触发;若没有配置健康检查URL,则在端口存在后触发,不建议只使用端口检查方式,通常在应用未完全启动前,应用容器早已经打开网络端口。
停止前脚本
通过变更触发的应用停止,在应用容器每次停止前。
停止后脚本
通过变更触发的应用停止,在应用容器每次停止后。
查看执行结果
在修改挂载脚本后,您可查看应用变更。下图以执行准备实例脚本为例展示执行结果。
常见问题
怎么查找发送远程命令的执行状态?
在变更记录日志中的InvocationId可查找到相应的发送远程命令的命令执行状态。