Docker:如何对大型服务器进行分区?

Docker:如何对大型服务器进行分区?

因此,我的生产环境中有一个配备 8 个 CPU 和 40G 内存的 Dell XS23 机架,以及 vmware esxi。我之前对其进行分区的方式是 2 个 API 服务器(四核,8GB 内存)2 个 DB 服务器,规格相同,等等。

这样做的原因是为了实现负载平衡以及复制、故障转移等,但所有这些都在单个硬件上运行。

正如您所看到的,您添加的虚拟机越多,显然在实际操作系统而不是应用程序上浪费的磁盘/CPU/RAM 就越多,因此 Docker 在这种情况下确实具有优势。

现在我的问题是,我是否应该创建一个运行所有 Docker 容器的大型服务器,还是应该保留我的虚拟机并在其中运行 Docker(这有点违背了 Docker 的初衷 :s)由于 Docker 相当新,我在网上找不到太多文档,所以我求助于 ServerFault 社区来寻求一些想法。谢谢!

答案1

除非有非常明确的理由,否则虚拟化是没有意义的。理由可能是将容器的 root 访问权限授予不同的人等等。

如果一切都在您的控制之下,并且您不需要授予任何人访问权限,我会阻止任何类型的虚拟化,因为它只会增加更多的 CPU 使用率 - 基于容器的仿真的开销并不多,但您必须为网络适配器设置混杂模式,这会增加 CPU 使用率。

许多应用程序可以通过 UNIX 套接字进行连接,这对于避免整个 TCP 问题非常有利。从服务器的大小来看,我认为您购买/租用它是为了一些重要的性能目的。

答案2

我不会费心去虚拟化它,除非你有充分的理由。它只会增加你的堆栈的复杂性,并且不会提供 Docker 尚未提供的实际故障转移功能。

答案3

通过与朋友的交流,我得出结论,我确实需要某种冗余来保护自己免受操作系统故障的影响。例如,如果我的 esxi 盒将其中一个虚拟机的内存/磁盘映射到主机操作系统上的坏分区上。

因此,我考虑设置 2-n 个服务器,所有服务器都运行 docker。每个服务器都将托管一个 API 和 UI docker 映像,并且它们都将进行负载平衡。现在我既拥有冗余,又享有 docker 的好处。

相关内容