扩展和容量规划的最佳实践:仅限虚拟机?虚拟机+容器?仅限容器?集群?其他?

扩展和容量规划的最佳实践:仅限虚拟机?虚拟机+容器?仅限容器?集群?其他?

(我找不到已经回答过的类似问题,但也许我没有使用好词,因为我是一名法国学生;))
我所寻找的最接近的答案是:可扩展 Web 应用程序硬件拓扑最佳实践但它并不能回答所有问题

我已经构建了一个小型私有云(Openstack),在其上运行 KVM VM,大多数时候每个域/网站一个 VM,为我的数十个网站和一些客户运行。
我计划测试我是否可以发展到“混合云”,让一些东西在我的云中运行,而另一些东西在 EC2 上运行,所以我想知道我的“做事方式”是否最适合我的使用。
这些虚拟机运行 CoreOS,然后运行不同的 Docker 服务(一个容器用于 Nginx,一个容器用于 pgsql,等等)。如果一项服务在某些方面开始变得“​​不足”,那么我要么创建一个更大的虚拟机,将旧虚拟机复制到更大的虚拟机并删除旧虚拟机,要么为需要的服务创建一个专用虚拟机(例如,第二个虚拟机专用于 Nginx 以处理更多连接)。

然而,我想知道我是否做错了。
我选择使用这个“模型”,因为我想强的不同域 / 客户端之间的隔离,因为我想回到过去,尝试一下并习惯 Docker,而且我发现 Docker 是快速部署服务最有效的方式之一。

我是否应该仅使用虚拟机(因此没有容器)每个服务一个虚拟机(而不是每个域一个虚拟机)?
或者我应该只使用容器吗分离不同的服务,并将它们混合在我的节点中运行?比如,几十个不同服务和不同客户端的容器?那么我如何有效地隔离不同的域/客户端?然后我如何扩展这些服务?只需添加更多节点?
或者我应该创建一个大型虚拟机或裸机集群,然后使用它们来创建一个大型 CoreOS 集群哪个应该能够通过添加更多裸机节点来增长?那么同样的问题也适用于容器。

抱歉,如果我的问题看起来太愚蠢或太新手或不适合,但我宁愿现在问,而不是等到退一步才问;)

欢迎提出任何建议:)

答案1

使用两个虚拟机完全没问题容器,尤其是在这种情况下。

虚拟机提供了一个既便宜又昂贵的安全隔离层: - 它的劳动力成本低廉,因为您不必非常努力地使用虚拟机实现良好的安全性; - 它的资源成本高昂,因为虚拟机的开销可能很大,特别是对于需要适量 RAM 的小型服务而言。

(“虚拟化税”可以被认为是一个小的常数;对于大型服务来说,这个常数可以忽略不计,但对于小型服务来说,它成为总占用空间的很大一部分。)

另一方面,容器为你提供了廉价而高效的软件隔离和部署方法(您可以并排部署多个容器而不必担心版本冲突)。

此外,如果您想实现混合云(即从私有云溢出到公共云),容器是一种非常简单的方法来连接两种环境,抽象它们的差异。

我的个人策略(假设我正确理解了您的需求)是使用虚拟机隔离租户,并依靠简单的私有云(OpenStack 或其他),在容器中部署,并根据需要在私有云和公共云之间移动这些容器。当然,您可以重新调整虚拟机(在任一云上)的尺寸以适应资源需求的波动。

相关内容