1

所以这似乎是当今软件中的一个常见问题。许多公司似乎使用 AWS、Azure 或 Heroku 等云平台来解决这个问题。然而,对于需要私有云的数据安全来说,这些选项似乎不太发达。

详细地说,我的具体需求是管理独立于节点(物理/虚拟服务器)的应用程序。目前我们使用 Chef,这似乎不太适合这项任务。在 Chef 中,我需要在环境中的每个单独节点上都有一个运行列表。当我有一个依赖于许多不同服务的 SOA 应用程序时,出于显而易见的原因,我不想将其安装在同一节点上,Chef 无法将其提供给我。我必须手动完成。我必须在内部记录所有依赖项,并且在为每个节点创建运行列表时,必须有人做出决定。没有多节点类型配置选项(环境变量之外)或跨多个节点安装我的服务的自动方式。

这似乎是一个常见的问题,我不得不相信我只是错过了一些东西。肯定有一个工具可以让我比 Chef 更轻松地管理私有云上的 SOA 应用程序。

有人知道这样的工具吗?对我来说,Chef 如此受欢迎并且没有此功能似乎很疯狂。我想假设 Puppet 或其他一些工具可以,但与 Chef 不同,我想在深入尝试使用它之前先了解一下。

用厨师的术语浓缩我想要的东西:

我想要映射到封装应用程序的环境的角色。我想在 THE ENVIRONMENT 上运行安装,而不是在单个节点上运行。在内部,配置管理软件将对实际安装服务的节点做出某种明智的决定,并相应地更新服务依赖项(例如,通过环境变量)。

换句话说,我希望 CD 成为托管在私有云上的 SOA 应用程序的 CD;不是我与 Chef 一起使用的半手动、主要不是连续交付的技巧。

如果有任何来自 opscode 的人(或其他厨师迷),我很容易承认我可能没有使用 Chef 提供的所有功能,在这种情况下,我想知道目前使用它的人如何处理我的具体问题。

此外,如果重要的话,我所有的服务器都是 Windows 2008 R2 或 Windows 2012。

4

5 回答 5

5

这确实是一个常见问题,小道消息似乎表明 Opscode(我猜现在称为 Chef)已经意识到这一点并正在研究解决方案。希望这是我们将在 Chef 12 中看到的内容。

问题在于 Chef 是一个配置管理系统。它不是严格意义上的供应或编排产品。Knife 试图解决这个问题,但规模非常初级。其他产品,如 Ansible 和 Puppet,更有能力解决这个问题。但同样,即使它们也不是严格的编排产品,仍然不足。

我自己没有机会使用它,但您应该查看http://deis.io/。它是一个开源、轻量级的平台即服务,似乎可以解决编排问题。这可能是您正在寻找的。

另一种选择是使用https://github.com/coreos/etcd 之类的东西进行库存管理。它允许您拥有一个非常灵活的集中式系统库存 API,并且提供的不仅仅是 Chef 自己的搜索数据。有了它,您可以编写说明书来查找其他系统和服务并采取措施连接到它们。它开始变得笨拙,但是您始终可以让 Chef 执行 ssh 命令,该命令在远程实例上执行命令。

无论如何,只是一些建议。希望有帮助。

于 2013-12-10T17:57:27.160 回答
1

我没有在 Windows 中使用 Puppet,但 Puppet 与 Facter 捆绑在一起,它为自定义事实提供支持 - http://puppetlabs.com/blog/facter-part-1-facter-101

所有 facter 的变量都可用于 puppet 清单,因此您可以创建在不同环境中执行不同操作的运行列表。

此外,您提到了应用程序而不是节点的配置——这就是 Puppet 模块的用途,您可以轻松地创建自己的模块。这将允许不同的节点应用一些模块,忽略其他模块,甚至确保模块不存在。

于 2013-12-10T06:22:08.973 回答
1

我想在 THE ENVIRONMENT 上运行安装,而不是在单个节点上运行。在内部,配置管理软件将对实际安装服务的节点做出某种明智的决定,并相应地更新服务依赖项

您正在寻找一种 PAAS 解决方案(平台即服务)。厨师和木偶都不会给你这个。它们是主要为自动化基础设施部署而设计的工具。但是,它们可用于安装应用程序,因为您已经注意到它们采用了非常“基于节点”的方法。

我不知道任何适用于 Windows 的开源 PAAS 解决方案,因此我建议研究托管解决方案(如 Microsoft Azure)的商业替代方案。

于 2013-12-10T02:03:00.127 回答
0

我很惊讶没有提到 RightScale、Scalr 或 enStratus。这些解决方案中的大多数填补了 SOA 交付的空白,并具有根据需要灵活调整 SOA 部分的额外好处。

于 2014-01-20T21:32:44.167 回答
0

我知道这不是 100% 的胜利,但如果我正确理解您的问题,它会有所帮助。我们使用定制的食谱(显然),但具有角色意识。我的意思是如果我们启动一个新的应用程序服务器,我们的负载均衡器会自动更新新的服务器信息。您可以通过使用来实现这一点

appservers = search(:node, "role:applicationServer")

并对其进行定制以使其适合。

至于自动缩放,我们有自己的 python 脚本来处理它。

于 2014-08-14T07:31:14.290 回答