我们新的应用程序使用几种服务
我将以SaS模式发布它,这意味着所有这些服务都将托pipe在我们的云中(现在在AWS中,后来是OpenStack)。 每个客户将获得自己的实例。 安装将取决于客户需求/规模 – 在某些情况下,所有服务都将在单个虚拟机上运行,在某些情况下,每个服务将有多个虚拟机。 服务configuration取决于客户(如附加function)。 我希望有一个简单的方法来创build“演示”实例 – 只是让未来的客户玩我们的应用程序。
我寻找一个能帮助我的解决scheme:
我已经看到了多变的看起来不错,但它的发展不是为了生产。 我已经看到docker这更好,但我不确定是否足够有弹性来支持每个客户不同的容器configuration。 无论如何,我仍然需要一个工具来创build这些容器…
我build议使用ansible作为工具来创build虚拟机,configuration公共部分,然后在主机上部署服务。 我会保持每个客户/实例单独的库存。 Ansible清单组将允许在一个虚拟机上安装所有angular色(服务),或者将其安装在单独的虚拟机上。 我相信这也能帮助我们升级服务。
我有一些问题:
我非常感谢所有的反馈。
我会试一试你的一些问题,但是如果你能缩小你的问题,那么这会更有帮助。
您在我的设置中看到的任何问题?
看起来不错,但这取决于应用程序在做什么以及瓶颈可能在哪里。
在什么情况下Ansible可能是不够的,所以我希望有像docker这样的东西?
即使您使用Docker,Ansible也应该可以做到所有自动化。 我没有使用Docker,但Docker本质上是lxc的一个包装,而Ansible允许你在完整的Linux机器或者lxc容器上运行命令。
如何跟踪单独的实例? 如果我改变剧本,如何确保它在每个主机上运行?
每当你改变你的Ansible游戏手册时,如果你使用的是Docker,你将必须更新你的Docker容器。 然后从Docker中,您可以使用推送您的更改。 如果您不使用Docker,则每次更改时都必须在所有受影响的服务器上重新运行您的Ansible操作手册。 你可能要考虑错开你的剧本的运行。 您可以在每台服务器上本地运行这些手册,也可以从客户端工作站远程运行。 请记住,如果从单个客户端工作站运行很多节点,则可能是不可行的,因为来自客户端的networking和CPU限制。
是否有机会根据angular色和可靠的库存自动为每个虚拟机创build防火墙规则?
是。 如果您使用Ansible,则可以使用模板在每个虚拟机上说configure iptables。