(我找不到一个已经回答了的类似问题,但是因为我是法国学生,所以我可能不会使用这些好话)
我正在寻找的最接近的答案是: 可扩展的Web应用程序硬件拓扑最佳实践,但它并不能回答所有问题
我build立了一个小型私有云(OpenStack),我运行KVM虚拟机,大部分时间是每个域/网站一个虚拟机,为我的几十个网站和一些客户端运行。
我打算testing一下,如果我可以演变成一个“混合云”,有一些东西在我的云中运行,还有一些在EC2上,所以我想知道我的“做法”是否最适合我的使用。
那些虚拟机运行CoreOS,然后运行不同的Docker服务(一个Nginx容器,一个容器pgsql等)。 如果一个服务开始太“短”,那么我要么创build一个更大的虚拟机,将旧的虚拟机复制到更大的虚拟机并删除旧的虚拟机,要么为有需要的服务创build专用虚拟机(例如第二个VM专用于Nginx来处理更多的连接)。
但是,我想知道如果我不做错事。
我select使用这个“模型”,因为我想要在不同的域/客户端之间进行强有力的隔离,因为我希望在这些日子里能够更好地使用Docker,并且因为我发现Docker是最有效的方法之一快速部署服务。
我宁愿只使用虚拟机 (所以没有容器)与每个服务一个虚拟机(而不是每个域的一个虚拟机)?
还是应该使用容器来分隔不同的服务,并将它们混合在一起运行在我的节点中? 就像几十个不同的服务和不同客户的集装箱一样? 那么我怎样才能有效地隔离不同的域名/客户呢? 那我该如何扩展这些服务呢? 只需添加更多的节点?
还是应该创build一个大型虚拟机或裸机的集群,然后用它们来创build一个大的CoreOS集群 ,这个集群应该能够增加更多的裸机节点? 然后是容器适用的同样的问题。
对不起,如果我的问题看起来太愚蠢或新手或不适合,但我更喜欢现在问,而不是退后一步是否太迟;)
任何build议欢迎:)
ÿ
使用虚拟机和容器都是很好的,特别是在这种情况下。
虚拟机提供了一个安全的隔离层,既便宜又昂贵: – 它在人工上很便宜,因为您不必非常努力地使用虚拟机来实现良好的安全性。 – 资源昂贵,因为虚拟机的开销可能很大,特别是对于需要适量RAM的小型服务。
(“虚拟化税”可以被认为是一个小的常数;对于大型服务来说,这个常数是微不足道的,但是对于小型服务来说,它成为总占用空间的一个重要部分)。
另一方面,容器为您提供了一种便宜且高效的软件隔离和部署方法(就您可以并排部署多个容器而言,无需担心冲突的版本)。
而且,如果你想实现混合云(即从私有云到公众云的溢出),容器是一个桥接两个环境,抽象它们之间差异的非常简单的方法。
我个人的策略(假设我正确地理解你的需求)将孤立租户与虚拟机,并依靠简单的私有云(OpenStack或其他),部署在容器中,并将这些容器之间的私有云和公众云如有需要。 您当然可以重新调整虚拟机(在任一云上)以适应资源需求的波动。