文章目录
openstack :管理计算、网络、存储等资源的 IaaS 平台
先安装Linux系统,在Linux系统上安装openstack
核心组件
| 组件 | 负责什么 |
|---|---|
| Keystone | 身份认证、项目和角色分配、服务目录 |
| Nova | 虚拟机生命周期与计算调度 |
| Placement | 资源提供者的库存、用量分配、特征等查询与记录 |
| Neutron | 网络、子网、端口、路由、安全组等网络资源管理 |
| Glance | 镜像元数据与镜像访问,连接镜像存储后端 |
| Cinder | 块存储卷的生命周期,连接后端存储 |
| Horizon | 面向用户和管理员的 Web 控制台 |
| RabbitMQ | 常见部署中的组件内部消息通信和 RPC |
| MariaDB/MySQL | 服务元数据,例如实例记录和资源状态 |
| Memcached | 常用于认证验证等缓存 |
Keystone 确认身份,Nova 调度计算,Placement 提供资源信息,Neutron 管网络,Glance 管镜像,Cinder 提供卷,Horizon 提供web页面。
| 服务 | 作用 |
|---|---|
| nova-api | 接收实例管理 API 请求 |
| nova-scheduler | 根据候选资源和约束选择计算节点 |
| nova-conductor | 协调实例构建、数据库访问等操作 |
| nova-compute | 在计算节点调用虚拟化驱动,调用libvirt创建虚拟机、neutron agent 网络服务 |
节点规划
| 节点角色 | 常见服务或能力 |
|---|---|
| 控制节点 | API、认证、调度、数据库、消息队列、Horizon |
| 计算节点 | nova-compute、QEMU/KVM、libvirt、网络数据面 |
| 网络节点或网关节点 | 对外路由、NAT 等,具体取决于架构 |
| 存储节点 | LVM、Ceph 或其他存储后端 |
官方学习入口与使用方法
以下是官方文档入口,本文未对网页进行实时检索。latest 页面会变化,实际部署务必切换到你使用的 release 文档,并同时核对部署工具支持矩阵。
| 主题 | 官方入口 | 建议关注 |
|---|---|---|
| OpenStack 文档总入口 | https://docs.openstack.org/ | 选择项目和 release |
| 安装指南 | https://docs.openstack.org/install-guide/ | 环境依赖、服务关系、基础验证 |
| Nova | https://docs.openstack.org/nova/latest/ | 计算服务、Cells v2、调度、迁移和恢复 |
| Placement | https://docs.openstack.org/placement/latest/ | 资源库存、分配、资源提供者 |
| Neutron | https://docs.openstack.org/neutron/latest/ | 管理指南、网络后端、OVS/OVN 场景 |
| Keystone | https://docs.openstack.org/keystone/latest/ | 身份、项目、作用域、认证 |
| Glance | https://docs.openstack.org/glance/latest/ | 镜像管理与后端 |
| Cinder | https://docs.openstack.org/cinder/latest/ | 卷类型、后端驱动、扩容与备份 |
| OpenStack CLI | https://docs.openstack.org/python-openstackclient/latest/ | 核对当前客户端命令参数 |
| Kolla-Ansible | https://docs.openstack.org/kolla-ansible/latest/ | 支持矩阵、部署、配置和运维 |
| DevStack | https://docs.openstack.org/devstack/latest/ | 开发和学习实验,不作生产方案 |
| cloud-init | https://cloudinit.readthedocs.io/ | 数据源、初始化、状态和日志 |
面试题
-
OpenStack 是什么?这个项目为什么使用它?
答:OpenStack 是开源 IaaS 云平台,可以把公司物理服务器的计算、网络和存储能力统一管理,按项目提供虚拟机等资源。
-
OpenStack、KVM、QEMU、libvirt 有什么关系?
答:KVM 提供 Linux 内核中的硬件辅助虚拟化能力,QEMU 提供虚拟机用户态运行和设备模拟等能力,libvirt 提供统一管理接口。OpenStack 的 Nova 在常见 KVM 部署中通过 libvirt 驱动管理虚拟机,再配合 Neutron、Glance 和 Cinder 完成网络、镜像和磁盘准备。KVM 负责底层虚拟化,OpenStack 负责把这些能力组织成云服务。
-
核心组件分别负责什么?
答:Keystone 负责身份认证、项目和角色分配以及服务目录;Nova 管理虚拟机生命周期和计算调度;Placement 记录计算等资源库存与分配;Neutron 管网络、端口、路由和安全组;Glance 管镜像;Cinder 管云硬盘;Horizon 提供 Web 控制台。各组件通过 API 和内部消息协作,数据库保存元数据,RabbitMQ 常承担内部消息通信。
-
控制节点和计算节点有什么区别?
答:控制节点主要运行认证、API、调度、数据库和消息队列等管理服务,计算节点主要运行 nova-compute 和 QEMU/KVM 等,实际承载虚拟机。控制节点故障主要影响管理能力,计算节点故障则直接影响其上实例;不过实际影响还取决于节点是否同时承载网关或存储。因此我会先看真实角色分布,再判断故障范围。
-
创建虚拟机的完整流程是什么?
答:用户认证后提交镜像、规格、网络和存储等参数,Nova 接收并校验请求,调度流程利用 Placement 等信息选出满足条件的计算节点,再协调 Neutron 准备端口、Glance 提供镜像、必要时由 Cinder 准备卷。目标节点的 nova-compute 通过 libvirt/QEMU/KVM 启动虚拟机,来宾系统通过云初始化完成网络、密钥等配置,最后更新平台状态并验证实际访问。具体内部步骤可能并行,不能把它看成完全固定的串行流程。