目录
本文的范围是比较可用于我们的应用程序部署用例的各种部署模型。本文假设读者将具备虚拟机 , 容器和管理程序的基本知识。
1.简介
有一系列技术可用于将应用程序部署到生产环境 , 选择正确的策略是特定用例的重要决策。在本文中 , 我们将主要关注为内部构建的应用程序选择正确的部署模型。
2.部署用例
让我们考虑两个应用程序 ,“文件下载器 ” 和“文件处理器”。功能详细信息如下表所述 :
请注意 , 我们有一个具有 100GB HDD,16 GB RAM 和4个核心处理器的物理服务器。
我们的目标是将两个应用程序部署到此服务器 , 以实现基础架构的最佳利用和更好的性。
3.部署选项
下图显示了可供我们使用的各种部署选项。
3.1单服务器
在此选项中 , 两个应用程序都部署在单个可用服务器中。
3.2虚拟机
在此选项中 , 我们将使用管理程序 (Hypervisor) 将可用服务器拆分为两个虚拟机。管理程序 (Hypervisor), 也称为虚拟机监视器/ 管理程序 , 是一个创建和运行虚拟机的过程。管理程序允许一台主机通过虚拟共享其资源 ( 如内存和进程 ) 来支持多个来宾 VM( 虚拟机)
有两种类型的管理程序如下 :
类型 1 – 直接在系统硬件上运行 , 例如 , 适用于 MacOS 的Hyper Kit, 适用于 Windows 的Hyper-V和适用于 Linux 的KVM。
类型 2( 托管 ) – 在提供虚拟化服务的主机操作系统上运行。示例 :VirtualBox和VMWare
上图使用类型1 Hypervisor。
每个 VM 都有客户操作系统 , 我们计划在 VM1 中部署 “ 文件下载器 ”, 在VM2 中部署 “ 文件处理器”。
由于 “File Downloader” 应用程序消耗更多内存 , 因此与 VM2 相比 , 我们需要为 VM1 分配更多内存限制。
由于 “ 文件处理器 ” 应用程序消耗更多的处理器时间 , 因此与 VM1 相比 , 我们需要为 VM2 分配更多的 CPU 核心限制。
通过这种方式 , 我们可以最佳地利用服务器资源。
3.3容器
在此选项中 , 我们将在现有操作系统之上安装容器引擎 ( 例如 ,Docker Engine)。我们将创建两个容器来托管 “File Downloader” 和“File Processor”应用程序。
由于 “File Downloader” 应用消耗更多内存 , 因此与 Container 2 相比 , 我们需要为 Container 1 分配更多内存限制。
由于 “File Processor” 应用程序消耗更多处理器时间 , 因此与容器 1 相比 , 我们需要为容器 2 分配更多 CPU 核心限制。
通过这种方式 , 我们可以最佳地利用服务器资源。
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
原文链接:https://blog.csdn.net/mzl87/article/details/87925505