如何通过在两个实例之间切换来自动更新 EC2 Linux 实例而无需停机?

如何通过在两个实例之间切换来自动更新 EC2 Linux 实例而无需停机?

简而言之 - 操作系统 Amazon Linux 或 Ubuntu。一个 EC2 实例(或 OpsWorks 实例?)正在运行。每天启动第二个实例一次,使用最新的安全更新对其进行更新,安装我的应用程序。关闭第一个实例。每天重复...

AWS文档指出

默认情况下,AWS OpsWorks 会在设置期间自动安装最新更新...我们建议您...创建并启动新实例以替换当前的在线实例。然后删除当前实例。新实例将在设置期间安装最新的一组安全补丁。

如何使这一过程自动化?

我知道,我可以启动一个微实例来通过 CLI 管理这个过程,但我更愿意使用一些 AWS 内置工具,这样我就可以收到失败通知,增加一些冗余(如果 CLI 实例失败),一切都会继续在新的 CLI / AWS API 版本等上运行。

我是否缺少了一些优雅的方法?

更新:最好能够使用现有的弹性 IP。

答案1

在 ELB 后面使用 EC2 实例。

启动后,您的节点应下载并安装最新的安全更新,并执行使您的应用程序运行所需的其他配置。

至于每天循环一次实例:

  1. 创建第二个 EC2 节点
  2. 等待其自行配置并可用
  3. 将第二个节点添加到 ELB
  4. 从 ELB 中删除旧节点
  5. 射击旧节点的头部

以上所有操作均可使用各种 AWS API 轻松实现自动化,甚至可以作为 Lambda 作业。

答案2

当您说“使用最新的安全更新进行更新”时,您到底是什么意思?您的威胁概况和针对哪些对手的风险缓解措施是什么?我使用ufw并确保我这样做,sudo apt update或者sudo yum update && sudo yum upgrade && reboot将 cron 设置为每月一次,停机时间几乎为零。重启大约需要 30 秒。看来您尝试做的事情不值得花时间去实现。

我的答案是

  1. 在防火墙、端口、适当的用户监狱、适合您的应用程序的用户运行时间方面实施合理的安全封锁,并且通常限制实例上运行的内容。

  2. 设置 crontab 并定期自动更新脚本

这虽然不能完全减少停机时间,但可以确保每月停机时间约为 30 秒。

相关内容