所以在我的生产环境中,我有一个带有8个CPU和40G内存的戴尔XS23机架,内含vmware esxi。 我之前分区的方式是2个API服务器(四核,8gig ram)2个数据库服务器相同的规格,等等。
这样做的理由是具有负载平衡以及复制,故障转移等,但都运行在单一硬件上。
正如你可以看到你添加的虚拟机越多,显然在实际的操作系统上会浪费更多的磁盘/ CPU / RAM,所以在这种情况下,Docker会非常有利。
现在我的问题是,我应该只创build一个运行所有Docker容器的大型服务器,还是应该有我的虚拟机,并在其中运行docker(因为Dockertypes的目的不同):由于Docker相当新颖,在网上find很多文档我正在诉诸ServerFault社区的一些想法。 谢谢!
虚拟化没有意义,除非你有一个非常明确的理由。 原因可能就是,给各种各样的人提供容器的根目录,等等。
如果一切都在你的控制之下,并且你不需要访问任何其他人,我会阻止任何types的virt,因为它增加了更多的CPU使用率 – 基于容器的模拟的开销不大,但是您必须为networking适配器设置混杂模式,这会增加CPU使用率。
许多应用程序可以通过UNIX套接字连接,这将有利于避免整个TCP事物。 从服务器的大小来看,我认为你已经购买/出租了一些严重的性能目的。
除非你有充分的理由,否则我不会去虚拟化它。 它只会给你的堆栈增加更多的复杂性,并且不会给Docker实际提供的实际故障转移带来太大的帮助。
从与朋友的交谈中,我得出结论:为了保护自己免受操作系统故障的影响,我确实需要某种冗余。 例如,如果我的esxi box将主机操作系统上一个坏分区上的一个虚拟机映射到内存/磁盘。
所以我正在考虑设置所有运行docker的2-n服务器。 他们每个人将主持一个单一的API和UIdocker的形象,他们将全部负载平衡。 现在我有了冗余以及docker工人的好处。