Skip to main content

云托管简介

作者 Josh Barnett

导言

云托管是一种使用在线虚拟服务器的方法,可以根据需要创建、修改和销毁虚拟服务器。云服务器由托管该服务器的物理环境来分配 CPU 内核和内存等资源,并且云服务器可以配置任何操作系统和配套软件。云托管可用于托管网站、分发基于 Web 的应用程序或其他服务。 在本指南中,我们将介绍云托管涉及的一些基本概念,包括虚拟化的工作原理、虚拟环境中的组件以及与其他常见托管方法的比较。

“云”是什么?

“云”是一个常见的术语,指的是可供公众使用的互联网访问的服务器,使用方式可能是付费租赁,或作为软件或平台服务的一部分来使用。基于云的服务可以有多种形式,包括网络托管、文件托管和共享,以及软件分发。“云”也可以指云计算,即将一项任务“透明地”分布在多个服务器上。云计算不是在一台强大的机器上运行一个复杂的进程,而是将任务分布在许多小的节点上。

虚拟化的工作原理

云主机环境被分解成两个主要部分:一部分是应用程序和网站可以托管的虚拟服务器,一部分是管理虚拟服务器的物理主机。虚拟化使云托管成为可能,因为主机和虚拟服务器之间的关系提供了其他托管方式所不具备的灵活性和扩展性。

虚拟服务器

今天最常见的云主机形式是使用虚拟私人服务器(virtual private server),即VPS。VPS 是一个虚拟服务器,它就像一个真正的计算机一样,有自己的操作系统。虽然所有虚拟服务器共享主机分配给它们的资源,但它们在实践中是完全隔离的,因此对一个 VPS 的操作不会影响到其他的 VPS。 虚拟服务器是由物理主机的管理程序部署和管理的。每个虚拟服务器都有一个由管理程序安装的操作系统,该系统可供用户使用。对于实际使用而言,虚拟服务器用起来与专门的物理服务器是相同的,尽管虚拟服务器需要与同一主机上的其他服务器共享物理硬件资源。

主机

资源是由虚拟服务器所在的物理服务器分配给它的。主机使用一个叫做“管理程序(hypervisor)”的软件层来部署、管理和授予资源给它所控制的虚拟服务器。“管理程序”这一术语也经常用于指管理程序(及其虚拟服务器)所安装到的物理主机。 当虚拟服务器启动时,主机负责为其分配内存、CPU 内核和网络连接。在虚拟 CPU 核心和物理核心之间调度进程是管理程序的一个持续存在的职责,因为多个虚拟服务器可能利用同一个物理核心。不同的管理程序在进程调度和资源共享方面有着细微差别。

管理程序

目前有几种常见的管理程序可用于云主机。这些不同的虚拟化方法有一些关键的区别,但它们都提供了主机所需的工具,可以根据需要部署、维护、移动和销毁虚拟服务器。 KVM是“基于内核的虚拟机(Kernel-Based Virtual Machine)”的简称,是一种内置于 Linux 内核的虚拟化基础设施。当激活时,这个内核模块会将 Linux 机器变成一个管理程序,允许它开始托管虚拟服务器。这种方法与其他管理程序通常的工作方式不同,因为KVM不需要创建或模拟用于虚拟主机的内核组件。 Xen 是最常见的管理程序之一。与 KVM 不同,Xen 使用自己的微内核,它提供了支持虚拟服务器所需的工具,而无需修改主机的内核。Xen 支持两种不同的虚拟化方法:半虚拟化(paravirtualization),它跳过了模拟硬件的需求,但需要对虚拟服务器的操作系统进行特殊修改;以及硬件辅助虚拟化(也称 HVM),它使用特殊的硬件功能来有效地模拟虚拟服务器,以使用未经修改的操作系统。2006年左右,HVM 开始在消费类 CPU 上普及,使得大多数台式机和笔记本电脑在运行虚拟机或基于微内核的容器(如通过Docker)时能达到类似的性能。 ESXi 是 VMware 提供的一个企业级管理程序。ESXi 的独特之处在于,它不要求主机有一个底层操作系统。这被称为“第一类”管理程序,由于在硬件和虚拟服务器之间没有“中介”,因此效率极高。对于像 ESXi 这样的第一类管理程序,不需要在主机上加载操作系统,因为管理程序本身就充当了操作系统。 Hyper-V 是最流行的虚拟化 Windows 服务器的方案之一,并可作为 Windows 服务器的一个系统服务使用。这使得 Hyper-V 成为在 Windows 软件环境中工作的开发者的普遍选择。现代版本的 Windows 包含了Hyper-V,不过 Hyper-V 也可以作为独立的服务器使用,不需要安装现有的Windows 服务器。WSL2 是 Linux 的 Windows子系统,是通过 Hyper-V 实现的。

为什么选择云托管?

虚拟化所提供的功能很适合云托管环境。虚拟服务器可以配置各种硬件资源分配,并且通常可以随着需求的变化而添加或删除资源。一些云主机可以将一个虚拟服务器从一个管理程序移动到另一个管理程序,几乎没有停机时间,或者在节点故障的情况下复制服务器作为冗余使用。

自定义

开发人员通常喜欢在 VPS 中工作,因为他们对虚拟环境有控制权。大多数运行 Linux 的虚拟服务器默认提供对 root(管理员)账户或 sudo 权限的访问,使开发者有能力安装和修改他们需要的任何软件。 开发者从操作系统开始就可以进行自由选择。大多数管理程序能够承载几乎所有的客户操作系统,从 Linux 和 BSD 等开源软件到 Windows 等专有系统。之后,开发人员可以开始安装和配置他们正在进行的任何工作所需的构建模块。云服务器的配置可能包括一个 web 服务器、数据库或一个已经开发并准备发布的应用程序。

可扩展性

云服务器的扩展能力非常灵活。扩展方法分为两大类:水平扩展和垂直扩展。大多数托管方法可以以其中一种方式进行扩展,但云托管的独特之处在于它能够同时进行水平和垂直扩展。这是由于云服务器所建立的虚拟环境:由于云服务器的资源属于一个更大的物理池,且这些资源是该池的分配部分,因此这些资源可以被调整或复制到其他管理程序。 横向扩展,也被称为“向外扩展”,是向集群系统添加更多节点的过程。这可能包括添加更多的网络服务器以更好地管理流量,在一个区域添加新的服务器以减少延迟,或添加更多的数据库工作者以提高数据传输速度。 垂直扩展,也被称为“向上扩展”,是指用额外的资源来升级一台服务器。这可能指扩大可用内存,分配更多的 CPU 核心,或进行其他一些增加服务器容量的升级。这些升级通常会为额外的软件实例(如数据库软件)在该服务器上运行铺平道路。当前,横向扩展还不够节约成本,因此纵向扩展是应对不断增长的需求的实际举措。 有了云托管,开发人员可以根据他们的应用需求进行扩展——可以通过部署额外的 VPS 节点进行扩展,通过升级现有的服务器进行扩展,或者在服务器需求急剧增加时同时进行两种扩展。

结语

到现在为止,你应该对云托管的工作原理有所了解,包括管理程序和它们所负责的虚拟服务器之间的关系,以及云托管与其他常见托管方式的比较。有了这些信息,你就可以根据自己的需要选择最好的托管方式。