简而言之 - 操作系统 Amazon Linux 或 Ubuntu。一个 EC2 实例(或 OpsWorks 实例?)正在运行。每天启动第二个实例一次,使用最新的安全更新对其进行更新,安装我的应用程序。关闭第一个实例。每天重复...
AWS文档指出:
默认情况下,AWS OpsWorks 会在设置期间自动安装最新更新...我们建议您...创建并启动新实例以替换当前的在线实例。然后删除当前实例。新实例将在设置期间安装最新的一组安全补丁。
如何使这一过程自动化?
我知道,我可以启动一个微实例来通过 CLI 管理这个过程,但我更愿意使用一些 AWS 内置工具,这样我就可以收到失败通知,增加一些冗余(如果 CLI 实例失败),一切都会继续在新的 CLI / AWS API 版本等上运行。
我是否缺少了一些优雅的方法?
更新:最好能够使用现有的弹性 IP。
答案1
在 ELB 后面使用 EC2 实例。
启动后,您的节点应下载并安装最新的安全更新,并执行使您的应用程序运行所需的其他配置。
至于每天循环一次实例:
- 创建第二个 EC2 节点
- 等待其自行配置并可用
- 将第二个节点添加到 ELB
- 从 ELB 中删除旧节点
- 射击旧节点的头部
以上所有操作均可使用各种 AWS API 轻松实现自动化,甚至可以作为 Lambda 作业。
答案2
当您说“使用最新的安全更新进行更新”时,您到底是什么意思?您的威胁概况和针对哪些对手的风险缓解措施是什么?我使用ufw
并确保我这样做,sudo apt update
或者sudo yum update && sudo yum upgrade && reboot
将 cron 设置为每月一次,停机时间几乎为零。重启大约需要 30 秒。看来您尝试做的事情不值得花时间去实现。
我的答案是
在防火墙、端口、适当的用户监狱、适合您的应用程序的用户运行时间方面实施合理的安全封锁,并且通常限制实例上运行的内容。
设置 crontab 并定期自动更新脚本
这虽然不能完全减少停机时间,但可以确保每月停机时间约为 30 秒。