应用程序部署策略——虚拟机与容器

目录

1.简介

2.部署用例

3.部署选项

3.1单服务器

3.2虚拟机

3.3容器

4.资源利用比较

5.虚拟机和容器的比较

6.结论


本文的范围是比较可用于我们的应用程序部署用例的各种部署模型。本文假设读者将具备虚拟机,容器和管理程序的基本知识。

1.简介

有一系列技术可用于将应用程序部署到生产环境,选择正确的策略是特定用例的重要决策。在本文中,我们将主要关注为内部构建的应用程序选择正确的部署模型。

2.部署用例

让我们考虑两个应用程序,文件下载器文件处理器。功能详细信息如下表所述:

https://www.codeproject.com/KB/architecture/1277634/DeploymentUsecase.png

请注意,我们有一个具有100GB HDD16 GB RAM4个核心处理器的物理服务器

我们的目标是将两个应用程序部署到此服务器,以实现基础架构的最佳利用和更好的性。

3.部署选项

下图显示了可供我们使用的各种部署选项。

https://www.codeproject.com/KB/architecture/1277634/DeploymentOptions.png

3.1单服务器

在此选项中,两个应用程序都部署在单个可用服务器中。

3.2虚拟机

在此选项中,我们将使用管理程序(Hypervisor)将可用服务器拆分为两个虚拟机。管理程序(Hypervisor),也称为虚拟机监视器/管理程序,是一个创建和运行虚拟机的过程。管理程序允许一台主机通过虚拟共享其资源(如内存和进程)来支持多个来宾VM(虚拟机)

有两种类型的管理程序如下:

类型1 - 直接在系统硬件上运行,例如,适用于MacOSHyper Kit,适用于WindowsHyper-V和适用于LinuxKVM

类型2(托管) - 在提供虚拟化服务的主机操作系统上运行。示例:VirtualBoxVMWare

上图使用类型1 Hypervisor

每个VM都有客户操作系统,我们计划在VM1中部署文件下载器,在VM2中部署“ 文件处理器 ”

由于File Downloader应用程序消耗更多内存,因此与VM2相比,我们需要为VM1分配更多内存限制。

由于文件处理器应用程序消耗更多的处理器时间,因此与VM1相比,我们需要为VM2分配更多的CPU核心限制。

通过这种方式,我们可以最佳地利用服务器资源。

3.3容器

在此选项中,我们将在现有操作系统之上安装容器引擎(例如,Docker Engine)。我们将创建两个容器来托管File DownloaderFile Processor应用程序。

由于File Downloader应用消耗更多内存,因此与Container 2相比,我们需要为Container 1分配更多内存限制。

由于File Processor应用程序消耗更多处理器时间,因此与容器1相比,我们需要为容器2分配更多CPU核心限制。

通过这种方式,我们可以最佳地利用服务器资源。

4.资源利用比较

下图显示了我们到目前为止讨论的所有三个部署选项的资源利用率图表。

https://www.codeproject.com/KB/architecture/1277634/ResourceUtilization.png

根据利用率图表,我们注意到以下观察结果:

  1. 单个服务器部署提供的性能很差,因为两个应用程序共享相同的资源
  2. 虚拟机和容器部署都提供了几乎相同的性能。
  3. 虚拟机部署消耗更多资源。
  4. 单服务器和容器部署都提供了几乎相同的资源利用率。

5.虚拟机和容器的比较

下表显示了虚拟机和基于Container的部署之间的比较:

SL

虚拟机

容器

1

重量大,性能有限

重量轻,性能提高

2

每个VM都在自己的操作系统中运行,无法在普通服务器上运行更多虚拟机

所有容器共享主机的相同内核,并且可以在普通服务器上运行更多容器

3

虚拟机需要几分钟才能启动

容器需要几毫秒才能启动

4

浪费资源 - 每个VM需要更多空间和内存(GB条款)

节省资源 - 每个容器需要更少的空间和内存(MB条款)

硬件级虚拟化需要更多操作系统许可证和成本

操作系统虚拟化,只需要一个操作系统许可证并降低成

6

VM正在运行物理文件的实例(.VMX.VMDK

Container正在运行Container Image的实例

7

每个VM都有自己的虚拟网络适配器,IP和端口

每个Container都有自己的虚拟网络适配器,IP和端口

8

虚拟机具有可扩展性,并具有专用磁盘空间,核心和内存分配

容器是可扩展的,并带有专用磁盘空间,核心和内存分配

9

从另一个VM无法看到一个VM中的进程

无法从另一个Container中看到一个Container中的进程

10

每个VM都有自己的根文件系统

每个Container都有自己的根文件系统

6.结论

基于各种部署选项,资源利用率图表以及虚拟机、容器之间的比较,对于我们的用例,基于容器的部署选项为我们提供了具有良好性能的经济高效的解决方案。

 

原文地址:https://www.codeproject.com/Articles/1277634/Application-Deployment-Strategy-Virtual-Machine-vs

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/87925505