2012-12-12 86 views
0

我正在运行可变数量的EC2实例(CentOS 64),它包含一个在生产模式下缓存一堆代码的apache Web服务器。在许多EC2实例上批量重新启动httpd

现在每次我做一些改变的代码(通常在每周)我必须登录到他们的实例中的每一个,做一个“苏”,然后“服务的httpd重新启动”

是否有一个如何自动执行此操作,以便我可以在其中一个连接到所有其他实例并重新启动它的实例上运行单个命令?特别是当应用程序自己产生了20-30个实例时(特别是当我们获得高流量时发生),真正花费时间。

谢谢!

+1

如果您将您的实例设置为拥有root用户的授权SSH密钥,那么您可以为每个实例执行'ssh root @ instance service httpd restart'。这将是一个简单的脚本循环遍历所有实例的问题。 – nandhp

+0

如果你需要在很多服务器上定期做更多的事情,可能[Python Fabric](http://docs.fabfile.org/en/1.5/)脚本就是要看的东西。它充当shell命令之上的抽象层,易于使用(如果您对Python感到满意)并且功能非常强大。 – bhell

+0

当我对每个实例ssh(使用pems)时,我也必须执行su并输入root pwd,ec2-user无法重新启动httpd。宁愿选择不涉及其他软件的解决方案,但是感谢您的建议 –

回答

0

Dancer's shelldsh,是专门为此提供的。不需要'脚本'。正如@ tix3所示,您应该也可以在这些机器上说服sudo(配置/etc/sudoers使用visudo)将它们配置为接受您的重新启动命令。

+0

看起来不像是“开箱即用”的,我必须连接到每台机器,并安装该lib和/或设置sudo :( –

+0

不,您需要做的是有一个ssh密钥你推送到这些机器,然后你把主机放在一个组文件中,然后告诉dsh在这个组上执行一个操作,显然任何解决方案都需要在启动之前获取一个主机列表,我的意思是,我们不预计DNS将被自动填充 并且dsh不是一个lib - 它不需要任何东西在端点上,它只是ssh –

+0

你能不能简单地用sudo预先配置你的AMI吗?我的意思是,这是如何在EC2上默认使用ubuntu –