带有 SVN 应用程序的 Amazon EC2 多个实例
嘿呀, 快问。 我在 EC2 上有多个实例,它们之间有一个负载均衡器。我使用一个 SVN 应用程序来推送到我的实时环境。随意。
对于多个 EC2,我如何将代码库一次性推送到所有 EC2? 任何想法/链接将不胜感激。
Heya,
Quick question.
I've got multiple instances on EC2 with a load balancer between them. I use an SVN app that used to push to my live env. at will.
With the multiple EC2's, how would I push a codebase to all of them at once?
Any thoughts/links would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有几种不同的方法可以做到这一点。
如果您使用弹性负载均衡器
编写一个脚本:
您也可以删除一台计算机如果您担心一致性,请更新它,删除所有其他机器并更新它们。
如果您使用自定义负载平衡应用程序,
请查看 Capistrano 。您不需要将它与 Ruby/Rake 一起使用——您可以编写可以执行并行部署的自定义 cap 文件。
There are a few different ways to do this.
If You Are Using Elastic Load Balancers
Write a script that:
You could also get fancy and remove one machine, update it, remove all other machines and update them, if you're concerned about consistency.
If You Are Using a Custom Load Balancing Application
Look into Capistrano. You don't need to use it with Ruby/Rake -- you can write custom cap files that can do parallel deploys.
代码部署用vlad或者fabric怎么样。
How about vlad or fabric for code deployment.
我们使用标量。它可以作为服务 (Scalr.net) 提供,或者您可以自己运行它(它是开源的 - 尽管 googlecode 存储库中的源代码有时比服务使用的版本稍晚一些)。
基本上,Scalr 具有全局脚本功能,您可以指定一个脚本(例如 bash、PHP、任何带有 #!bang 的脚本)并触发它在给定“角色”的所有实例(例如 Web 实例)上运行。在我们的例子中,我们有一个脚本,它只根据需要执行 svn checkout 或 svn update 。 Scalr 支持定期调度脚本,因此在开发环境中我每 5 分钟运行一次,以保持开发与 SVN 同步,但显然我手动触发它进行生产。
(我的脚本采用一个参数来指定要使用的 SVN 分支)
We use Scalr. It is available as a service (Scalr.net) or you can run it yourself (it is Open Source - though the source in the googlecode repository is sometimes a little behind the version the service uses).
Basically, Scalr has a global scripting feature whereby you can specify a script (e.g. bash, PHP, anything with #!bang) and trigger it to be run on all instances of a given 'role' (e.g. web instance). In our case we have a script that just does svn checkout or svn update as appropriate. Scalr supports periodic scheduling of scripts, so in the dev environment I run it every 5 mins to keep dev in synch with SVN, but obviously I manually trigger it for production.
(I have the script taking a param to specify the SVN branch to use)