我们有一个网站需要每隔一段时间更新页面。 该站点有大约8个EC2实例在任何时候运行,但偶尔会变得更大。 我们使用负载均衡器和自动调节来创build更多的实例。 这些页面只是磁盘上的普通文件; 没有内容pipe理系统。 Web服务器是Jetty。
如果我修改一个页面,我怎样才能将它部署到所有当前和未来的实例?
很明显,我不能使用像Fabric这样的pipe理工具,因为它不会更新未来实例的AMI。 创build一个新的AMI并部署它也是一个错误,因为首先,这是一个麻烦的过程,其次,它会closures现有的实例上的所有当前用户会话。
我在想,这些实例需要从某个地方抽取网站的页面,并且每隔一段时间检查一次更新。
我想把页面放在S3上,但是这是一个不起步的原因,因为1)当页面被改变时,S3没有办法通知实例,2)所以你必须连续轮询S3,3)这是昂贵的,4)你必须为每个页面单独做。
什么是最简单的方法来做到这一点? 最好的方法是什么,如果最好!=简单?
我看到有几个选项:
你可以通过在自动缩放中使用一些克隆后的步骤来完成。 确切的方法取决于你的舒适度,但像这样的解决scheme可能会为你做很多事情:
这是一种批处理模式方法。 现有的服务器不会收到新文件的通知,但是由于cron执行时间,它们几乎同时都会得到它们。 新服务器在启动时将获得新文件。
这里的关键是将您的内容与AMI本身分离。