第一部分:HCIP-OpenStack认证概述与基础架构

1.1 认证定位

HCIP-OpenStack定位于云平台架构师高级运维工程师。要求考生不仅会部署,更要懂:

  • 架构设计:控制节点、网络节点、计算节点的高可用(HA)。

  • 原理深挖:组件间的RPC通信、数据库模型、消息队列机制。

  • 运维排错:日志分析、性能调优、故障恢复。

  • 华为增强:了解华为在OpenStack上的增强特性(如CPU超分比控制、智能网卡卸载等)。

1.2 OpenStack 逻辑架构

OpenStack不是单一的软件,而是一系列服务组成的生态系统。核心逻辑遵循 “无状态+共享存储” 的设计哲学。

  • 控制平面:运行在控制节点,包含数据库(MariaDB/Galera)、消息队列(RabbitMQ)、以及各种API服务。

  • 数据平面:运行在计算节点,包含虚机(QEMU/KVM)、网络桥接(OVS/Linux Bridge)、存储卷挂载。

  • 管理网络:用于内部组件通信。

  • 业务/租户网络:用于虚拟机通信。

  • 存储网络:用于连接后端存储(FC SAN, IP SAN, Ceph)。


第二部分:核心组件深度解析(HCIP考点重点)

2.1 Keystone —— 身份认证服务

Keystone是所有服务的“门卫”。在HCIP考试中,重点考察认证流程域、项目、用户的关系

2.1.1 核心概念

  • User(用户):代表一个操作实体(人/服务)。

  • Project(项目)/Tenant(租户):资源的容器。所有资源(VM、卷、网络)都必须属于某个Project。

  • Domain(域):Project和User的最高层级容器。通常用于多租户隔离(公有云场景),一个Domain可以包含多个Project。

  • Role(角色):权限的集合。关键角色:

    • admin:拥有所有权限(通常绑定在admin Project中)。

    • member:普通租户用户,可以创建资源。

    • reader:只读权限(Pike版本后引入)。

  • Token:访问凭证。常用UUIDFernet(推荐,无需持久化存储)。

2.1.2 认证流程(Token获取)

  1. 请求:用户发送curl -d '{"auth": {"identity": {"methods": ["password"], "password": {"user": {"name": "demo", "domain": {"id": "default"}, "password": "xxx"}}}, "scope": {"project": {"name": "demo", "domain": {"id": "default"}}}}} 到 v3/auth/tokens

  2. 验证:Keystone查询MariaDB中的User表,校验密码(通常通过pbkdf2_sha512哈希)。

  3. 生成:生成Fernet Token(一种轻量级、无需存储数据库的加密票据)。

  4. 返回X-Subject-Token头返回Token,X-Subject-Token头返回Token详情。

2.1.3 HCIP考点

  • 服务目录(Service Catalog):Keystone记录了所有其他服务的Endpoint(publicinternaladmin)。管理网络通常访问internal端点,运维访问admin端点。

  • PKI vs Fernet:理解为什么新版废弃PKI(Token过大,数据库膨胀),改用Fernet(对称加密,无状态)。

2.2 Glance —— 镜像服务

Glance负责虚机模板的管理。

2.2.1 架构组件

  • glance-api:接受镜像上传/下载请求。

  • glance-registry:存储镜像元数据(大小、格式、状态)。

  • 后端存储(Store)

    • 本地文件系统:默认,不支持分布式,生产不推荐。

    • Ceph RBD:生产主流。利用Ceph的克隆快照特性,实现秒级启动虚拟机。

    • Swift:对象存储。

    • HTTP:直接通过URL导入。

2.2.2 镜像格式

  • raw:裸格式,占用空间大,但性能最好(无开销)。

  • qcow2:QEMU Copy On Write。支持快照、压缩、加密。生产环境标准格式。上传Glance时,若后端是Ceph,通常存储为raw(因为RBD本身支持COW)。

2.2.3 HCIP考点

  • 镜像缓存glance-api在计算节点上的缓存机制。当大规模并发创建同一镜像的VM时,利用缓存可以减轻Glance后端压力。

  • 状态转换queued -> saving -> active -> deactivated

2.3 Nova —— 计算服务(HCIP核心难点)

Nova是OpenStack最复杂的组件,负责虚拟机的生命周期管理。

2.3.1 核心组件与通信机制

  • nova-api:接收RESTful请求,入口。

  • nova-scheduler:调度器。决定VM跑在哪个计算节点上。

    • 过滤器(Filters)RamFilterDiskFilterCoreFilterComputeFilterImagePropertiesFilter

    • 权重器(Weighers)RamWeigherMetricsWeigher。在符合过滤条件的节点中,选择“最优”的(如剩余内存最多)。

  • nova-conductor:数据库访问代理。

    • 作用:避免计算节点直接连接数据库,提高安全性。所有写数据库的操作都通过Conductor进行。

  • nova-compute:运行在计算节点的守护进程。

    • 通过libvirt驱动(通常是libvirt)与KVM交互。

    • 执行创建、销毁、迁移等操作。

  • 消息队列(RabbitMQ):组件间通信。

    • RPC Call:同步调用(如查询状态)。

    • RPC Cast:异步调用(如创建VM,立刻返回,状态异步更新)。

2.3.2 创建虚拟机的完整流程(宏观视角)

  1. 用户(或CLI) 发送POST请求到nova-api

  2. nova-api 鉴权(Keystone),检查配额,在DB中创建vm_instances记录(状态BUILDING)。

  3. nova-api 发送RPC Cast(schedule_create_instance)给nova-scheduler

  4. nova-scheduler 从消息队列取出任务,执行过滤和权重计算,选出一个目标主机。

  5. nova-scheduler 发送RPC Cast(build_and_run_instance)给目标主机的nova-compute

  6. nova-compute

    • 调用Glance API下载/获取镜像。

    • 调用Neutron API创建Port并挂载网卡。

    • 调用Cinder API(如果有卷)挂载卷。

    • 通过libvirt生成XML定义文件,调用virsh create启动VM。

  7. 状态更新nova-compute 通过RPC调用nova-conductor更新数据库状态为ACTIVE

2.3.3 三种虚拟化模式(考点)

  • KVM:全虚拟化,依赖CPU VT-x/AMD-V,性能最佳,默认。

  • QEMU:纯软件模拟,性能差,仅用于调试。

  • Container (Docker):通过nova-docker驱动(社区支持,非OpenStack原生主力)。

2.3.4 关键运维特性

  • 迁移(Migration)

    • 冷迁移:关机迁移。涉及块数据拷贝。

    • 热迁移(Live Migration):内存脏页持续复制。前提:共享存储(如Ceph)或基于NFS的本地盘同步。

    • 条件:CPU型号必须兼容(需开启CPU modehost-modelhost-passthrough)。

  • 疏散(Evacuate):当计算节点宕机时,在其他健康节点上重建VM(依赖共享存储保留数据)。

  • 超大页(HugePages):解决TLB Miss性能问题。需在nova.conf配置hw:mem_page_size=large(2048KB或1GB)。

  • NUMA绑定:对于性能敏感型应用(如数据库),将vCPU绑定到物理CPU Core,避免跨NUMA节点内存访问。

2.4 Neutron —— 网络服务(架构难点)

Neutron负责“网络即服务”(NaaS),是OpenStack最复杂且最容易出故障的组件。

2.4.1 核心概念

  • Network:隔离的二层广播域。对应一个VLAN(802.1q)或VXLAN(隧道)。

  • Subnet:IPv4/IPv6地址池,定义网关、DNS。

  • Port:连接设备(VM、Router、LBaaS)到网络的连接点。拥有固定IP/MAC。

  • Router:虚拟路由器。提供跨子网路由和南北向SNAT/DNAT。

2.4.2 网络模型:Provider vs Tenant

  • Provider Network(外部网络/扁平网络)

    • 直接映射到底层物理网络(VLAN)。

    • 无需L3 Agent。

    • 性能好,配置简单。

  • Tenant Network(自服务网络)

    • 使用Overlay技术(VXLAN或GRE)封装。

    • 租户可自行创建网络,互不干扰。

    • 需要L3 Agent提供路由。

2.4.3 关键Agent(HCIP必考)

  • neutron-server:API入口,接收请求,写入数据库。

  • neutron-dhcp-agent:提供DHCP服务(dnsmasq),为子网分配IP。

  • neutron-l3-agent:提供虚拟路由。实现:

    • SNAT:虚拟机访问外部网络(源地址转换为Router Interface IP)。

    • Floating IP:1:1 NAT,外部访问虚拟机。

  • neutron-metadata-agent:解决虚拟机内部访问169.254.169.254获取元数据(如user-data)的问题。

  • neutron-openvswitch-agent:管理OVS流表。

  • neutron-linuxbridge-agent:管理Linux Bridge。

2.4.4 OVS vs Linux Bridge 对比(面试/考点)

特性 Linux Bridge Open vSwitch (OVS)
架构 内核模块,简单稳定 用户态+内核数据路径,功能丰富
流表 基于MAC地址学习(传统交换机) 支持OpenFlow流表,可编程
性能 较高,延迟低 略高,但支持DPDK后反超
功能 VLAN,基本防火墙 VLAN, VXLAN, GRE, QoS, 端口镜像
生产选型 适合小型环境 大规模SDN首选

2.4.5 VXLAN 原理

  • 背景:VLAN只有4096个,无法满足云环境。

  • 原理:将二层帧封装在UDP(端口4789)中,加上VNI(24位,1600万+隔离)。

  • VTEP:VXLAN Tunnel End Point。负责封装和解封装,通常由OVS承担。

2.5 Cinder —— 块存储服务

管理持久化块设备(云硬盘)。

2.5.1 架构

  • cinder-api:接收卷操作请求。

  • cinder-volume:管理后端存储,通过Driver与存储设备交互(如LVM, Ceph, NetApp, Huawei OceanStor)。

  • cinder-scheduler:调度卷创建的位置(类似nova-scheduler)。

  • 后端存储

    • LVM:默认,适合POC,通过iSCSI暴露给计算节点。

    • Ceph RBD:生产标准。通过librbd直接挂载,实现“卷到虚机”的免拷贝挂载。

2.5.2 关键操作

  • 创建卷:支持从镜像创建、从快照创建、从其他卷克隆。

  • 挂载/卸载:将卷挂载到指定虚机的指定总线(virtio-scsi或IDE)。

  • 快照:Crash-consistent(崩溃一致性)。若需应用一致性,需配合QEMU Guest Agent。

  • 备份:将卷备份到Swift或Ceph对象存储。

2.6 Swift —— 对象存储(考概念居多)

  • 架构:无单点故障的分布式存储。基于一致性哈希。

  • 数据模型:Account -> Container -> Object。

  • 特点:高冗余(Replica 3),高扩展,最终一致性(没有强一致性锁)。

  • 对比Ceph:Swift是对象存储,Ceph是统一存储(块、对象、文件)。


第三部分:高级架构与运维(HCIP核心)

3.1 高可用(HA)架构

HCIP要求掌握控制节点的高可用方案。

3.1.1 数据库高可用:Galera Cluster

  • 特点:基于wsrep协议的多主同步复制。

  • 要求:至少3个节点,避免脑裂(gcache大小需合理配置)。

  • 监控wsrep_local_state_comment 状态(Synced)。

3.1.2 消息队列高可用:RabbitMQ Mirrored Queue

  • 策略:设置ha-mode: all,确保Queue在所有节点镜像。

  • 注意:网络分区(Network Partition)是RabbitMQ集群最棘手的故障,需配置cluster_partition_handling

3.1.3 服务高可用:Pacemaker + HAProxy

  • 架构:HAProxy作为VIP的流量入口,分发请求到各个控制节点的API服务。

  • Pacemaker:负责VIP的漂移以及服务资源的拉起(如未使用容器化部署,即“packstack/devstack”方式)。

3.1.4 计算节点高可用

  • 主机聚合(Host Aggregates):将具有相同属性的物理机分组(如SSD节点、GPU节点)。

  • 可用域(Availability Zones):将主机聚合暴露给用户,允许用户在创建VM时指定物理隔离区域(对应数据中心的不同机房)。

3.2 存储后端集成(Ceph深度集成)

华为HCIP尤其强调Ceph与OpenStack的集成,因为这是生产环境主流。

  • Glance + Ceph

    • 配置rbd_store_userpool

    • 镜像存储在images pool中。

    • 克隆优势:创建VM时,Ceph使用rbd clone从镜像生成卷,瞬间完成,无需在计算节点下载镜像。

  • Nova + Ceph

    • 配置libvirt_images_type=rbd

    • 临时盘:如果是云盘启动(Boot from Volume),则VM的系统盘在Cinder卷中;如果是镜像启动,Nova会在Ceph中创建vms pool的卷作为系统盘。

    • 热迁移:基于Ceph的RBD,热迁移变得极其简单,无需拷贝磁盘数据,只需迁移内存状态。

  • Cinder + Ceph

    • cinder-volume 通过 rbd driver 对接。

    • 卷类型(Volume Type):定义后端存储能力(如ssd-cephhdd-ceph),通过extra-specs实现QoS限制(IOPS)。

3.3 网络高阶特性:DVR与FWaaS

3.3.1 DVR(分布式虚拟路由)

  • 痛点:传统L3 Agent是单点(集中式路由),所有跨子网流量和东西向流量都经过网络节点,造成瓶颈。

  • DVR原理

    • 将L3 Agent分布到每个计算节点。

    • 计算节点上的qrouter namespace负责处理该节点上VM的流量。

    • 东西向流量:本地路由,不经过网络节点。

    • 南北向流量:带Floating IP的流量,直接通过计算节点出公网(需要计算节点连接外部物理网络);不带Floating IP的SNAT流量,仍然需要经过网络节点(或专门的服务节点)。

3.3.2 安全组(Security Group)

  • 实现机制

    • Linux Bridge:通过iptables(filter表)实现。

    • OVS:通过iptables(在br-int和VM接口之间)或ovs-flow(较复杂)。

  • HCIP考点:安全组是有状态的(Stateful)。允许入方向流量会自动允许返回流量。区别于防火墙(FWaaS),防火墙通常是无状态的或有状态但提供更高级的策略。

3.4 计量与监控

3.4.1 Ceilometer

  • 功能:数据采集(计量)。用于计费、监控、统计。

  • 数据收集:通过polling agent轮询(如CPU使用率),通过notification agent接收通知(如创建VM)。

  • 存储gnocchi(时间序列数据库,用于存储计量数据)替代了MongoDB。

3.4.2 Aodh

  • 功能:告警服务。基于Ceilometer采集的数据触发告警。

3.4.3 监控排查

  • 日志路径/var/log/ 下对应服务目录。

  • 关键日志

    • nova-compute.log:计算节点所有操作。

    • neutron-server.log:网络API调用。

    • cinder-volume.log:存储卷操作。

  • 排错方法论

    1. 自顶向下:API是否返回错误(查看API日志)。

    2. 追踪Request ID:OpenStack每条请求都有一个Request ID(如req-xxxx),通过grep Request ID串联所有组件日志,还原完整调用链。

    3. 消息队列:若任务卡住,检查RabbitMQ队列深度(rabbitmqctl list_queues)。


第四部分:自动化与扩展(HCIP实战)

4.1 Heat —— 编排服务

  • 核心HOT模板(Heat Orchestration Template),YAML格式。

  • 资源OS::Nova::ServerOS::Neutron::Net

  • 功能:定义基础设施即代码(IaC)。支持depends_on定义依赖关系,output输出结果。

  • Auto Scaling

    • 配合OS::Heat::AutoScalingGroupOS::Ceilometer::Alarm实现弹性伸缩。

    • 基于CPU阈值或周期策略,自动增加或减少VM数量。

4.2 自动化部署工具(对比)

  • Packstack:基于Puppet,适合单机/小规模POC,生产中几乎不用。

  • Kolla-Ansible容器化部署(Kolla) + Ansible编排。HCIP重点

    • 优点:所有服务运行在Docker容器中,升级回滚方便,隔离性好。

    • 核心概念:globals.yml(配置密码、网卡、后端存储类型)、multinode(定义节点角色)。

    • 运维命令:kolla-ansible deploykolla-ansible reconfigurekolla-ansible upgrade

4.3 性能调优(考点)

  • CPU超分cpu_allocation_ratio。默认16.0,即物理核心:虚拟核心=1:16。高并发场景建议降低比例。

  • 内存超分ram_allocation_ratio。默认1.5。

  • 磁盘I/O

    • 设置disk_allocation_ratio

    • 使用Ceph时,调整rbd_qos_iops_limit

  • 网络优化

    • DPDK:绕过内核协议栈,用户态驱动,大幅提升OVS性能(吞吐量提升10倍+)。

    • SR-IOV:PCIe直通。将物理网卡VF(虚拟功能)直接分配给虚拟机,实现接近物理机的网络性能,但牺牲了热迁移能力。


第五部分:HCIP考试重点与模拟题

5.1 常见多选题/判断题考点

  1. 关于Nova调度

    • 问:哪些属于过滤器的顺序?答:首先过滤出符合计算节点,再根据权重排序。

  2. 关于Cinder后端

    • 问:LVM后端是否需要cinder-scheduler?答:需要(如果多后端)。

    • 问:Ceph后端如何实现快照?答:rbd snap create,由Cinder driver控制。

  3. 关于Neutron

    • 问:Floating IP的实现原理?答:iptables NAT(DNAT)或OVS流表。

    • 问:DVR模式下,虚拟机访问Internet(SNAT)的路径?答:经过计算节点 -> 网络节点的snat namespace

  4. 关于Keystone

    • 问:如何撤销用户权限?答:删除role assignment,Token不会立即失效(Fernet Token有有效期)。

  5. 关于高可用

    • 问:Galera Cluster最少节点数?答:3。

    • 问:RabbitMQ镜像队列如果master节点宕机,消息是否会丢失?答:不会,slave会提升为master(取决于策略)。

5.2 排错场景题

场景:用户创建VM报错“No valid host was found”。
排查思路

  1. 检查nova-scheduler.log,查看过滤结果。

  2. 检查用户指定的Flavor与主机聚合是否匹配(AggregateInstanceExtraSpecsFilter)。

  3. 检查计算节点nova-compute是否状态为down(nova service-list)。

  4. 检查计算节点磁盘空间(df -h),/var/lib/nova是否满。

  5. 检查nova-compute.log中是否有libvirt连接失败记录(通常是因为重启了libvirt-bin服务,需重启nova-compute)。

场景:VM创建成功,但无法获取IP(DHCP失败)。
排查思路

  1. 检查Neutron DHCP Agent状态(neutron agent-list)。

  2. 检查网络所在的dhcp namespace是否存在(ip netns exec qdhcp-xxx)。

  3. 在计算节点查看端口状态(ovs-vsctl show),检查tap设备是否在br-int上。

  4. 检查安全组是否允许DHCP(UDP 67,68)。

5.3 实验重点(机考/面试)

  1. 迁移操作:冷迁移、热迁移的命令行(openstack server migrate 加 --live)。

  2. 卷操作:创建卷,从卷启动虚拟机,卷扩容(需先卸载,扩容后挂载,文件系统内resize2fs)。

  3. 网络操作:创建VXLAN网络,创建子网,创建路由,连接外部网络,分配Floating IP。

  4. 命令行排查

    • openstack compute service list

    • openstack network agent list

    • openstack volume service list

    • rabbitmqctl list_queues | grep -v 0 (查看是否有积压队列)


第六部分:华为云Stack 增强特性(补充)

华为HCIP-OpenStack通常融合了华为云Stack 8.x(基于OpenStack的商业发行版)的内容。

6.1 华为增强点

  • ManageOne:统一的运营运维平台。

    • 运营面:租户自服务门户,审批流程,计量计费。

    • 运维面:监控告警,资源拓扑,自动化运维(类似Zabbix+Ansible)。

  • GaussDB:华为自研数据库,替代MariaDB用于高安全场景。

  • FusionSphere:底层虚拟化引擎(基于KVM增强),提供更优的调度和IO性能。

  • 硬件加速

    • IN300/IN500:智能网卡,支持网络和存储的硬件卸载(SR-IOV),提升网络吞吐并降低CPU占用。

    • Atlas:AI加速卡,通过PaaS层提供给虚机/容器。

6.2 华为部署模式

  • Deploy Tool (HCT):华为云Stack部署工具,支持自动化安装、扩容、升级。

  • Region/AZ/POD

    • Region:地理区域(如北京、上海)。

    • AZ:可用域,对应独立的数据中心或机房。

    • POD:一组物理设备的逻辑集合(包含若干控制节点和计算节点)。


第七部分:复习策略与资源推荐

  1. 官方文档

    • OpenStack官方文档(Stein/Train/Ussuri版本,取决于考试版本)。

    • 华为Support网站上的《HCIP-Cloud Computing-OpenStack V3.0 实验手册》。

  2. 环境搭建

    • 使用虚拟机(VMware Workstation)搭建3节点(1控制+1网络+1计算)的环境。

    • 推荐使用Kolla-Ansible部署,便于理解容器化架构和配置项。

  3. 实验重点

    • 反复练习热迁移(确保共享存储配置正确)。

    • 练习Ceph对接(即使模拟环境没有真实Ceph,也要理解配置项)。

    • 练习故障模拟(停掉某个服务,观察日志变化,重启恢复)。

  4. 高频考点总结

    • 消息队列RPC通信机制

    • 数据库表结构(了解instances表, flavors表)

    • 存储多后端配置

    • 网络Namespace隔离原理

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐