赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 云服务器 ECS
  4. 实践教程
  5. 稳定性最佳实践
  6. 自动恢复服务

自动恢复服务

  • 稳定性最佳实践
  • 发布于 2025-04-01
  • 0 次阅读
文档编辑
文档编辑

服务或脚本在运行过程中可能会因程序异常、服务器重启、掉电等情况而停止运行,如果不能及时恢复运行,会给线上业务造成损失。您可以通过云助手插件ecs-tool-servicekeepalive,使服务或脚本在被中断时快速恢复运行,保障服务的可靠性和持续性。

方案原理

该方案是基于Linux操作系统的systemd service服务实现的。启用插件ecs-tool-servicekeepalive时,用户只需输入服务/程序的启动命令(例如,python /home/root/main.py)。启用后,该插件会根据用户输入的启动命令,自动生成systemd service配置,实现服务或脚本自启动,无需您手动配置systemd service。

说明

systemd service是Linux系统中的一个组件,可以用来自动管理服务,例如实现开机自启动和服务意外停止后自启动等。详细介绍,请参见systemd官方文档。

方案实践

  1. 完成服务或程序等部署后,以root权限启动云助手插件ecs-tool-servicekeepalive。

    以root用户运行服务/脚本

    sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'cmd'"

    cmd:需替换为服务启动命令。例如,脚本执行命令(/bin/bash /home/work/debug/debug.sh )、程序运行命令(python /home/root/main.py)等。

    重要

    脚本或程序文件路径需为根路径。

    通过指定用户运行服务/脚本

    sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,execstart='cmd',user=user_name,group=group_name"
    • cmd:需替换为服务启动命令。例如,脚本执行命令(/bin/bash /home/work/debug/debug.sh )、程序运行命令(python /home/root/main.py)等。

      重要

      脚本或程序文件路径需为根路径。

    • user_name:替换为服务运行的用户名。执行cut -d: -f1 /etc/passwd可查看已创建的用户。

    • group_name:替换为服务运行的用户组名。执行cut -d: -f1 /etc/group可查看已创建的用户组。

  2. 执行以下命令,查看服务是否已被配置为自恢复。

    sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"

    类似如下回显,表示配置成功。

    image

  3. (可选)如果您需要取消服务/脚本自恢复,可执行如下命令。

    sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop service_name"

    service_name:替换为已配置的服务配置名称(即步骤2回显中的service_name列)。

应用示例

  1. 准备环境。

    创建一个/home/work/debug文件夹,并在该文件夹下创建debug.sh脚本,该脚本会每秒打印一行日志到用户指定的日志文件中。

    sudo mkdir -p /home/work/debug && \
    sudo tee /home/work/debug/debug.sh > /dev/null << 'EOF'
    #!/bin/bash
    while true
    do
       sudo echo "$(date '+%Y-%m-%d %H:%M:%S') progress is alive" >> $1
        sleep 1
    done
    EOF

    通过命令ps aux |grep debug.sh,发现脚本并未运行。

    image

  2. 启动云助手插件。

    sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'/bin/bash /home/work/debug/debug.sh /home/work/debug/debug.log'"

    此时通过命令ps aux | grep debug.sh查看,发现脚本已经在运行(此时进程号为2572)。

    image

  3. 验证脚本是否会自动恢复运行。

    重启ECS脚本正常运行

    在控制台重启ECS实例,ECS恢复后,登录实例,执行如下命令。

    ps aux |grep debug.sh

    发现服务debug.sh的进程仍正常运行,且进程号更新为764,说明脚本被重新启动过。

    image

    Kill进程脚本正常运行

    1. 执行如下命令,通过查找到debug.sh的进程号。

      ps aux |grep debug.sh

      类似如下回显,2572即为debug.sh进程号。

      image

    2. 执行如下命令,kill掉debug.sh进程。

      sudo date && kill -9 进程号
    3. 再次执行如下命令,发现debug.sh仍在运行且进程号更新为4220,说明脚本被重新启动过。

      ps aux |grep debug.sh

      image

相关文档

随着业务规模的增长,数据请求和并发访问量增大、您可以部署多台ECS搭建一个具备可用区级别的故障灾备能力的服务,保障数据的可用性和持续性。具体操作,请参见部署高可用架构。

相关文章

ECS主机状态变化事件的自动化运维 2025-04-01 11:57

本文通过实践案例为您介绍云监控如何通过轻量消息队列(原 MNS)的队列实现自动化处理ECS主机状态变化事件。 前提条件

ECS容灾恢复方案 2025-04-01 11:57

针对单可用区运行故障风险,通过数据备份与跨可用区迁移实现快速恢复,解决因成本限制或容灾要求较低导致的单点故障问题。本文从云盘数据、系统镜像及可用区故障场景,提供业务快速恢复的解决方案。 应用场景

ECS容灾故障演练 2025-04-01 11:57

本文详细介绍了ECS在云盘数据、镜像备份以及跨可用区的故障演练与恢复操作。 应用场景

GPU稳定性最佳实践 2025-04-01 11:57

随着AI、深度学习、科学计算和大数据处理等技术的发展,GPU成为高性能计算的关键组件。为保障服务器稳定运行,阿里云提供巡检服务以提前发现硬件故障,支持您通过自助诊断功能快速定位问题。 重要

故障演练 2025-04-01 11:57

故障演练是实现系统稳定性保障的关键手段,它通过向系统注入可控的特定故障,以验证和促进系统的高可用性建设,以及训练相关人员应急能力、验证故障处理机制,从而减少真实故障发生时的故障恢复时间(MTTR,Mean Time To Repair)。阿里云提供了以ecs-fault-{scenename}或AC

更新补丁以提高ECS系统的安全性 2025-04-01 11:57

大多数企业在管理IT资产时通常会对其设置一些合规要求,要求及时修复系统漏洞以避免安全攻击,或者要求软件包的版本始终保持最新。在这种情况下,补丁管理就显得尤为重要。当您有扫描或安装补丁的需求,或者基于默认补丁基线安装补丁以及在补丁基线中进行定制,系统运维管理的ECS补丁管理操作可以轻松解决这些问题。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号