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