文章目录
- [OpenStack 从入门到实战(一)](#OpenStack 从入门到实战(一))
-
- 引言
- [一、OpenStack 核心亮点](#一、OpenStack 核心亮点)
- 二、环境规划(核心节点)
- 三、核心模块实战(精简操作)
- 四、核心总结
OpenStack 从入门到实战(一)
引言
OpenStack 作为开源的企业级云计算管理平台,能实现虚拟机、存储、网络等资源的集中化调度与管理,广泛应用于私有云、公有云部署。本文基于 Victoria 版本,精简实验手册的核心步骤,聚焦认证、镜像、计算、存储、网络、编排六大核心模块,用清晰的结构和关键操作,帮你快速上手 OpenStack 部署与运维~
一、OpenStack 核心亮点
- 开源免费:基于 Apache 许可证,可自由定制扩展。
- 模块化架构:拆分为认证(Keystone)、计算(Nova)、镜像(Glance)、存储(Cinder)、网络(Neutron)等组件,灵活部署。
- 多租户支持:通过项目、角色、用户的权限隔离,适配多团队协作。
- 跨平台兼容:支持 KVM、Xen 等虚拟化技术,兼容多种操作系统镜像。
- 自动化编排:通过 Heat 模板实现资源一键部署,适配 DevOps 流程。
二、环境规划(核心节点)
| 节点名称 | IP 地址 | 核心角色 | 关键软件 |
|---|---|---|---|
| controller | 192.168.108.10 | 控制节点 | Keystone、Glance、Nova、Neutron、Heat |
| compute | 192.168.108.11 | 计算节点 | Nova 计算服务、Neutron 代理 |
| cinder | 192.168.108.12 | 存储节点 | Cinder 块存储服务 |
| 客户端 | 192.168.108.1 | 管理终端 | OpenStack CLI、浏览器(Dashboard 访问) |
基础依赖:CentOS 7.9、Python 2.7+/3.6+、JDK 1.8、MariaDB(数据库)
三、核心模块实战(精简操作)
1. 认证管理(Keystone)
核心是 "用户 - 角色 - 项目" 的权限模型,控制资源访问范围。
关键操作(Dashboard + CLI)
-
创建项目(资源隔离单元):
- Dashboard:管理员 → 身份管理 → 项目 → 创建项目(名称 + 域)。
- CLI:
openstack project create --domain default Project_web
-
创建用户 + 角色绑定:
-
CLI:
openstack user create --domain default --password huawei User_web openstack role add --project Project_web --user User_web _member_(member为默认普通角色)
-
-
核心概念:
- 角色:定义权限集合(如 admin 全权限、member 普通权限)。
- 项目:隔离资源(如虚拟机、网络仅所属项目可见)。
2. 镜像管理(Glance)
镜像是虚拟机的模板,支持 QCOW2、VMDK 等格式,推荐使用轻量的 Cirros 镜像测试。
核心操作
-
下载镜像 :
wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img -
创建镜像:
- CLI:
openstack image create --disk-format qcow2 --container-format bare --file cirros-0.5.2-x86_64-disk.img --public Img_web - 关键参数:
--public设为公共镜像,所有项目可用;--private仅当前项目可用。
- CLI:
-
镜像共享:
-
CLI:
openstack image set --shared Img_web(共享给其他项目)
openstack image add project Img_web Project_web(指定项目可见)
-
3. 计算管理(Nova)
负责虚拟机实例的生命周期管理,包括创建、启动、快照、删除等。
核心操作
- 创建实例规格 (虚拟机配置):
- CLI:
openstack flavor create --vcpus 1 --ram 128 --disk 1 Flavor_web(1vCPU+128M 内存 + 1G 磁盘)
- CLI:
- 创建虚拟机实例 :
- CLI:
openstack server create --image Img_web --flavor Flavor_web --network shared --key-name KeyPair_web Instance_web_01 - 关键参数:
--network指定网络,--key-name绑定密钥对(用于 SSH 登录)。
- CLI:
- 实例生命周期管理 :
- 启动 / 关闭:
openstack server start/stop Instance_web_01 - 快照:
openstack server image create --name Instance_Snap Instance_web_01 - 删除:
openstack server delete Instance_web_01
- 启动 / 关闭:
4. 存储管理(Cinder)
提供块存储服务(卷),可挂载到虚拟机实例,实现数据持久化。
核心操作
- 创建卷 (基于镜像):
- CLI:
openstack volume create --image Img_web --size 1 --type VolumeType_web Volume_web_01 - 说明:卷大小单位为 GB,
--type指定存储类型(如 SSD、SATA)。
- CLI:
- 挂载 / 卸载卷 :
- 挂载:
openstack server add volume Instance_web_01 Volume_web_01 - 卸载:
openstack server remove volume Instance_web_01 Volume_web_01
- 挂载:
- 卷快照 :
openstack volume snapshot create --volume Volume_web_01 Volume_Snap_web
5. 网络管理(Neutron)
OpenStack 网络核心是 "网络 - 子网 - 路由器" 模型,需重点掌握浮动 IP 和安全组配置。
核心操作
-
创建网络 + 子网:
-
CLI:
openstack network create --share Network_web(--share 设为共享网络)
openstack subnet create --network Network_web --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 Subnet_web
-
-
创建路由器(跨网络通信):
-
CLI:
openstack router create Router_web openstack router add subnet Router_web Subnet_web(关联子网)
openstack router set --external-gateway External Router_web(绑定外部网络,实现外网访问)
-
-
浮动 IP(外部访问实例):
- 分配:
openstack floating ip create External - 绑定:
openstack server add floating ip Instance_web_01 192.168.108.120
- 分配:
-
安全组(端口放行):
- 创建安全组:
openstack security group create SG_web - 放行 SSH(22 端口):
openstack security group rule create --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0 SG_web - 放行 ICMP(ping):
openstack security group rule create --protocol icmp --remote-ip 0.0.0.0/0 SG_web - 绑定实例:
openstack server add security group Instance_web_01 SG_web
- 创建安全组:
6. 编排管理(Heat)
通过 HOT(Heat Orchestration Template)模板实现资源自动化部署,适合批量创建实例、网络等。
基础使用
- 编写简单 HOT 模板(demo-template.yaml):
yaml
yaml
heat_template_version: 2015-10-15
parameters:
NetID:
type: string
description: 网络ID
resources:
server:
type: OS::Nova::Server
properties:
image: Img_web
flavor: Flavor_web
key_name: KeyPair_web
networks:
- network: {get_param: NetID}
outputs:
instance_ip:
description: 实例IP
value: {get_attr: [server, first_address]}
- 创建堆栈(部署资源) :
- CLI:
openstack stack create -t demo-template.yaml --parameter "NetID=网络ID" Stack_demo - 查看结果:
openstack stack output show --all Stack_demo
- CLI:
- 删除堆栈 :
openstack stack delete Stack_demo(会自动删除关联的实例、网络等资源)
四、核心总结
OpenStack 的核心是 "模块化 + 资源编排":
- 权限模型:用户→角色→项目的三层隔离。
- 网络配置:网络 + 子网 + 路由器实现通信,浮动 IP + 安全组实现外网访问。
- 资源生命周期:实例、卷、镜像的创建与关联。
- 自动化:通过 Heat 模板简化批量部署。