1. 概览

Apache CloudStack 是一个开源的基础设施即服务(IaaS)平台,用于在多种数据中心中统一管理计算、存储和网络资源。它最初由 Cloud.com 开发,后来被 Apache 基金会接纳。CloudStack 支持多种虚拟化平台,包括 KVM、VMware 和 XenServer,提供了简洁的 Web 界面和强大的 API 接口。无论是构建私有云还是公有云,CloudStack 都能提供灵活、可扩展的生产级基础设施。

在本文中,我们将深入了解 Apache CloudStack 的功能,以及它是如何与其他技术协同工作的。

2. Apache CloudStack 是什么?

Apache CloudStack 是一个开源平台,用于自动化部署、管理和配置虚拟化 IT 环境。

✅ 它作为云基础设施的控制中心,协调虚拟机、存储和网络资源,帮助构建可扩展的公有云和私有云。
CloudStack 用 Java 编写,包含一个管理服务器和轻量级代理,代理运行在每个虚拟化主机上,从而高效管理资源。

2.1. 虚拟化支持

CloudStack 的一大优势是其广泛的虚拟化支持:

  • KVM
  • VMware vSphere
  • XenServer
  • LXC

这种对多种虚拟化技术和容器的良好兼容性,使其能够适应多种基础设施环境。

2.2. 网络模型

在网络方面,CloudStack 提供两种模型:

  • 基础网络(Basic Networking):使用单一扁平网络,适合简单场景。
  • 高级网络(Advanced Networking):支持 VLAN 划分和与 SDN(如 Nicira NVP)集成。

2.3. 存储管理

CloudStack 将存储分为两个层级:

  • 主存储(Primary Storage):用于管理虚拟机磁盘卷,支持 NFS、iSCSI 等协议。
  • 二级存储(Secondary Storage):用于存放模板、ISO 镜像和快照,支持 NFS、S3、Swift 等后端。

此外,CloudStack 提供了基于 Web 的控制台和 REST 风格的 API,包括 EC2 兼容接口,便于迁移和自动化操作。

2.4. 核心功能

CloudStack 内置负载均衡、故障转移和多区域支持,可管理数以万计的服务器。例如,一家电商公司可以在节假日期间动态扩展虚拟机资源,这种灵活性使其在中小企业和大型企业中都广受欢迎。

2.5. 管理服务器

管理服务器运行在 Apache Tomcat 上,并使用 MySQL 数据库存储数据。
✅ 它负责组织所有操作,包括 IP 分配、虚拟机调度、存储管理、用户权限控制等。
在高可用场景中,可以通过负载均衡部署多个管理服务器。

2.6. 架构层级

CloudStack 的基础设施采用层级结构管理:

  • Region(区域):最高级别。
  • Zone(区域):代表物理数据中心,用于灾备和故障隔离。
  • Pod(机架组):由多个服务器机架组成,包含 Cluster。
  • Cluster(集群):运行相同虚拟化平台的主机集合,共享主存储,支持热迁移。
  • Host(主机):运行虚拟机的物理服务器。

这种结构使得分散的硬件资源可以被统一组织为逻辑单元。

3. 安装与配置

初次部署 Apache CloudStack 可能看起来有些复杂,但只要准备充分,过程是可控的。虽然完整的生产环境部署较为复杂,但对于测试或小型部署,可以参考官方快速安装指南进行简化设置。

3.1. 环境与需求

我们通常选择 Rocky Linux、AlmaLinux 或 Oracle Linux 等稳定发行版作为部署环境。

✅ 至少需要一个管理服务器和一个或多个虚拟化主机。
推荐使用 KVM,因为它广泛支持且易于配置。同时,服务器必须支持硬件虚拟化。

安装前先升级系统:

$ dnf -y upgrade

3.2. 网络配置

在安装 CloudStack 之前,需要配置静态 IP 并确保系统时间同步。

配置网络桥接:

$ nmcli connection add type bridge con-name cloudbr0 ifname cloudbr0
$ nmcli connection modify eth0 master cloudbr0
$ nmcli connection up eth0
$ nmcli connection modify cloudbr0 ipv4.addresses '172.16.10.2/24' ipv4.gateway '172.16.10.1' ipv4.dns '8.8.8.8' ipv4.method manual && nmcli connection up cloudbr0

⚠️ 设置主机名:

$ hostname --fqdn
$ hostnamectl set-hostname server.local --static

重启后生效:

$ reboot

SELinux 推荐设为 enforcing,但为了简化演示,我们设为 permissive:

$ setenforce 0

修改配置文件以持久化设置:

SELINUX=permissive
SELINUXTYPE=targeted

3.3. 时间同步

使用 chrony 进行时间同步:

$ dnf -y install chrony
$ systemctl enable chronyd
$ systemctl start chronyd

3.4. 存储配置

使用 NFS 配置主存储和二级存储:

安装 nfs-utils:

$ dnf -y install nfs-utils

配置 NFS 共享:

$ cat /etc/exports
/export/secondary (rw,async,no_root_squash,no_subtree_check)
/export/primary   (rw,async,no_root_squash,no_subtree_check)

创建目录:

$ mkdir -p /export/primary
$ mkdir /export/secondary

修改 domain 设置:

Domain = local

关闭防火墙以便测试:

$ systemctl stop firewalld
$ systemctl disable firewalld

启动 NFS 服务:

$ systemctl enable rpcbind
$ systemctl enable nfs-server
$ systemctl start rpcbind
$ systemctl start nfs-server

3.5. 数据库配置

安装 MySQL:

$ dnf -y install mysql-server

配置数据库参数:

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

启动并启用 MySQL:

$ systemctl enable mysqld
$ systemctl start mysqld

3.6. CloudStack 安装与配置

添加 CloudStack 仓库:

$ cat /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://download.cloudstack.org/centos/$releasever/4.20/
enabled=1
gpgcheck=0

安装管理组件:

$ dnf -y install cloudstack-management

初始化数据库:

$ cloudstack-setup-databases cloud:password@localhost --deploy-as=root

配置管理服务器:

$ cloudstack-setup-management

安装系统模板:

$ /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
  -m /export/secondary -u http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.1-x86_64-kvm.qcow2.bz2 -h kvm -F

3.7. KVM 配置与验证

安装 KVM agent:

$ dnf -y install cloudstack-agent

配置 QEMU 和 libvirt:

编辑 qemu.conf:

vnc_listen=0.0.0.0

编辑 libvirtd.conf:

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

启用 TCP 监听:

LIBVIRTD_ARGS="--listen"

重启服务:

$ systemctl restart libvirtd

3.8. 复杂部署建议

以上仅是基础部署,实际生产环境需考虑多节点、高可用、灾备等复杂场景。
推荐参考 Apache CloudStack 官方安装指南 获取详细指导。

4. 使用场景

许多组织使用 Apache CloudStack 构建云基础设施。例如:

CloudINFra 公司使用 CloudStack 管理基于 KVM 和 Ceph RBD 的大规模私有云。
CloudStack 原生支持 Ceph,实现了高效、可扩展的存储配置,无需额外插件。

✅ 该架构支持高并发负载,确保多个可用区之间的数据冗余和容错能力。
利用 CloudStack 的高级网络功能,CloudINFra 实现了租户隔离、动态 IP 分配和虚拟路由服务。
结合 Ansible 和 CloudStack REST API,实现基础设施的自动化部署。

5. 总结

Apache CloudStack 是一个成熟、可投入生产的云管理平台。
✅ 它支持多种虚拟化平台、高级网络配置和强大的存储管理功能,具备高度灵活性和可扩展性。
无论是构建测试环境还是全球数据中心,CloudStack 都能提供统一、高效的管理能力,而无需增加复杂性。


原始标题:Introduction to Apache CloudStack