云计算和虚拟化

Skip to content

这是一段机器翻译的文本,可能包含错误!

云服务和虚拟化紧密相连:两者都涉及在不拥有所有硬件的情况下使用数据资源。但两者之间存在一些重要的区别。

什么是虚拟化?

虚拟化是指在同一台物理机器上运行多个“虚拟”机器。与其为 Web 服务器、数据库和文件服务器各自拥有独立的物理服务器,不如将这三者作为虚拟机器在同一台机器上运行。

使之成为可能的软件称为 hypervisor

类型 说明 示例
类型 1 (裸机) 直接在硬件上运行,没有常规操作系统在其下方 Proxmox, VMware ESXi
类型 2 (宿主) 在常规操作系统之上运行 VirtualBox, VMware Workstation

Type 1 vs. Type 2

  • Type 1 是我们在生产和服务器机房中使用的。Proxmox 直接运行在服务器上。
  • Type 2 是你在自己的电脑上用于测试的。VirtualBox 运行在 Windows 或 macOS 之上。

什么是虚拟机 (VM)?

VM 是在另一个操作系统内部运行的完整操作系统。它拥有自己的(虚拟)内存、CPU 和磁盘,但与其他 VM 共享物理硬件。

VM 的优点:

  • 隔离 - 每个 VM 都是独立的。如果一个 VM 崩溃,其他 VM 不受影响。
  • 灵活性 - 您可以在同一台机器上运行不同的操作系统(例如 Ubuntu 和 Windows Server)。
  • 快照/备份 - 您可以拍摄 VM 的快照,并在出现问题时回滚。
  • 资源利用率 - 具有大量 RAM 和 CPU 的物理机器可以运行许多 VM。

容器是什么?

容器比虚拟机轻量级。它们与宿主机共享操作系统内核,但运行在隔离的环境中。

属性 VM 容器
大小 大 (整个操作系统) 小 (仅应用程序和依赖项)
启动时间 分钟
隔离 强 (自己的操作系统) 好,但共享操作系统内核
用例 当您需要一个完整的操作系统时 单个应用程序和微服务
示例 Proxmox VM, VirtualBox Docker, Podman

Når bruker vi hva?

  • 使用 VM 的时机:当你需要一个完整的操作系统时,例如 Windows Server 或具有完全控制权的 Linux 服务器。
  • 使用 container 的时机:当你只需要运行一个应用程序时,例如 Web 服务器、数据库或 Grafana。

在实践中,我们经常同时使用两者:VM 作为 Docker 容器的主机。

云服务

云服务意味着其他人拥有并运营硬件,而您通过互联网租用所需的资源。与其购买和维护物理服务器,不如付费使用云中的虚拟机。

服务模型

存在三种主要的云服务模型:

模型 全名 你获得的 你自行管理的内容 示例
IaaS Infrastructure as a Service 虚拟机、网络和存储 操作系统、应用程序、配置 Azure VM, AWS EC2
PaaS Platform as a Service 一个运行你的代码的平台 仅应用程序 Azure App Service, Heroku
SaaS Software as a Service 通过浏览器使用的现成应用程序 无技术方面 Microsoft 365, Google Docs

一种简单的记忆方法

  • IaaS = 您租用一台空机器。您需要自行安装和配置所有内容。
  • PaaS = 您租用一个现成的环境。您只需要放入您的代码。
  • SaaS = 您租用一个现成的应用程序。您只需要登录并使用它。

交付模式

云服务可以通过多种方式提供:

模型 说明 示例
公共云 共享基础设施可供所有人使用 Azure, AWS, Google Cloud
私有云 专用的基础设施供一家企业使用 学校服务器机房中的 Proxmox
混合云 公共云和私有云的组合 一些服务在本地,一些在 Azure

VPS:一种常见的云解决方案

VPS(虚拟专用服务器)是最常见的 IaaS 解决方案之一。 您从云提供商处租用一台虚拟机,并对其拥有完全控制权,就像拥有自己的服务器一样。

典型用例:

  • 运行 Web 服务器
  • 设置 VPN 服务
  • 托管应用程序(例如 Flask + 数据库)
  • 在不冒硬件风险的情况下测试事物

流行的 VPS 提供商:

提供商 优点
Linode (Akamai) 简单、价格合理、优秀的指南
DigitalOcean 用户友好、良好的文档
Hetzner 价格实惠、欧洲(符合 GDPR)
Azure 与 Microsoft 生态系统集成

Kostnader i skyen

云服务需要付费,如果不注意,很快就会变得昂贵。 持续运行 24/7 的虚拟机比你使用后关闭的虚拟机成本更高。 始终检查价格并设置成本警报。

本地 vs. 云

许多企业使用本地服务器和云服务的组合。以下是一些需要考虑的因素:

因素 本地 (on-premises)
控制 完全控制硬件和数据 依赖于供应商
成本 初始投资巨大 每月持续成本
可扩展性 受物理硬件限制 可根据需要向上和向下扩展
维护 你需要自己修复所有问题 供应商处理硬件
隐私 你知道数据在哪里 数据可能存储在其他国家

Easy 任务 1 - 在您自己的机器上运行虚拟机

下载 VirtualBox (免费) 并尝试安装一个 Linux 发行版,例如 Ubuntu Desktop 或 Linux Mint。

  • 您选择为虚拟机分配多少 RAM 和 CPU?
  • 您是否注意到在虚拟机运行时您的电脑变慢?
  • 如果您尝试为虚拟机分配比您的机器更多的 RAM,会发生什么?

这让您很好地了解虚拟机如何共享物理机器的资源。

Easy 任务 2 - 使用 Docker 启动容器

如果您已安装 Docker(或可以访问安装了 Docker 的虚拟机),请尝试运行:

docker run -d -p 8080:80 nginx # 运行一个 Nginx 容器,并将容器的 80 端口映射到主机的 8080 端口

然后访问 http://localhost:8080 在浏览器中。你现在正在运行一个在容器中的 Web 服务器!将这花费的时间与设置一个完整的带有 Nginx 的虚拟机的时间进行比较。

Easy 任务 3 - 你已经在使用哪些云服务?

思考一下你在日常生活中使用的服务:

  • Microsoft 365 (Word, Teams, OneDrive) 是 SaaS
  • GitHub Pages 用于托管网站是 PaaS
  • 如果你在学校的 Proxmox 上创建虚拟机,实际上是 IaaS(仅限于本地)

你能将你使用的其他服务进行分类吗?

Easy 任务 4 - 你的数据在哪里?

前往 Microsoft Privacy Dashboard 并查看 Microsoft 存储的关于你的信息。 还要检查你使用的云服务的条款:

  • 数据存储在世界上的哪个位置?
  • 如果你删除你的帐户,会发生什么?
  • 你拥有你的数据,还是供应商拥有?

这些问题对于 GDPR 和隐私保护尤其重要。

总结

  • 虚拟化 允许您在同一硬件上运行多个服务,无论是作为虚拟机还是容器
  • 云服务 意味着其他人拥有硬件,您租用所需的资源
  • IaaS、PaaS 和 SaaS 描述了您需要承担多少责任
  • 在实践中,许多人使用 混合 解决方案,兼具本地和云服务
  • 本地与云之间的选择涉及控制、成本、可扩展性和隐私问题