利用 Linux 进行云计算:基础与实践
1. 云计算与虚拟化概述
传统计算机操作系统直接安装在硬件上,当需要更多内存、存储、处理能力或网络接口时,需关闭机器并物理添加这些组件。而如今,虚拟化技术让云计算成为可能。
虚拟化是将原本设计为物理对象的计算资源用虚拟对象表示的过程。例如,虚拟操作系统(虚拟机)不直接与硬件通信,而是与称为管理程序(hypervisor)的特殊配置主机计算机交互。这使得在一台物理计算机上可以运行数十甚至数百个虚拟机。
运行虚拟机有诸多优势:
- 可在同一计算机上运行多个不同类型的操作系统,如 Linux、BSD、Windows 等。
- 当主机计算机需要维护时,可将运行中的虚拟机迁移到其他管理程序,停机时间几乎可以忽略不计。
为支持跨多个管理程序的虚拟机,还可对其依赖的功能进行虚拟化,如虚拟网络和虚拟存储可跨越多个管理程序,确保虚拟机迁移后仍能使用相同的网络和存储资源。
2. Linux 在云计算中的应用概述
云计算将我们带入一个抽象和自动化的领域。在云环境中,安装系统时通常不是从物理 DVD 启动、擦除本地硬盘并直接在面前的计算机上安装 Linux,也不是登录已安装的系统并手动配置所需的软件和功能。
相反,是在云中的某个主机系统上安装到虚拟机或运行容器。看到的网络接口可能不是由物理交换机表示,而是存在于单台计算机或跨越多个管理程序的虚拟网络。
如今,云计算的每个软件方面都可以使用运行在 Linux 系统上的开源技术来实现。
3. 云计算的关键组件
3.1 云管理程序(计算节点)
在云计算中,为云用户提供服务的操作系统不直接运行在计算机硬件上,而是由管理程序将多个操作系统作为虚拟机运行。
根据云环境的不同,管理程序也被称为计算节点、工作节点或主机。由于管理程序通常是通用设备(一个地点可能设置数十或数百个管理程序),Linux 是直接在硬件上作为管理程序运行的操作系统的合理选择。
常见的虚拟化技术有:
-
基于内核的虚拟机(KVM)
:大多数 Linux 发行版实现的基本虚拟化技术,使 Linux 系统成为管理程序。Ubuntu、Red Hat Enterprise Linux、Fedora、CentOS 等许多 Linux 系统都支持 KVM。
-
Xen
:可替代 KVM 使 Linux 系统成为管理程序的技术,比 KVM 出现得更早,得到了 Citrix Systems 和 Oracle 等产品的支持。
3.2 云控制器
由于云配置可能包括多个管理程序、存储池、多个虚拟网络和许多虚拟机,需要集中化工具来管理和监控这些功能。可以使用图形和基于命令的工具来控制云环境。
- 虚拟机管理器(virt - manager)GUI 和 virsh 命令 :虽不被视为完整的云控制器,但可用于管理小型类云环境。通过 virt - manager 可以了解如何跨多个管理程序管理多个虚拟机,以及如何处理虚拟网络和共享存储池。
- 完整的云平台控制器 :如 Red Hat OpenStack 平台及其上游 RDO 项目,为管理虚拟机和所有相关支持功能提供灵活且可扩展的云环境。Red Hat 虚拟化(RHV)的 RHV Manager 也提供许多类似功能。
3.3 云存储
将操作系统和应用程序迁移到云环境时,会对数据存储提出新要求。为使虚拟机能够迁移到其他管理程序上运行,其存储必须能从新的管理程序访问。云存储需求包括虚拟机的后端存储、用于启动虚拟机的镜像以及存储云本身信息的数据库。
- NFS 共享 :创建共享存储最简单的方法,通过创建 NFS 共享并在多个管理程序的相同挂载点挂载来实现。
- 更强大的共享存储 :如 iSCSI 或光纤通道,可处理磁盘故障并提供更好的性能,适用于提供关键服务的云。
- 开源存储项目 :Ceph 用于管理块和对象存储,在云环境中很受欢迎;GlusterFS 是一种横向扩展文件系统,常用于云环境。
3.4 云认证
为限制用户对云资源的使用量,并可能对使用情况进行跟踪和收费,需要认证机制。无论是使用云功能的用户还是被允许管理云功能的用户,认证都是必要的。
云平台项目有时允许连接集中化认证机制来验证和授权云用户,如 Kerberos、Microsoft Active Directory 等。在 Linux 中,Identity, Policy, and Audit (IPA) 软件提供了一套完整的认证功能,可在企业云平台中使用。
3.5 云部署和配置
管理大型云基础设施时,不希望每次添加管理程序或其他网络节点都要手动进行图形化安装。如今,许多工具可以像重启计算机并让其启动到预配置的安装程序一样简单地部署和配置 Linux 系统。
- PXE 服务器和 Kickstart 文件 :可通过网络从网卡自动启动 Linux 安装程序,并确定完成安装所需的所有答案。
- 自动化工具 :如 Puppet、Chef 可用于配置、监控和更新系统;Vagrant 可在虚拟机中部署整个工作环境;Ansible 用于自动化 IT 基础设施和其上运行的应用程序。
3.6 云平台
- 私有云 :如果想在组织内实现自己的私有云,开源的 OpenStack 平台可能是最受欢迎的选择,它在配置和使用方面提供了极大的灵活性和强大功能。Red Hat 虚拟化(RHV)也是一个受欢迎的云平台,可从简单的 RHV Manager 和一两个管理程序开始,逐步扩展云平台。
- 公共云 :基于开源技术运行所需操作系统的公共云提供商包括 Amazon Web Services、Google Cloud Platform 和 Rackspace 等。
4. 尝试基本云技术
为帮助从基础层面理解云技术,下面通过使用三台计算机创建一个包含以下组件的设置:
-
管理程序
:允许在其上运行多个计算机系统(虚拟机)的软件组件。云基础设施可能有数十或数百个管理程序运行,可能运行数千个虚拟机。
-
虚拟机
:在 Linux 管理程序上运行的虚拟机可以是相同类型的 Linux 系统、不同的 Linux 系统、Windows 系统或与管理程序运行的硬件兼容的任何其他类型的系统。
-
共享存储
:管理程序为虚拟机提供的存储通常在一组管理程序之间共享,这允许一组管理程序共享用于安装或启动虚拟机的镜像集,使同一组虚拟机可以在该组中的任何管理程序上运行,甚至在不关闭虚拟机的情况下迁移到不同的管理程序。
该设置允许以以下方式使用虚拟机:
- 在管理程序上安装新的虚拟机。
- 设置虚拟机的功能。
- 登录并使用在管理程序上运行的虚拟机。
- 将运行中的虚拟机迁移到其他管理程序。
涉及的技术包括:
-
基于内核的虚拟机(KVM)
:允许虚拟机与 Linux 内核交互的基本内核技术。
-
QEMU 处理器模拟器
:系统上每个活动虚拟机运行一个 qemu 进程,为每个虚拟机提供在物理硬件上运行的假象。
-
Libvirt 服务守护进程(libvirtd)
:每个管理程序上运行一个 libvirtd 服务,监听启动、停止、暂停和管理虚拟机的请求,这些请求可以来自管理虚拟机的应用程序(如 virt - manager 或 OpenStack Dashboard)或直接与 libvirt 应用程序编程接口通信的自定义应用程序。
-
虚拟机管理器(virt - manager 命令)
:用于管理虚拟机的 GUI 工具,除了启动和停止虚拟机外,还可以以不同方式安装、配置和管理虚拟机。也可以使用 virsh 命令在命令行上传递选项来处理虚拟机。
-
虚拟化查看器(virt - viewer 命令)
:在桌面上启动虚拟机控制台窗口,可通过该窗口从控制台窗口连接到所选虚拟机的桌面或命令行界面。
5. 设置小型云
使用三台连接在网络上的物理计算机可以说明构建自己的云所需的一些基本概念。这三台运行 Fedora 30 的计算机和连接它们的网络配置如下:
| 组件 | 配置说明 |
| ---- | ---- |
| 网络 | 建立高速有线网络连接三台计算机,快速的网络连接对虚拟机迁移至关重要。每个管理程序还配置了网络桥接,使每个虚拟机可以直接从网络上的 DHCP 服务获取 IP 地址。 |
| 管理程序 | 两台计算机配置为管理程序,在 Fedora 30 中,基本的管理程序技术是基于内核的虚拟机(KVM),实际的虚拟机由 libvirtd 服务管理。 |
| 存储 | 一台计算机配置为在两个管理程序之间提供共享存储。为简单起见,使用 NFS 创建共享存储,在生产环境中,iSCSI 或光纤通道是更好的解决方案。 |
6. 配置管理程序
以下是将两台物理计算机安装 Fedora 30 并配置为运行 libvirtd 服务的 KVM 主机的步骤:
6.1 获取 Linux 软件
- 访问 Get Fedora 页面(https://getfedora.org)下载 Fedora 30。这里选择下载 Fedora 30 64 位工作站版 DVD ISO。如果有更高版本的 Fedora 可用,也可以使用。
- 使用任何可用的 DVD 刻录应用程序将镜像刻录到 DVD,或通过其他方式使镜像可用于安装(如 PXE 启动)。
6.2 检查计算机
在 Fedora 30 中用作管理程序的计算机需要满足一些要求,在开始安装前应检查以下方面:
-
支持虚拟化
:通过查看 CPU 中设置的标志来检查虚拟化支持。
-
内存
:计算机必须有足够的 RAM,不仅要运行主机操作系统,还要为预期在系统上运行的每个虚拟机提供足够的内存。
-
处理能力
:每个虚拟机及其内部运行的应用程序都会消耗处理能力。
为检查计算机的可用功能是否满足要求,启动 Linux 实时 CD 或 DVD,打开终端窗口,输入以下命令:
# cat /proc/cpuinfo | grep --color -E "vmx|svm|lm"
运行上述命令后,如果输出显示
lm
说明这是一台 64 位计算机,若出现
vmx
表示 Intel 芯片支持虚拟化功能;若 CPU 是支持虚拟化的 AMD 芯片,会显示
svm
。这些设置表明该计算机可以用作管理程序。
当在主机上开始运行虚拟机时,内存通常是瓶颈。对于内存需求,必须将主机所需的内存与每个虚拟机所需的内存相加。
mermaid 流程图如下:
graph LR
A[获取 Linux 软件] --> B[检查计算机]
B --> C{是否满足要求}
C -- 是 --> D[安装 Fedora 30 并配置为 KVM 主机]
C -- 否 --> E[调整或更换计算机]
E --> B
利用 Linux 进行云计算:基础与实践
7. 安装新虚拟机
在配置好管理程序后,就可以开始在其上安装新的虚拟机了。以使用 Virtual Machine Manager(virt - manager)为例,步骤如下:
1. 打开 virt - manager 工具,在界面中找到“创建新虚拟机”的选项。
2. 选择安装方式,可以选择从本地 ISO 镜像、网络安装源等方式安装。如果选择本地 ISO 镜像,需要指定之前下载好的 Fedora 30 或其他系统的 ISO 文件路径。
3. 配置虚拟机的硬件资源,包括内存大小、CPU 核心数、磁盘空间等。根据之前对计算机硬件的评估,合理分配资源,避免因资源不足导致虚拟机运行缓慢。
4. 设置网络连接方式,一般可以选择使用桥接网络,这样虚拟机可以直接从网络上的 DHCP 服务获取 IP 地址,与外部网络进行通信。
5. 完成配置后,点击“完成”开始安装虚拟机。安装过程可能需要一些时间,根据系统的不同,可能需要手动进行一些配置,如选择安装语言、分区等。
8. 设置虚拟机特性
安装好虚拟机后,可以对其进行一些特性设置,以满足不同的使用需求。
-
设置启动顺序
:可以在 virt - manager 中选择虚拟机的启动顺序,如优先从硬盘启动、从 CD/DVD 启动等。这在需要重新安装系统或进行系统修复时非常有用。
-
添加或删除硬件设备
:可以根据需要为虚拟机添加或删除硬盘、网卡、USB 设备等。例如,如果需要为虚拟机增加存储容量,可以添加一个新的虚拟硬盘。
-
设置共享文件夹
:为了方便在主机和虚拟机之间共享文件,可以设置共享文件夹。在 virt - manager 中配置共享文件夹的路径和权限,然后在虚拟机中挂载该共享文件夹。
9. 登录和使用虚拟机
虚拟机安装并设置好后,就可以登录并使用了。
-
使用 virt - viewer 登录
:在主机上打开终端,输入
virt - viewer <虚拟机名称>
命令,即可打开虚拟机的控制台窗口。在控制台窗口中,可以像操作物理计算机一样登录虚拟机的系统,输入用户名和密码。
-
远程登录
:如果虚拟机已经获取了 IP 地址,也可以使用 SSH 等远程登录工具从其他计算机登录到虚拟机。例如,在 Linux 系统中,可以使用
ssh <用户名>@<虚拟机 IP 地址>
命令进行远程登录。
10. 迁移运行中的虚拟机
当管理程序出现过载或需要进行维护时,迁移运行中的虚拟机是非常有用的。以下是迁移虚拟机的步骤:
1. 确保目标管理程序已经配置好,并且具有足够的资源来运行虚拟机。
2. 在 virt - manager 中选择要迁移的虚拟机,右键点击选择“迁移”选项。
3. 在迁移设置中,选择目标管理程序的地址和迁移方式。迁移方式可以选择实时迁移或离线迁移,实时迁移可以在不中断虚拟机运行的情况下进行迁移,但需要较高的网络带宽和系统资源。
4. 点击“开始迁移”,等待迁移过程完成。迁移完成后,虚拟机将在目标管理程序上继续运行。
11. 云存储的扩展与优化
在小型云环境中,随着虚拟机数量的增加和数据量的增长,云存储可能需要进行扩展和优化。
-
增加存储容量
:可以通过添加新的存储设备或扩展现有存储设备的容量来增加存储容量。例如,如果使用 NFS 共享存储,可以在存储服务器上添加新的硬盘,并重新配置 NFS 共享。
-
优化存储性能
:可以通过使用 RAID 技术提高存储的读写性能和可靠性。例如,使用 RAID 1 可以实现数据的镜像备份,使用 RAID 5 可以在保证一定数据冗余的情况下提高存储性能。
-
使用存储池
:将多个存储设备组合成一个存储池,便于管理和分配存储资源。在 virt - manager 中可以创建和管理存储池,将虚拟机的磁盘文件存储在存储池中。
12. 云环境的监控与维护
为了确保云环境的稳定运行,需要对云环境进行监控和维护。
-
监控资源使用情况
:可以使用系统自带的监控工具或第三方监控软件来监控管理程序和虚拟机的资源使用情况,如 CPU 使用率、内存使用率、磁盘 I/O 等。例如,在 Linux 系统中,可以使用
top
、
htop
等命令查看系统资源使用情况。
-
定期备份数据
:对虚拟机的数据进行定期备份,以防止数据丢失。可以使用备份软件将虚拟机的磁盘文件备份到外部存储设备或其他服务器上。
-
更新系统和软件
:及时更新管理程序和虚拟机的操作系统和软件,以修复安全漏洞和提高系统性能。可以使用系统自带的更新工具或包管理器进行更新。
13. 总结
通过以上步骤,我们可以利用 Linux 搭建一个小型的云环境,实现虚拟机的创建、管理、迁移等功能。在实际应用中,可以根据不同的需求和场景,选择合适的云平台和技术,进一步扩展和优化云环境。同时,要注意云环境的安全和性能,定期进行监控和维护,确保云环境的稳定运行。
列表如下:
- 云环境监控和维护的要点:
- 监控资源使用情况
- 定期备份数据
- 更新系统和软件
表格如下:
| 云存储扩展与优化方法 | 说明 |
| ---- | ---- |
| 增加存储容量 | 添加新的存储设备或扩展现有存储设备容量 |
| 优化存储性能 | 使用 RAID 技术提高读写性能和可靠性 |
| 使用存储池 | 将多个存储设备组合成存储池便于管理 |
mermaid 流程图如下:
graph LR
A[安装新虚拟机] --> B[设置虚拟机特性]
B --> C[登录和使用虚拟机]
C --> D[迁移运行中的虚拟机]
D --> E[云存储扩展与优化]
E --> F[云环境监控与维护]
超级会员免费看
1433

被折叠的 条评论
为什么被折叠?



