目录
什么是云计算
云计算的服务模型
OpenStack概述
OpenStack一键部署
使用packstack一键离线部署OpenStack
通过 Dashboard体验OpenStack功能
创建云主机
什么是云计算
云计算是一种通过网络(通常是互联网)提供计算资源和服务的模式,它可以让用户按需获取服务器、存储、数据库、软件等资源,而无需自己搭建和维护物理基础设施。以下是关于云计算的详细介绍
云计算的本质是将分散的计算资源(如服务器、存储设备等)通过网络整合起来,形成一个巨大的 “资源池”,并以服务的形式交付给用户。用户无需关心这些资源的具体位置和实现方式,只需通过网络连接即可使用。
根据服务的层次和类型,云计算主要分为以下三种模式:
服务模式 | 定义 | 常见示例 |
---|---|---|
基础设施即服务(IaaS) | 提供基础的计算、存储和网络资源,用户可自行部署操作系统和应用程序。 | 亚马逊 AWS EC2、微软 Azure 虚拟机、阿里云 ECS |
平台即服务(PaaS) | 提供开发和运行应用程序的平台,包括操作系统、数据库、中间件等。 | 谷歌 App Engine、Heroku、阿里云 PAAS |
软件即服务(SaaS) | 直接向用户提供可通过网络访问的软件应用,用户无需安装和维护软件。 | 微软 Office 365、Salesforce、钉钉 |
根据服务的部署位置和使用对象,云计算可分为以下几种部署模式:
云计算的服务模型
云计算的服务模型是根据用户需求和服务交付层次划分的核心架构,主要分为基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS) 三种模式。以下是对这三种服务模型的详细解析:
提供基础 IT 基础设施的云端资源,用户可按需获取计算、存储、网络等硬件资源,并自主控制操作系统、中间件和应用程序的部署。
在 IaaS 基础上,提供完整的开发、测试、部署和运行应用程序的平台环境,免去用户对底层基础设施的管理。
直接向用户提供可通过网络访问的软件应用,用户无需安装、部署或维护软件,只需按需订阅使用。
维度 | IaaS | PaaS | SaaS |
---|---|---|---|
用户控制权 | 高(控制 OS、应用) | 中(专注应用开发) | 低(仅配置功能) |
管理复杂度 | 高(需管理 OS 和底层资源) | 中(无需管理基础设施) | 低(开箱即用) |
典型用户 | IT 运维团队、企业开发者 | 应用开发者、初创团队 | 普通用户、企业业务部门 |
计费方式 | 按计算 / 存储 / 网络资源使用量计费 | 按应用实例数、资源消耗量计费 | 按用户数、功能模块订阅费计费 |
代表产品 | AWS EC2、阿里云 ECS | Google App Engine、Heroku | Office 365、Salesforce |
随着云计算发展,衍生出更细分的服务模型:
OpenStack概述
OpenStack 是一个开源的云计算管理平台,旨在通过软件定义的方式统一管理数据中心的计算、存储、网络等资源,实现基础设施即服务(IaaS)的自动化部署与管理。它由社区驱动开发,支持大规模集群的弹性扩展,被广泛应用于企业私有云、公有云和混合云场景。
OpenStack 采用模块化设计,各组件通过 API 协同工作,主要包括:
维度 | OpenStack | AWS/Azure(公有云) | VMware vSphere(传统虚拟化) |
---|---|---|---|
属性 | 开源、软件定义基础设施 | 商业公有云服务 | 商业虚拟化软件 |
控制权 | 高(自主管理基础设施) | 中(依赖云厂商 API) | 中(聚焦虚拟化层管理) |
成本 | 硬件 + 运维成本较高(需自建数据中心) | 按需付费,无前期硬件投入 | 软件授权费用高 |
适合场景 | 大型企业私有云、定制化需求 | 中小企业、快速上线业务 | 传统 IT 环境升级 |
OpenStack一键部署
OpenStack 的部署复杂度较高,传统手动部署需配置多个组件及依赖关系,耗时耗力。因此,一键部署工具成为快速搭建 OpenStack 环境的关键。以下是主流一键部署方案及其技术解析:
工具 | 特点 | 适用场景 | 技术栈 |
---|---|---|---|
DevStack | 单节点快速部署,用于开发测试环境 | 开发者学习、功能验证 | Shell 脚本,支持最新版本 |
RDO Manager | 基于 TripleO,支持多节点生产环境部署,Red Hat 官方推荐 | 企业级私有云部署 | Heat 编排 + Puppet 配置管理 |
MAAS + Juju | MAAS 管理物理服务器,Juju 负责应用部署,支持大规模集群扩展 | 数据中心级部署 | MAAS(裸机管理)+ Juju(Charm 模型) |
Kolla-Kubernetes | 基于 Kubernetes 容器化部署 OpenStack,简化升级和扩展 | 云原生架构部署 | Docker + Kubernetes |
OpenStack Charms | Canonical 提供的 Charm 组件,通过 Juju 部署,支持跨云集成 | Ubuntu 环境下的快速部署 | Juju + Ubuntu |
local.conf
配置文件自定义启用组件(如仅部署 Nova+Neutron)# 1. 准备Ubuntu 20.04服务器(至少8GB内存,50GB磁盘)
sudo apt update && sudo apt upgrade -y
# 2. 克隆DevStack仓库
git clone https://opendev.org/openstack/devstack
cd devstack
# 3. 创建local.conf配置文件(示例)
cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=\$ADMIN_PASSWORD
RABBIT_PASSWORD=\$ADMIN_PASSWORD
SERVICE_PASSWORD=\$ADMIN_PASSWORD
# 启用必要组件
ENABLED_SERVICES=n-cpu,n-api,n-cond,n-sch,n-novnc,n-cauth,neutron,q-svc,q-agt,q-dhcp,q-l3,q-meta,horizon,g-api,g-reg,key
EOF
# 4. 执行部署脚本
./stack.sh
部署完成后,通过浏览器访问http://<服务器IP>
,使用默认账号admin/secret
登录 Horizon 控制台,查看虚拟机、网络等资源
# 1. 准备Undercloud节点(部署管理节点)
sudo yum install -y https://rdoproject.org/repos/rdo-release.rpm
sudo yum install -y python-tripleoclient
# 2. 配置instackenv.json定义物理节点
cat > instackenv.json << EOF
{
"nodes": [
{
"pm_type": "ipmi",
"pm_user": "admin",
"pm_password": "password",
"pm_addr": "192.168.1.101",
"mac": ["00:11:22:33:44:55"]
}
// 添加更多计算、控制、存储节点...
]
}
EOF
# 3. 部署Overcloud(实际OpenStack环境)
openstack overcloud deploy --templates \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml
# 1. 安装Kubernetes集群(推荐kubeadm或RKE)
# 2. 配置Helm包管理器
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 3. 部署OpenStack服务
helm repo add openstack https://charts.openstack.org
helm install openstack openstack/openstack \
--namespace openstack \
--values my-values.yaml # 自定义配置(如数据库连接、网络设置)
/var/log/stack.sh
日志,确认依赖服务是否正常neutron net-list
和nova list
检查网络和虚拟机状态/etc/keystone/keystone.conf
中的数据库连接这些商业方案通常提供图形化界面、自动化监控和技术支持,适合对稳定性要求较高的企业用户
使用packstack一键离线部署OpenStack
组件 | CPU | 内存 | 存储 | 网络 |
---|---|---|---|---|
部署节点 | 2 核 + | 8GB+ | 100GB+ SSD | 双网卡 |
控制节点 | 4 核 + | 16GB+ | 50GB+ | 万兆网卡 |
计算节点 | 8 核 + | 32GB+ | 1TB+ | 万兆网卡 |
#!/bin/bash
# download_packstack_resources.sh
# 创建下载目录
mkdir -p /opt/packstack_offline/{repos,puppet,images}
cd /opt/packstack_offline
# 1. 下载RDO OpenStack仓库
yum install -y https://rdoproject.org/repos/rdo-release.rpm
reposync -n -a x86_64 -p repos --repo=baseos --repo=appstream --repo=extras
reposync -n -a x86_64 -p repos --repo=openstack-victoria --repo=epel
# 2. 下载Packstack安装包
yum install -y --downloadonly --downloaddir=repos/packstack openstack-packstack
# 3. 下载Puppet模块
puppet module install --target-dir=puppet \
puppetlabs-stdlib \
puppetlabs-apache \
puppetlabs-mysql \
# 添加更多OpenStack相关模块...
# 4. 下载镜像文件
wget -P images https://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
# 创建本地仓库配置文件
cat > /etc/yum.repos.d/local.repo << EOF
[local-baseos]
name=Local BaseOS
baseurl=file:///opt/packstack_offline/repos/baseos
gpgcheck=0
enabled=1
[local-appstream]
name=Local AppStream
baseurl=file:///opt/packstack_offline/repos/appstream
gpgcheck=0
enabled=1
# 添加其他仓库...
EOF
yum install -y /opt/packstack_offline/repos/packstack/*.rpm
# 编辑answer.txt,修改以下关键参数
CONFIG_CONTROLLER_HOST=192.168.100.10 # 控制节点IP
CONFIG_COMPUTE_HOSTS=192.168.100.11,192.168.100.12 # 计算节点IP
CONFIG_NETWORK_HOSTS=192.168.100.10 # 网络节点IP
CONFIG_STORAGE_HOST=192.168.100.13 # 存储节点IP(可选)
# 配置数据库和消息队列
CONFIG_MARIADB_HOST=192.168.100.10
CONFIG_AMQP_HOST=192.168.100.10
# 配置网络
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
CONFIG_PROVISION_DEMO=n # 不创建演示环境节省资源
通过 Dashboard体验OpenStack功能
OpenStack 的 Dashboard(Horizon)作为图形化管理界面,无需命令行即可直观操作云资源。以下从登录访问、核心模块功能到实战场景,详细介绍如何通过 Dashboard 全面体验 OpenStack 能力
创建云主机
登录 Dashboard
访问 http://<控制节点IP>/horizon
,使用管理员或项目用户账号登录。
导航至实例页面
点击左侧菜单 计算 → 实例 → 启动实例。
填写基本信息
web-server-01
)nova
选择镜像
在 源 标签页中:
Ubuntu 22.04
)选择规格(Flavor)
在 Flavor 标签页中:
m1.small
:1 核 CPU、2GB 内存、20GB 磁盘)配置网络
在 网络 标签页中:
private-net
)添加密钥对
在 访问与安全 标签页中:
my-key
)配置安全组
default
安全组(通常开放 ICMP 和 SSH)