我的公司正在将我们的主机转移到亚马逊,我正在解决所有迁移问题。从物理硬件过渡到瞬态虚拟机是一个相当大的挑战。
最后的挑战之一是弄清楚如何管理我们的 EBS 和快照。由于他们目前无法描述性地命名它们或添加含义,我想知道管理员如何管理他们的资源。一两台服务器问题不大,但运行多台服务器的那些是如何处理事情的。当他们通过少数服务器时,每个人是否都在使用第三方工具(如 RightScale/Scalr)?还是您在维护 wiki 或其他辅助文档?
我的公司正在将我们的主机转移到亚马逊,我正在解决所有迁移问题。从物理硬件过渡到瞬态虚拟机是一个相当大的挑战。
最后的挑战之一是弄清楚如何管理我们的 EBS 和快照。由于他们目前无法描述性地命名它们或添加含义,我想知道管理员如何管理他们的资源。一两台服务器问题不大,但运行多台服务器的那些是如何处理事情的。当他们通过少数服务器时,每个人是否都在使用第三方工具(如 RightScale/Scalr)?还是您在维护 wiki 或其他辅助文档?
我使用 ec2-consistent-snapshot ( http://alestic.com/2009/09/ec2-consistent-snapshot ) 来拍摄我的快照(在 RHEL/CentOS 派生的 Amazon 的 Linux 上) - 它是用 Perl 编写的并直接使用 API . 您指定要快照的卷,它允许您添加描述。
(在 AWS 控制台中,如果您需要更精细的控制,您可以添加标签,但对于可能没有必要的简单备份,并且上面使用的 Perl 模块 (Net::Amazon::EC2) 尚不支持)。
上面的脚本不会删除快照(只创建新的快照 - 一致(即它可以在快照之前冻结磁盘/数据库)。由于它相当常用,我找不到兼容的 Perl 脚本来删除我写的旧快照我自己的(http://www.thatsgeeky.com/2011/06/rotating-ebs-snapshots-ec2-prune-snapshots/)。它做得很好(祖父-父亲-儿子轮换)并使用相同的依赖项和参数如上述脚本。
当然,两者都设置为通过 Cron 运行。
(理论上,将一些类似的脚本(例如用 PHP 和 Ruby 编写的脚本)挂钩到数据库应该很容易,并维护您自己的卷和快照日志 - 每个快照都有一个唯一的 ID,所以只要记录下来,任何进一步的内部组织都应该很容易实现。[但是,出于备份目的,卷 ID 和日期通常就足够了])
不要使用 CLI 工具——它们是用 Java 编写的,与任何直接的 API 实现相比都非常慢。
如果亚马逊要吸引企业市场,亚马逊正在逐渐添加进行有效管理所需的所有功能。添加了标签,并且允许用户只能访问某些功能的增强功能即将推出。将来肯定会处理脚本和部署。我将这些功能添加到我的免费工具 ElastDream 中。
除了编写自己的工具来根据文本标签索引 EBS 和快照 ID 之外,我发现使用免费的RightScale帐户并分配昵称是管理我们的 EBS 卷和快照的最佳方式。
我个人认为,无法为 EC2 实例、AMI 或卷分配易于记忆的标签是当前 Amazon 产品中的一个大漏洞——这对我来说似乎很容易。
我使用ElasticFox来管理我的快照(以及我的所有服务器)。它有标签,可以很容易地跟踪哪个是哪个。
当我想以编程方式做事时,我也会使用boto库。但是,如果您这样做,您将需要创建自己的数据存储。SQS 和 Sqlite 是不错的选择。
ElasticFox 无疑是(手动)管理 EC2 最方便的工具之一。但关键部分是 - 定期对您的实例进行映像 - 在新实例启动后设置一些自动初始化: - 分区并挂载临时驱动器 - 一旦 EBS 卷可用就挂载它 - 从 EBS 恢复文件和数据库,a共享存储或 S3。- 启动服务(MySQL、Apache、Tomcat,随你命名。)
我们使用chef来管理我们所有的 EC2 资源。
AWS 控制台对于许多日常任务来说太低级了,尽管它正在迅速改进。如果您现在需要此功能,您要么硬着头皮编写自己的脚本,利用 ec2 cli 工具来管理快照,要么使用第三方工具。对于 EBS 卷管理,已经提到的那些很好,另一个选项是 EBS 管理工具,因此您可以安排备份、命名它们、还原它们等BitNami Cloud Hosting(有免费套餐)
我在我的博客http://three99.com/posts/python-grandfather-father-son-snapshots-backup-for-ec2/上有我自己的用于制作轮换备份的脚本(祖父 - 父亲 - 儿子)