195
浪潮云海云操作系统 InCloud OpenStack 5.5.0 技术白皮书 浪潮电子信息产股份有限公司 2019年5月

浪潮云海云操作系统InCloud OpenStack 5.5

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统

InCloud OpenStack 5.5.0

技术白皮书

浪潮电子信息产股份有限公司

2019年 5月

Page 2: 浪潮云海云操作系统InCloud OpenStack 5.5

i

目录

1 前言 ................................................................................................................... 1

2 ICOS 概述 .......................................................................................................... 2

2.1 产品定位................................................................................................. 2

2.2 产品理念................................................................................................. 4

2.3 产品架构................................................................................................. 5

2.4 组件清单和功能地图............................................................................. 6

3 ICOS 基础技术原理 ........................................................................................ 13

3.1 分布式的微服务架构........................................................................... 13

3.2 虚拟化核心技术与原理....................................................................... 15

3.2.1 CPU 虚拟化 ............................................................................... 18

3.2.2 内存虚拟化................................................................................ 20

3.2.3 I/O 设备虚拟化 ......................................................................... 23

4 ICOS 功能特色和实现原理 ........................................................................... 25

4.1 计算服务............................................................................................... 25

4.1.1 云主机全生命周期管理............................................................ 25

4.1.2 异构设备加速............................................................................ 28

4.1.3 云主机 CPU 绑定 ..................................................................... 32

4.1.4 云主机大页内存........................................................................ 33

4.1.5 云主机在线扩容........................................................................ 35

4.1.6 云主机在线迁移........................................................................ 37

4.1.7 云主机 QoS ............................................................................... 39

Page 3: 浪潮云海云操作系统InCloud OpenStack 5.5

ii

4.1.8 云主机在线修改密码................................................................ 42

4.1.9 云主机标签管理功能................................................................ 43

4.1.10 云主机控制台文本远程粘贴.................................................. 44

4.1.11 NUMA 拓扑 ............................................................................ 45

4.1.12 USB 直通 .................................................................................. 48

4.1.13 挂载 ISO 镜像 ......................................................................... 49

4.1.14 云主机回收站.......................................................................... 50

4.1.15 自定义资源分配策略.............................................................. 51

4.1.16 云主机蓝屏策略...................................................................... 52

4.1.17 主机管理.................................................................................. 53

4.1.18 云主机亲和性和反亲和性...................................................... 54

4.1.19 云主机密钥对.......................................................................... 55

4.1.20 云主机援救.............................................................................. 56

4.2 存储服务............................................................................................... 57

4.2.1 存储异构多样性........................................................................ 57

4.2.2 块存储........................................................................................ 58

4.2.3 文件存储.................................................................................... 77

4.2.4 对象存储.................................................................................... 81

4.3 网络服务............................................................................................... 84

4.3.1 VPN ............................................................................................ 85

4.3.2 防火墙........................................................................................ 87

4.3.3 负载均衡.................................................................................... 88

Page 4: 浪潮云海云操作系统InCloud OpenStack 5.5

iii

4.3.4 QoS ............................................................................................. 91

4.3.5 分布式路由(DVR) ............................................................... 92

4.3.6 VXLAN ...................................................................................... 94

4.3.7 SR-IOV ....................................................................................... 95

4.3.8 端口转发.................................................................................... 96

4.3.9 安全组........................................................................................ 97

4.3.10 OVS-DPDK .............................................................................. 98

4.3.11 网络策略模板.......................................................................... 99

4.4 裸金属服务......................................................................................... 100

4.4.1 裸金属管理.............................................................................. 100

4.4.2 云物理机挂载云硬盘.............................................................. 105

4.5 容器服务............................................................................................. 107

4.5.1 容器集群管理.......................................................................... 108

4.5.2 容器应用管理.......................................................................... 109

4.5.3 容器卷管理.............................................................................. 110

4.5.4 容器镜像仓库管理.................................................................. 110

4.6 弹性伸缩............................................................................................. 111

4.6.1 伸缩组...................................................................................... 112

4.6.2 弹性伸缩原理.......................................................................... 112

4.7 资源编排............................................................................................. 114

4.7.1 编排模板与实例...................................................................... 114

4.7.2 实现原理及应用场景.............................................................. 114

Page 5: 浪潮云海云操作系统InCloud OpenStack 5.5

iv

4.8 运营服务............................................................................................. 116

4.8.1 多级业务流程自动化.............................................................. 116

4.8.2 可定制的云计划任务.............................................................. 117

4.8.3 详细的报表功能...................................................................... 118

4.9 智能运维............................................................................................. 119

4.9.1 丰富的数据采集插件.............................................................. 120

4.9.2 监控资源混合采集.................................................................. 121

4.9.3 监控数据快速传输.................................................................. 122

4.9.4 海量监控数据高效存储和处理.............................................. 122

4.9.5 大规模监控优化...................................................................... 122

4.9.6 大规模告警优化...................................................................... 123

4.9.7 趋势预测.................................................................................. 124

4.9.8 通用事件系统.......................................................................... 125

4.9.9 调用链...................................................................................... 126

4.9.10 一键式健康检查.................................................................... 127

4.10 日志系统........................................................................................... 129

4.10.1 功能描述................................................................................ 129

4.10.2 技术原理................................................................................ 129

4.10.3 日志系统优势........................................................................ 132

4.11 双因子认证....................................................................................... 133

4.12 访问控制........................................................................................... 134

4.13 备份与容灾....................................................................................... 138

Page 6: 浪潮云海云操作系统InCloud OpenStack 5.5

v

4.13.1 云内备份................................................................................ 138

4.13.2 容灾........................................................................................ 140

4.13.3 第三方备份............................................................................ 143

4.14 起始页和大屏................................................................................... 144

4.15 集群生命周期管理........................................................................... 146

4.15.1 安装部署................................................................................ 146

4.15.2 集群升级................................................................................ 149

4.15.3 集群快速弹性扩容................................................................ 150

5 ICOS 开放兼容 安全可靠 ........................................................................... 151

5.1 开放 API ............................................................................................. 151

5.2 兼容主流基础设施............................................................................. 151

5.2.1 服务器兼容.............................................................................. 151

5.2.2 存储兼容.................................................................................. 154

5.2.3 网络兼容.................................................................................. 155

5.2.4 操作系统(GuestOS) .......................................................... 155

5.3 多维度安全体系设计......................................................................... 161

5.3.1 云平台安全.............................................................................. 162

5.3.2 租户安全服务.......................................................................... 162

5.3.3 云主机安全.............................................................................. 163

5.4 可靠性设计......................................................................................... 164

5.4.1 控制层可靠性.......................................................................... 164

5.4.2 计算层可靠性.......................................................................... 171

Page 7: 浪潮云海云操作系统InCloud OpenStack 5.5

vi

5.4.3 存储层可靠性.......................................................................... 173

5.4.4 网络层可靠性.......................................................................... 175

6 ICOS 规格参数 ............................................................................................. 180

7 ICOS 适用场景 ............................................................................................. 181

7.1 面向大规模云数据中心的智能管理................................................. 181

7.2 业务云化:核心业务上云................................................................. 182

7.3 云化业务:云原生应用创新............................................................. 183

8 缩略语............................................................................................................ 184

Page 8: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 1 前言

1

1 前言

文档用途

本文档用于描述 ICOS 5.5.0 功能特色、技术原理、规格参数及适用场景。

适用范围

本文档为公司内部、外部了解 ICOS 5.5.0 技术实现的参考文档。

读者对象

本文档提供给以下相关人员使用:

客户代表

产品经理

售前工程师

系统维护工程师

研发工程师

Page 9: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

2

2 ICOS 概述

浪潮致力于成为中国领先的云计算解决方案供应商,可提供涵盖 IaaS、PaaS、

SaaS三个层面的整体解决方案。凭借浪潮高端服务器、海量存储、云操作系统、信

息安全技术为客户打造领先的云基础架构,基于浪潮企业、行业、政务信息化软

件、终端产品和解决方案,全面支撑企业云、行业云、政务云建设。

浪潮云海云操作系统 InCloud OpenStack(以下简称 ICOS)是浪潮基于开源

OpenStack 并结合云海系列产品自研的一款功能丰富、高可用性、安全、支撑工具

全面的云数据中心操作系统。ICOS 集虚拟化平台和云管理特性于一身,实现了云

数据中心底层计算、存储、网络、安全等资源的统一调度管理,实现了业务的动态

变更、资源的智能管理和服务的自动化交付,通过对大规模硬件资源的有效监控、

灵活的调度策略,确保用户数据的安全、可靠,实现资源的动态流转与伸缩,在提

高整个数据中心资源利用率的同时,极大地提升 IT 资产价值和提高 IT 运营维护效

率,降低数据中心的维护成本。

2.1 产品定位

InCloud OpenStack 是浪潮基于开源 OpenStack 研制的 OpenStack 商业发行

版。OpenStack 作为开源云计算 IaaS 的事实标准和拥有全球最多开发者的开源社

区项目,于 2010 年 7 月成立之初,由 NASA(美国航天局)和 Rackspace 捐

献的两个项目组成。现在已经发展到包含虚拟化管理、网络 SDN、SDS、容器管

理和服务编排等功能覆盖全面的开源项目集合。

OpenStack 以其开放的社区,标准的 API,严格的代码提交和测试流程,高效

的社区运营吸引了几乎所有云计算相关厂商相互支撑,构建了全面的云计算 IaaS 生

态系统。几乎所有的主流 SDN 厂商、存储厂商、负载均衡厂商、PaaS 厂商、安全

厂商、灾备厂商都宣称与标准 OpenStack 云平台兼容。用户选择基于 OpenStack

来构建其企业级私有云,可以最大限度的避免厂商锁定所带来的后续运维成本高

昂、服务支持不及时、无法满足特定场景下的应用支撑等问题。此外,经过多年的

发展,OpenStack 社区依然活跃,社区版本发布依然持续稳定,近几个版本的发布

Page 10: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

3

也已经由之前注重功能的增加慢慢转为注重大规模下平台的稳定性(如 masakari

项目)、效率以及性能的增强,这也进一步说明,OpenStack 已经成为了一个成熟

的企业私有云建设的最佳选择。

浪潮是 OpenStack 社区黄金会员,在基于 OpenStack 打造商业发行产品的同

时,也积极参与社区交流和贡献,在最新的 Ussuri 版本中,浪潮的 Commit 和 BP

数量均达到了全球 TOP8,展现了浪潮具有全球竞争力的技术实力。

浪潮 InCloud OpenStack(简称 ICOS)立足企业级 IaaS 市场,专注为企业 IT

基础设施上云提供一体化的产品和解决方案,是开放架构、模块化、标准化、稳定

的云数据中心基础设施资源供给服务平台,可实现数据中心异构资源融合、管理及

快速服务交付,统一的云基础设施的运营和运维,是云数据中心的“中枢神经系

统”。ICOS 在开源 OpenStack Rocky 版本的基础上,以客户需求为导向,强化功

能性、稳定性、安全性和高效性。通过多年的技术积累和不断的技术创新,已形成

了稳定企业级的 IaaS 产品,被知名咨询机构 GlobalData 评级为“Very Strong”全

球最高评级。 ICOS 的主要特点如下所述:

软件定义方面,提出了基于内存混合复制的云主机在线迁移技术,突破了底层

虚拟化性能加速技术,vCPU 性能提升了 30%,存储 IOPS 提升了 30%~50%。

资源管理与调度方面,通过研究面向大规模集群的云资源管理和调度技术,创

造性提出了面向构件的混合型云操作系统架构(PCT 专利授权),突破了面向

大规模集群的云主机、裸金属、容器云资源管理和调度技术及云平台全方位高

可用技术,单集群规模达到 500 节点,整体可用性达到 99.99%。

监控运维方面,提出了大规模资源智能监控方法,突破了超大规模资源精细化

监控与实时告警技术,构建了覆盖物理基础设施和云资源的一体化智能运维系

统,达到每秒十万级监控项。

安全保障方面,提出了多层次安全加固方法,突破了多层次安全加固技术,设

计了多维度云操作系统安全模型,提高了租户对计算环境的信任度和感知能

力,通过了 EAL3+、公安部等保三级等安全认证,获得的安全认证业界最多。

Page 11: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

4

开放架构与生态方面,ICOS 目前已经与浪潮、华为、日立、曙光、惠普、富士

通等主流厂商的集中式存储产品在生产环境进行了对接;支持对接国内主流存

储厂商的分布式存储产品(包括浪潮、xsky、华三);支持云祺、AS 等主流灾

备厂商的产品;已经支持对接兼容国内几乎所有主流 SDN 厂商的(华为、华

三、浪思、中兴、锐捷)产品。

ICOS 适用于以下应用场景:构建行业云数据中心、虚拟化数据中心向云数据

中心转移、降低运维成本、传统数据中心向云数据中心转型。

利用 ICOS 构建 IaaS 云平台,可以有效提高 IT 资源利用率,降低资源消耗,

减少管理和建设环节,提高运营效率,快速响应需求、提供灵活的纵向和横向扩展

能力和利旧能力,降低客户总体拥有成本;

ICOS 的愿景是在金融、政法、能源、教育等行业和企业云市场做到业内领

先,打造国内领先、国际先进的企业级 IaaS 云平台。

2.2 产品理念

ICOS 的产品理念是:坚持开放、融合、敏捷、安全,构建“大生态”服务全

球客户。

开放体现了浪潮对开源技术路线的坚持,积极参与 OpenStack、CNCF、

APACHE、LINUX 等开源社区,通过对开源技术的不断完善,打造“兼容并包”的

开放云基础设施。将 OpenStack 打造成超级引擎,集成云计算、物联网、大数据、

人工智能等领域的重要开源技术,这是 ICOS 在产品技术研发上的追求,而将

OpenStack 应用于数字经济领域,面向政府、金融、电信、能源、制造业等行业客

户提供开放、融合、敏捷、智能的先进云基础设施,使能数字化转型,则是 ICOS

在技术价值上的诉求。

融合是指 ICOS 将自身的硬件基础设施与 OpenStack 予以集成,并通过 SDK

和标准 API 将整个云平台上下游的 SDN、SDS、安全等优秀产品和技术容纳进

来,对外提供完整的云基础设施解决方案;同时,ICOS 融合也体现在对性能优化

无止境的追求,深入到底层 KVM、存储、SDN 的技术实现原理,并结合底层关键

技术来实现上层计算、存储、网络等的资源管理服务的优化。

Page 12: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

5

敏捷是浪潮面向 CI/CD 与 DevOps 发展趋势所提出的新理念,其目标是帮助

客户更好的应对敏捷开发、弹性扩展的互联网业务需求。浪潮 InCloud OpenStack

提供敏捷高效的 CI/CD 流程,可实现每月发版、持续交付,单日可交付 500 节点

以上。

安全是 ICOS 持续不变的初衷,从接入安全、访问控制、数据安全、虚拟资源

安全、通信安全、审计和系统安全等各个层面进行分层次的全云安全设计,为客户

数据安全、业务安全保驾护航。

在开放、融合、敏捷、安全的基础上,ICOS 将致力于构建云计算的“大生

态”,更好的服务全球客户。目前,云计算、大数据、AI、物联网等共同构成了新

一代 IT 产业群,技术层面的融合开放推动了产业和应用层面的融合开放,原本泾

渭分明的产业生态边界变得更加模糊,彼此交融的新生态体系使得“大生态”建设

势在必行。为此,浪潮将依托 InCloud OpenStack,通过与技术、方案和服务等合

作伙伴的广泛联合,共同打造端到端的行业云解决方案,面向用户提供云计算的一

体化交付、一站式解决方案,并不断赋能技术服务商拓展渠道,提供商务、方案、

服务、售后等全方位的支持。

2.3 产品架构

图 2-1 ICOS 产品架构

Page 13: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

6

ICOS 在开源 OpenStack 基础上通过增强与自研扩展,形成了具有浪潮特色的

OpenStack商业发行版。ICOS提供标准的符合 OpenStack规范要求的 REST API,软

件定义的计算以 KVM 为核心,软件定义的存储对接自研 InCloud Storage,软件定

义的网络对接浪潮思科 DCNC或者其他第三方 SDN,软件定义的安全整合了自研的

SSR及可信产品。

开放统一的云基础设施管理:ICOS全面优化开源 OpenStack,实现了最全的云

主机生命周期管理与最全的裸金属生命周期管理,自主研发了符合 OpenStack

项目规范的 UI、监控运维、安全、流程审批、可视化编排、弹性伸缩、容器集

群等组件,优化了在线扩容、镜像缓存、GPU虚拟化、USB直通、共享卷、异构

资源管理等高级虚拟化功能,并支持 Kubernetes 与 OpenStack在存储、网络上

的融合以及 Kubernetes 与自研的 InCloud Storage 的融合。

全生命周期管理:ICOS支持可视化日志分析、一键式健康检查、容量预测、事

件分析等运维功能,支持组件容器化部署,并支持升级扩容。

多中心管理:ICOS 支持 OpenStack 的多 Region,支持多数据中心级联、跨域管

理以及容灾备份。

安全管理:ICOS 支持对接基于无代理架构的分布式安全,包含分布式防火墙、

IPS、防病毒,构建面向云主机的基础安全防护能力。

高可用:ICOS通过全方位、多平面高可用设计,提升了断电、断网、重启等多

种异常场景下的系统可用性,解决了大规模资源监控下的稳定性问题。

单集群规模:ICOS 支持单一虚拟化集群规模达到 500物理节点、20000云主

机,完成了基于 OpenStack R版本的全球最大规模单一集群实践。

2.4 组件清单和功能地图

ICOS在功能性、可靠性、安全性、支撑工具等方面全面优化开源 OpenStack,

全面接入 OpenStack 各领域核心组件,并根据实际需求自研了部分组件,比如,容

器管理 Cetus、监控告警 Pluto等,这些自研的组件后续也有规划会陆续提交社

区,争取开源。

Page 14: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

7

下表总结了 ICOS 系统中各组件的列表以及我们的技术应对策略,涉及了软件定

义计算、软件定义存储、软件定义网络、容灾备份、运维安全、资源管理与调度、

容器管理等技术方向。后面的功能特色以及关键技术章节也会遵循这些技术方向展

开。

组件 组件简介 技术方向 备注

Nova 云主机管理服务

软件定义计算

增强

Ironic 裸金属服务 增强

Glance 镜像管理服务 增强

Masakari 计算节点高可用 增强

Cyborg 硬件加速服务 增强

Cinder 块存储管理服务

软件定义存储

增强

Manila 文件存储管理服务 基于 SDS增强

Swift 对象存储管理服务 基于 SDS增强

Neutron 网络管理服务

软件定义网络

增强

Octavia 负载均衡服务 增强

Senlin 弹性伸缩服务

资源管理与调度

增强

Heat 资源编排服务 增强

Mistral 分布式工作流管理 增强

Page 15: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

8

Ceilometer 计量服务

业务运营

增强

Cloudkitty 计费服务 增强

Leo 流程审批服务 自研

Prometheus 监控告警组件 增强

Neptune 容灾服务 自研

Trove 数据库服务 增强

Keystone 认证服务 增强

Barbican 密钥管理 增强

Rancher 容器集群管理

容器管理

增强

Cetus 容器管理服务 自研

Kolla 编译构建 自动化运维

增强

Kolla-ansible 自动部署 增强

Chrony 时间同步服务 基础服务 原生

Mariadb 数据库服务 原生

Rabbitmq 消息队列服务 原生

Pluto 监控管理模块 系统监控采集 增强

Gnocchi 采集数据进行计算合

并和存储服务

原生

Page 16: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

9

Telegraf 收集和报告度量指标 增强

Ceilometer 监控数据采集组件 原生

Kapacitor 告警模块 增强

Influxdb 时间序列数据库 增强

Elasticsearch 日志检索模块 增强

Fluentd 日志采集模块 增强

Kibana 日志展示组件 原生

Venus 日志系统管理模块 增强

Aodh 告警通知服务 增强

Grafana 管理员用户界面和平

台可视化引擎

原生

Vitrage 平台问题定位分析服

增强

Skyline UI 组件 页面展示 自研

Scene 场景化操作手册 自研

下图展示了 ICOS核心功能地图:

Page 17: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

10

图 2-2 ICOS核心功能地图

在软件定义计算方面,以云主机服务为核心,ICOS 在在线扩容、整机备份、

云主机内部启动参数、IO 优先级等高级虚拟化特性等方面做了深入优化,具备了业

界最全的云主机生命周期管理能力。此外,针对云主机上异构加速设备,ICOS 通

过引入 Cyborg 组件,实现了异构加速设备的可视化管理,提高了使用 GPU 直通

/vGPU 等功能的便捷性。面向客户高性能 I/O 读写等,可支持不同类型磁盘的直

通,ICOS 支持浪潮自研 SSD 硬盘的直通,IOPS 最高超过 75 万。

围绕容器,ICOS 实现了基于 OpenStack 的 K8S 集群快速高效的部署和管

理,支持多版本 K8S,能够将 K8S 同 ICOS 的裸金属服务深度结合,将容器集群根

据不同的业务负载部署到云主机或者裸金属上,并且支持容器应用的自动化部署、

容器镜像管理、容器服务目录管理、容器监控和弹性伸缩以及容器的持久化存储等

功能,真正实现了用户在一套云环境中对虚拟化计算资源和容器计算资源的并行调

度,实现计算、存储和网络资源的融合共享,降低了运维与管理成本

围绕裸金属,ICOS 进一步完善了裸金属管理的能力,新增裸金属挂载云硬

盘、裸金属监控两大核心功能,可充分利用裸金属的计算性能,又能发挥云端存储

的高可扩展性,裸金属监控则允许用户在统一的运维平台中实时的监控裸金属服务

的运行状况。此外,裸金属 Raid、裸金属网卡 Bond、批量纳管等功能,极大降低

了用户在裸金属运维管理方面的复杂度。

围绕存储资源的高级管理和调度功能,ICOS 完善了云硬盘在线扩容功能、云

硬盘加密、云硬盘回收站、扩展了共享云硬盘功能、增强了云硬盘备份支持,并且

Page 18: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

11

提出新的镜像缓存机制以缩短云主机创建时间。另外,对象存储支持采用 HTTPS

协议进行加密传输,企业可以使用自己的 SSL 证书进行加密访问,使数据传输更加

安全。为了方便用户灵活的对业务进行调度,ICOS 实现了跨存储的热迁移功能,

可以让用户在某个存储容量不足时,在不影响业务的情况下对其进行跨存储迁移。

在网络方面,ICOS 一方面继续完善基于 Neutron + OVS 的软件定义网络 L2-

L7 的功能,如负载均衡支持 UDP、HTTPS,防火墙易用性优化、网络策略模板

等,也重点关注网络平面的转发性能,通过内核旁路、硬件直通和实时内核等技

术,TCP 吞吐性能提升 1 倍,UDP 性能提升 7 倍,二层吞吐达物理网卡限速的

93%,实现 48 小时时统 0 丢包。

在智能运维方面,性能上,ICOS 采用磁盘内存混合的索引机制、采集端采集

时间抖动和数据缓存、告警聚合等机制解决了监控规模、性能、洪水告警等问题。

在功能上,ICOS 新增了如一键式健康检查、容量预测、可视化日志分析系统、事

件管理、调用链等功能,在提升云平台自身智能化程度的同时,大大降低了运维人

员的压力,从而降低 TCO 达 30%以上。

在高可用方面,ICOS 除了继续加强控制面高可用在复杂情况下的测试和优化

之外,重点优化了宿主机高可用的机制,一方面的针对控制、业务、存储三个网络

平面进行细粒度监控,并结合多因子判断矩阵和熔断、限流等技术,进一步优化高

可用的触发机制和疏散机制。

在资源编排和弹性伸缩方面,进一步增加了支持的资源种类,优化了编排逻

辑,支持云物理机、云主机的混合可视化拖拽式编排。

在运营支持方面,一方面新增了 4 大类可视化报表,包括系统整体运行情况、

宿主机、云主机和集群健康度,通过饼图、柱状图、折线图、条状对比图等多种形

式为用户展示系统内按项目、按 TOPN 等进行的资源统计和现实,进一步优化了大

屏,集群内容一目了然,界面充满科技感,美观大方。另外一方面对报表自身的功

能进行了优化,支持周期报表,可以按照日、周、月、季度、年等单位对报表进行

生成和导出,方便运维人员对集群资源的运行情况进行整体把控和工作汇报。

Page 19: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 2ICOS概述

12

安全是一个永恒的话题,ICOS 在安全问题上始终按照最严格的标准进行设计

和开发,最新版本通过了公安部云操作系统增强级安全认证,整个开发过程获得

BSIMM 测评的高度认可,在 12 大安全领域测评中,多项指标业内领先。在安全技

术上,深入内核级安全机制,成功构建了以云主机逃逸、病毒入侵、DDoS 攻击为

代表的安全攻防机制,在实验室充分验证了产品自身的安全性。

围绕安装部署和配置管理,ICOS 以 Kolla 项目为基础,继承社区版本代码开

发的流程,构造 CICD 流程,实现了 ICOS 版本开发的每日构建,持续迭代,快速

部署,保障了开发环境、测试环境、生产环境的代码快速同步。在项目交付过程

中,使用 Kolla 可以实现快速部署,在项目升级中,Kolla 可以实现原子性的升级

或者回退,并且不影响业务的正常访问,提供了有效、快捷、方便、易于维护、方

便版本更新与回退的方案。

针对 ICOS 某些高级功能、如 SR-IOV、设备直通、多存储后端等配置复杂的

痛点,ICOS 支持可视化的配置管理,可通过 UI 界面,通过简单配置,即可实现,

免去了后台登录更改配置文件的麻烦,同时降低了配置出错的概率,极大提升了系

统的稳定性。

Page 20: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

13

3 ICOS 基础技术原理

3.1 分布式的微服务架构

ICOS 采用微服务架构的设计理念,利用精简化的服务组件构建复杂系统。在

ICOS 中,每一种服务被拆分成最小的组件,并彼此独立。各组件之间通过基于异

步 HTTP 或消息传递协议的简单、标准化的管道通信,来取代集中化逻辑和集成

基础架构(基于重量级、非标 准化的平台)。每个服务节点可分布式独立部署,

UI 通过 Rest API 网关调用功能服务。

凭借微服务,每项服务都能独立扩展,以满足临时或季节性的访问流量激增、

批处理以及其他各种业务需求。同时,改进后的故障隔离功能,可将各种服务问题

(例如内存泄漏或数据库连接泄露)的影响限制在一定范围内,并确保不对其他服

务产生影响。微服务的可扩展性补充了云服务的灵活性。

下面将以 ICOS 的计算模块 Nova 为例,说明 ICOS 的微服务架构设计。

Nova 建立在无共享,基于消息的架构,所有的主要的 Nova组件可以运行在多

台服务器上。这意味着大部分的组件之间的通信,需要经由消息队列。为了避免由

于每个组件等待一个响应引起的阻塞,我们使用延时对象,当收到一个响应就触发

一个回调。

Nova使用基于 MySQL 的中央数据库,系统中所有的组件共享这个数据集,数据

的数量和深度非常适合使用 sql数据库。

Nova主要有 API、Compute、Conductor、Scheduler四个核心服务组成,这些

服务之间通过 AMQP消息队列来进行通信。

Nova与其他组件(比如,Neutron、Keystone等)之间通过同步或异步的 REST

通信。

Page 21: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

14

图 3.1-1 Nova 架构

以 ICOS 创建云主机流程为例,解析组件间的交互。

1. 客户(用户)端通过命令行 CLI或 skyline 界面用自己的用户名和密码进行请求

认证组件 keystone 进行用户的验证;

2. keystone 通过查询在 keystone的数据库 user表中是否存在 user 的相关信

息,包括 password 加密后的 hash值,并返回一个 token_id(令牌),和

serviceCatalog(一些服务的 endpoint地址,cinder、Glance-api 后面下载镜

像和创建云硬盘时会用到);

3. 客户端带上 keystone 返回的 token_id和创建云主机的相关参数,通过 Nova-

api地址 Post请求 Nova组件创建云主机;

4. Nova-api接收到请求后,首先使用请求携带的 token_id去访问 keystone,验

证令牌是否有效;

5. keystone 验证通过后返回更新后的认证信息;

6. Nova api通过查询 Nova DB库,比对检查创建云主机的参数是否有效与合法;

7. Nova api 远程调用传递请求、参数给 Nova scheduler,把消息“请给我创建

一台云主机”丢到消息队列,然后定时查询虚机的状态;

Page 22: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

15

8. Nova scheduler 从 queue中获取到“请给我创建一台云主机”的这条消息,

Nova scheduler 访问 Nova数据库,通过调度算法,过滤出一些合适的、空闲

的计算节点,然后进行排序,选定 host(最优节点 id)之后,通过 rpc.call的

方式调用 Nova-compute 服务,把“创建虚机请求”消息再次丢到消息队列

(mq);

9. Nova compute从 MQ中获取到创建云主机请求的消息,然后通过 rpc.call 的方

式查询 Nova数据库中云主机的信息,例如主机模板和 id;

10. Nova conductor 从消息队列中拿到请求查询数据库中该(云主机信息)的消息,

并从 Nova数据库获取信息

11. Nova conductor 把查询到的云主机信息丢到 MQ中,然后 Nova compute 从消息

队列中获取该云主机的信息;

12. Nova compute 请求 Glance 的 restful api,下载所需要的镜像.

13. 同理,Nova compute 请求 neutron api配置网络例如获取虚机的 ip地址、掩

码,网关等信息;

14. 根据上面配置的云主机信息,生成 xml,写入 libvirt.xml文件,然后调用

libvirt driver 去使用 libvirt.xml 文件启动云主机。

通过如上例子发现,Nova 一个创建云主机的用例,与 keystone、cinder、

Glance、neutron 等多个组件通过 rest api 进行交互,而组件内的各服务(例如

Nova-api 与 Nova-sheduler)之间通过消息队列交互。从而也说明了 ICOS 架构

的低耦合,高内聚特性。

3.2 虚拟化核心技术与原理

在讲 ICOS 功能特色之前,需要先了解下虚拟化相关基础知识,因为在 ICOS

的计算、存储、网络等核心模块都应用到了虚拟化的技术。

虚拟化 (Virtualization) 是资源的逻辑表示,实现虚拟资源与物理硬件解耦。

虚拟化技术的实现形式是在系统中加入一个虚拟化层,将下层的资源抽象成另一形

式的资源,提供给上层使用。从广义上来说,虚拟化就是一种采用软硬件分区、聚

Page 23: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

16

合、部分或完全模拟、分时复用等方法来管理计算资源、构造一个或者多个计算环

境的技术。

虚拟化使软件和硬件相互分离,把软件从主要安装硬件中分离出来。在操作系

统与硬件之间,虚拟化软件通过空间上的分割、时间上的分时以及模拟,抽象出一

个虚拟的硬件接口,向上层操作系统提供一个与它原先期待一致的服务器硬件环

境,使得上层操作系统可以直接运行在虚拟环境上,可允许多个操作系统同时运行

在单个物理服务器上。

图 3.2-1 虚拟机监控器类型

虚拟化的核心软件层称为虚拟机监控器 (Virtual Machine Monitor, VMM),

如上图所示,常见虚拟机监控器分为三类:

宿主模式:在 VMM 之下还有一层宿主操作系统,并不直接运作在裸金属上。

由于 Guest OS 对硬件的访问必须经过宿主操作系统,因而带来了额外的性能开

销,但可充分利用宿主操作系统提供的设备驱动和底层服务来进行内存管理、

进程调度和资源管理等。

独立监控器模式:VMM 直接运作在裸金属上,管理和实用底层硬件资源,

Guest OS 对硬件资源的访问都要通过 VMM 来完成,作为底层硬件的直接操作

者,VMM 拥有硬件的驱动程序。

混合模式:为宿主模式和独立监控器模式的综合,VMM 直接运行在裸金属

上,但是驱动程序需要由 Service OS 提供,Service OS 为运行在 VMM 上的一

台特殊云主机。

Page 24: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

17

虚拟化技术的实质:将底层资源进行分区,并向上层提供特定的和多样化的执

行环境。

云主机的定义:是指在一个硬件平台上模拟多个高效的、独立的和实际硬件相

同的虚拟硬件系统,在每个虚拟硬件系统上都可以运行不同的客户操作系统(Guest

OS)。Guest OS 通过虚拟机监控器访问实际的物理资源。因此操作系统和应用程序

在云主机中的运行方式与它们在物理服务器上的运行方式没有区别。

云主机和云物理机的本质区别:与物理服务器相比,云主机不是由真实的电子

元件组成,而是由一组虚拟组件(文件)组成,这些虚拟组件与物理服务器的硬件

配置无关,与物理服务器相比,云主机具有以下优势:

抽象解耦:可以在任何 X86 架构的服务器上运行。云主机的运行环境不再受限

于具体硬件配置,可以进行灵活的配置和迁移。

分区隔离:多个云主机可以同时运行,同时云主机之间还实现数据处理、网络

连接和数据存储的安全隔离。

封装移动:可以将整个云主机系统(包括虚拟硬件、操作系统和配置好的应用

程序)封装于一个或多个文件之中,通过简单的文件复制实现快速部署、备份

及还原,同时还可以在不同的物理服务器之间进行迁移,甚至可以在云主机正

在运行的情况下进行迁移。

弹性扩展:可以对单个物理服务器上的虚拟资源(虚拟 CPU、虚拟网卡、虚拟

磁盘等)在不关闭云主机的情况下,进行按需动态扩展。

Page 25: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

18

图 3.2-2 冯•诺依曼体系结构

如上图所示,冯•诺依曼体系结构中计算机被划分为 CPU(运算器和控制

器)、存储器和输入\输出设备三个模块,相应的 VMM 对物理资源的虚拟可以划

分为三个部分:CPU 虚拟化、内存虚拟化和 I/O 设备虚拟化,其中以 CPU 虚拟化

最为关键。

3.2.1 CPU 虚拟化

经典 CPU 虚拟化方法:

现代计算机体系结构一般至少有两个特权级(即用户态和核心态,X86 架构的

CPU 有四个特权级 Ring0~ Ring3)用来分隔系统软件和应用软件。那些只能在处

理器的最高特权级(内核态)执行的指令称之为特权指令,一般可读写系统关键资

源的指令(即敏感指令)绝大多数都是特权指令(X86 存在若干敏感指令是非特权

指令的情况)。如果执行特权指令时处理器的状态不在内核态,通常会引发一个异

常而交由系统软件来处理这个非法访问(陷入)。经典的虚拟化方法就是使用“特

权解除”和“陷入-模拟”的方式,即将 Guest OS 运行在非特权级,而将 VMM 运

行于最高特权级(完全控制系统资源)。解除了 Guest OS 的特权级后,Guest OS

的大部分指令仍可以在硬件上直接运行,只有执行到特权指令时,才会陷入到

VMM 模拟执行(陷入-模拟)。“陷入-模拟” 的本质是保证可能影响 VMM 正确

运行的指令由 VMM 模拟执行,大部分的非敏感指令还是照常运行。

X86 架构虚拟化方法:

X86 体系结构拥有四个特权级以分隔系统软件和应用软件,如下图所示。其

中,内核在 Ring 0 级,应用程序在 Ring 3 级。依照经典的 CPU 虚拟化技术,在引

入虚拟化之后,在全虚拟化和半虚拟化场景中,VMM 接管系统最高权限,由此

VMM 在 Ring 0 级,内核迁移至 Ring 1 级。

Page 26: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

19

图 3.2.1-1 特权级

在虚拟化技术中,具有以下功能的指令被认为是敏感指令:操作特权资源、修

改云主机的运行模式、修改云物理机的运行状态、读写敏感的寄存器和内存、访问

存储保护系统、内存系统或地址重定位系统以及所有 I/O 指令。但是 X86 架构中

存在若干敏感指令是非特权指令的情况,即敏感指令中只有一部分属于特权指令,

如下图所示在传统的计算机体系架构中,只有特权指令才能在最高特权级运行。由

此,云主机调用了某些会影响正常运行的敏感指令便不会陷入到 Ring 0 级,而是由

VMM 模拟执行,从而产生“虚拟化漏洞”。

图 3.2.1-2 指令集

为解决以上“虚拟化漏洞”问题,全虚拟化技术在执行时将 VM 上执行的

Guest OS 指令翻译成 X86 指令集,其某一子集中的敏感指令被替换成陷入指令,

陷入到 Ring 0 模式执行;半虚拟化技术通过修改 Guest OS 的代码,将含有敏感指

Page 27: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

20

令的操作,替换为对 VMM 的超调用 Hypercall,将控制权转移到 VMM;硬件辅

助虚拟化技术将非根模式下所有敏感指令重新定义,使它们能不经虚拟化直接运行

或通过“陷入再模拟”的方式处理,在模式切换过程中,上下文的保存恢复由硬件

来完成,极大提高了切换效率。

而在硬件辅助虚拟化场景中,其基本思想就是引入新的处理器运行模式和新的

指令,使得 VMM 和 Guest OS 运行于不同的模式下,Guest OS 运行于受控模式,

原来的一些敏感指令在受控模式下全部会陷入 VMM,这样就解决了部分非特权的

敏感指令的“陷入-模拟”难题,而且模式切换时上下文的保存恢复由硬件来完成,

这样就大大提高了“陷入-模拟”时上下文切换的效率。以 Intel VT-x 技术为例,该

技术增加了在虚拟状态下的两种处理器工作模式,即根模式和非根模式。如下图所

示,Guest OS 在非根模式的 Ring 0 级,VMM 在根模式下。通过硬件辅助的方

式,尽可能少地在客户机和 VMM 之间切换,减少上下文切换的开销,并减少

VMM 的模拟任务。

图 3.2.1-3 硬件辅助虚拟化特权级

3.2.2 内存虚拟化

操作系统对内存有两点认识,首先,内存都是从物理地址 0 开始的;其次,内

存是连续的,或者至少在一些大的粒度(如 256M)上连续。但是在虚拟化环境

下,物理内存被多个客户机操作系统同时使用,物理地址 0 只有一个,可以保证为

每台云主机分配连续内存,却牺牲了使用效率。而 VMM 需要“欺骗”客户机操作

Page 28: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

21

系统,使客户机操作系统认为其对内存的两点要求都还满足。这种欺骗的过程,即

内存虚拟化。

内存虚拟化的核心,即引入一层新的地址空间:客户机物理地址空间,如下图

所示:

图 3.2.2-1 客户机物理空间地址

由此,内存虚拟化前两层地址映射关系扩展为三层地址映射关系,如下图所

示:

图 3.2.2-2 内存地址空间三层映射

内存虚拟化要处理好以下两个问题:首先,给定一个云主机,维护客户机物理

地址到宿主机物理地址之间的映射关系;其次,截获云主机对客户机物理地址的访

问,并根据所记录的映射关系,将其转换至宿主机物理地址。

在全虚拟化技术中,VMM 负责了客户机物理地址到宿主机物理地址间的映

射;半虚拟化技术中,KVM 将客户机物理地址到机器地址的翻译表(P2M 表)暴

Page 29: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

22

露给客户操作系统,从 VMM 中获得属于本云主机的内存空间信息;在硬件辅助虚

拟化技术中,以 Intel-EPT 技术为例,通过硬件实现的扩展页表(Extended Page

Table)技术,加速实现了客户机逻辑地址到宿主机物理地址的转换,如下图所

示。

Page 30: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

23

图 3.2.2-3 EPT 扩展页表

3.2.3 I/O 设备虚拟化

在虚拟环境中,I/O 设备面临着有限的外设资源与多个客户操作系统对外设访

问需求的矛盾。而 VMM 则需要截获客户机操作系统对外设的访问请求,以软件或

硬件辅助的方式模拟真实物理设备的效果。

设备模拟的方式上,全虚拟化技术使用软件精确模拟与物理设备完全一样的接

口,客户操作系统驱动无须修改就能驱动这个虚拟设备;半虚拟化技术通过修改客

户操作系统,使前后端相互协作,提供更加高效的 I/O 虚拟化;而硬件辅助虚拟化

技术直接将物理设备分配给某个客户操作系统,由客户操作系统直接访问 I/O 设备

不经过 VMM。

VMM 通过 I/O 虚拟化来复用有限的外设资源,其通过截获 Guest OS 对 I/O

设备的访问请求,然后通过软件模拟真实的硬件,目前 I/O 设备的虚拟化方式主要

有三种:设备接口完全模拟、前端/后端模拟、直接划分。

1、设备接口完全模拟:

即软件精确模拟与物理设备完全一样的接口,Guest OS 驱动无须修改就能驱

动这个虚拟设备,VMware 即使用该方法。

优点:没有额外的硬件开销,可重用现有驱动程序;

Page 31: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 3ICOS基础技术原理

24

缺点:为完成一次操作要涉及到多个寄存器的操作,使得 VMM 要截获每个

寄存器访问并进行相应的模拟,这就导致多次上下文切换;由于是软件模拟,性能

较低。

2、前端/后端模拟:

VMM 提供一个简化的驱动程序(后端, Back-End),Guest OS 中的驱动程

序为前端 (Front-End, FE),前端驱动将来自其他模块的请求通过与 Guest OS 间

的特殊通信机制直接发送给 Guest OS 的后端驱动,后端驱动在处理完请求后再发

回通知给前端,KVM 即采用该方法。

优点:基于事务的通信机制,能在很大程度上减少上下文切换开销,没有额外

的硬件开销;

缺点:需要 VMM 实现前端驱动,后端驱动可能成为瓶颈。

3、直接映射:

即直接将物理设备分配给某个 Guest OS,由 Guest OS 直接访问 I/O 设备

(不经 VMM),目前与此相关的技术有 IOMMU(Intel VT-d, SR-IOV 等),

旨在建立高效的 I/O 虚拟化直通道。

优点:可重用已有驱动,直接访问减少了虚拟化开销;

缺点:需要购买较多额外的硬件。

Page 32: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

25

4 ICOS 功能特色和实现原理

4.1 计算服务

随着大中型企业快速的发展,企业用户规模不断扩大,同时智能化技术在企业

应用中不断被普及,导致应用的复杂性进一步提升,对支撑这些应用的云主机的性

能和稳定性要求越来越高。

虽然 OpenStack 社区和部分厂商已经提供了一些提升云主机性能、灵活性和稳

定性的优化方案,如 CPU 绑定、亲和性调度等,但是这些优化往往都处于方案阶

段或者 POC 阶段,需要大量的手动配置,流程繁琐,学习成本极高,而且由于缺

少全面的测试和验证,功能不够稳定,无法商用。对于某些厂商的产品来说,仅能

够涵盖一条或者几条优化点,不能完全满足客户应用的需求。

ICOS 站在产品的角度,为客户提供了一系列提升云主机性能、灵活性和稳定

性的功能,这些功能都经过了产品级别的严格测试,充分满足当前业界主流的各种

应用场景,比如,AI 智能要求的高性能计算场景、数据库要求的大内存应用场景

等。

4.1.1 云主机全生命周期管理

功能描述

创建云主机

1. 支持使用镜像、云硬盘、云硬盘快照、云主机快照多种来源秒级创建云主

机。

2. 系统盘配置支持设置系统盘的大小、卷类型、系统盘删除策略。

3. 网络配置支持指定网络、指定 ip 地址、指定端口、指定 mac 地址。

4. 支持在创建时配置云主机的项目、用户、可用域、主机。

5. 支持创建时修改云主机密码、向云主机注入密钥;

Page 33: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

26

6. 支持云主机在创建时用户自定义系统配置,如设置云主机非 root 用户的用

户名和密码、设置静态 IP,设置 ssh 登录超时配置,通过给用户提供交互

接口,灵活地实现业务的初始化配置。

7. 并且支持同时创建多个不同配置需求的云主机,可针对每个云主机进行个

性化配置,实现个性化云主机的快速创建。

云主机暂停、取消暂停

ICOS 支持将云主机暂停,暂停状态时不能提供服务。且暂停状态的云主机可

以通过恢复操作,快速恢复为暂停前的状态。运行在云主机中的进程并不能感知自

己被暂停过。

云主机挂起、恢复

ICOS 支持将云主机挂起,云主机的挂起状态与暂停状态很相似,暂停是将云

主机的状态保存在内存中,而挂起是将云主机状态保存到硬盘中,云主机占用的主

机资源已经释放。在表现上二者行为类似,由于内存的读写速度比硬盘快很多,所

以挂起状态的云主机恢复时间比暂停状态的更长,但是挂起状态的云主机已全部释

放主机资源的占用。

云主机搁置、取消搁置

在 ICOS 中,当云主机长期不需要使用时,可以将云主机搁置状态,云主机搁

置后会释放在 ICOS 云平台中占有的资源。云主机实际上已经被删除,必要的配置

信息保存到数据库中,以后再取消搁置云主机时,ICOS 会根据保存的配置信息重

建这个云主机。

技术原理

ICOS 云主机生命周期管理基于用户需求为云主机提供生命周期管理。主要基

于如下层次划分提高云主机的生命周期管理服务:

Page 34: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

27

图 4.1.1.2-1 云主机生命周期管理

• API 接口层:对外统一提供标准化接口。接受和响应用户的云主机管理请

求。

• 调度及任务管理层:云主机使用多种过滤器或调度算法,选择目标计算节

点管理云主机。在对云主机生命周期操作时生成云主机操作任务,形成消息通知,

时刻更新并记录云主机生命周期操作过程中的云主机状态云主机。

• 计算节点服务层:负责通过北向接口对接各种虚拟化管理程序,ICOS 通过

对接 libvirt 实现云主机的生命周期管理。计算节点服务接收到相应的云主机管理操

作请求后,管理云主机的各种资源,调用 Hypervisor 的操作接口,实现云主机的

各种生命周期管理。

约束

Page 35: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

28

4.1.2 异构设备加速

功能描述

异构加速设备直通是把物理服务器上的加速设备,包括 GPU、FPGA、SSD 等

资源直通到云主机上使用,使得云主机可以拥有高计算、快存储的处理能力。用户

可以在创建云主机的时候选择加速器规格,加速器规格中包含 GPU、FPGA、SSD

等一系列加速资源的组合,也可以对已有的云主机执行绑定、解绑加速器设备的操

作。

创建云主机指定加速器规格

用户首先创建加速器规格,加速器规格是一系列加速资源(GPU、FPGA、

SSD 等)的组合,然后在创建云主机时指定一个加速器规格,Nova 使用加速设备

组合条件,调度到拥有这些加速设备的主机上,进而创建直通到这些加速设备的云

主机。同时,通过设置不同的加速器规格,比如加速器的类型、厂商、型号,可以

有选择的对加速器进行调度,满足用户对不同加速设备的使用需求。

支持云主机绑定、解绑加速器设备

用户选择一台运行中或者关机状态的云主机,在设备管理,加速器设备中,选

择计算节点上的加速器设备,点击绑定,完成加速器与云主机的直通。同样可以在

已绑定的加速器设备列表中,选择一个加速器设备,点击解绑,完成该加速器与云

主机的解绑操作。

技术原理

ICOS 统一维护物理加速器设备信息和云主机与加速设备的绑定关系。

首先,计算节点 agent 定时获取服务器加速资源,上报写入数据库,同时上报

资源管理组件同步系统资源信息。

Page 36: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

29

图 4.1.2.2-1 获取加速资源

说明:① 设置加速设备驱动(nvidia_gpu_driver、intel_fpga_driver 等)

② cyborg-agent定期上报加速设备资源给 cyborg-conductor

③ cyborg-agent定期根据配置的加速设备驱动发现加速设备

④ 保存数据到 cyborg数据库

⑤ 上报数据到资源管理组件

在创建云主机指定加速器规格。用户创建云主机指定加速器规格时,首先从资

源管理组件获取满足加速器规格和资源规格的主机,调度到该主机,调用加速设备

管理组件生成云主机和加速设备的映射关系,将加速器设备写入到云主机的 xml 文

件中,然后使用该 xml 文件启动云主机。

Page 37: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

30

图 4.1.2.2-2 创建云主机指定加速器规格

说明:① 创建加速器规格

② 创建云主机指定加速器规格

③ 选择可用的主机

④ 从资源管理组件中选择候选主机

⑤ 启动云主机

⑥ 绑定云主机和加速设备对应关系

用户单独指定加速设备绑定到云主机时,首先调用 Libvirt 的设备添加接口,

将加速设备绑定到云主机,然后调用资源管理组件占用加速资源,最后调用加速设

备管理组件生成云主机和加速设备的映射关系。

Page 38: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

31

图 4.1.2.2-3 绑定加速器

说明:① 选择加速器绑定到云主机

② 调用 Libvirt挂载加速设备到云主机

③ 资源管理组件中维护云主机与加速器资源的关系

④ 加速设备管理组件中中维护云主机与加速设备的关系

用户单独指定加速设备解绑云主机时,首先调用 Libvirt 的设备添加接口,解

除加速器设备绑定到云主机,然后调用资源管理组件释放加速资源,最后调用加速

设备管理组件解除云主机和加速设备的映射关系。

约束

加速器设备直通要求云主机绑定的加速器设备必须是所在计算节点的物理资

源,因此所有涉及到云主机更改所在计算节点的操作都不被允许,否则会因为绑定

不到加速设备而启动失败。所以对绑定有加速设备的云主机暂时不允许的操作有暂

停、搁置、挂起、迁移、在线迁移、更改配置、重建、疏散等。

当对绑定有加速器设备的云主机进行暂停、搁置、挂起、迁移、在线迁移、更

改配置、重建、疏散等操作时,平台会予以拦截,给出错误提示信息,不允许用户

进行以上操作。

Page 39: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

32

4.1.3 云主机 CPU 绑定

功能描述

CPU Pinning 是将用户云主机 vCPU 直接绑定到物理服务器的 CPU 上,从而

改善云主机的 CPU 调度精确度并提升云主机的性能。当启用 CPU Pinning 后,云

主机将被限定在宿主机的某些特定 CPU 上,以提升云主机的性能,对于 NUMA

类型的云主机,CPU pinning 可使得进程仅访问就近内存,提升性能,避免进程之

间相互影响,比如防止繁忙的进程过多的占用资源,影响其他的进程。

技术原理

CPU pinning 策略将云主机 vCPU 强制绑定到宿主机的物理 CPU 上,来提升

云主机的性能。

如下是我们针对 CPUpinning 调优后,分别测试 VM 在 1 线程和 8 线程的情况

下开启 CPU pinning 的测试结果(云主机配置均为 8 vCPU、32G RAM,操作系

统为 CentOS 7,且为同一宿主机)。下面的测试结果可以看出在同一宿主机,同

时执行 unixbench 测试,开启 CPU pinning 后的性能远优于关闭 CPU pinning 的

VM。1 线程性能提升 48.1%,8 线程性能提升 172.49%。

图 4.1.3.2-1 CPU pinning 策略

Page 40: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

33

图 4.1.3.2-2 CPU pinning 测试结果(1 线程)

图 4.1.3.2-3 CPU pinning 测试结果(8 线程)

约束

当云主机启用 CPU pinning 后,对云主机进行迁移、在线迁移、更改配置、在

线扩容操作会导致云主机 CPU pinning 失效。

4.1.4 云主机大页内存

功能描述

随着计算需求规模的不断增大,应用程序对内存的需求也越来越大。为了实现

虚拟内存管理机制,操作系统对内存实行分页管理。

技术原理

对于 Linux 系统运行的应用程序而言,使用的都是虚拟地址,当应用程序读写

一个指定的虚拟地址时,内存管理单元会自动进行虚拟地址到物理地址的转换。一

个虚拟地址可以映射到多个物理地址,但当前映射到哪一个物理地址取决于当前的

Page 41: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

34

页表(Page Table,一个虚拟地址到物理地址的映射转换表)内容,页表存储在主

存储器中,查询速度相对比较慢。为了提高地址转换性能,大多数体系架构都提供

一个快速查找缓冲 TLB(Translation Lookaside Buffer,见下图),TLB 读写速度

非常快,比如在 x86 体系架构上,TLB 和普通的 CPU CACHE 并没有本质区别,

只不过 TLB 专用于缓存页表数据,而普通的 CPU CACHE 缓存实际的代码指令或

数据。TLB 缓冲了最近使用过的页表项,在进行虚拟地址到物理地址的转换时先查

这个 TLB 缓冲,只有当查找 TLB 缓冲失败(TLB miss)后才再去查普通页表(有

的架构支持同时进行查找)。当然,根据局部性原理,大多数情况下应该都是查找

TLB 缓冲命中(TLB hit)的,所以性能得以大大提升。需要知道如下几点:

1,TLB 缓冲能大大提升虚拟地址到物理地址的转换速度。

2,TLB 缓冲大小有限,只能缓存一定量的页表项目(Entry)。

3,如果一个页越大,那么一个页表项目就能表示越多的地址空间,整个 TLB

缓冲命中的几率就越大。

图 4.1.4.2-1 大页内存

在 Linux 平台上,内存页面的默认大小便被设置为 4096 字节(4KB),虽然

原则上内存页面大小是可配置的,但绝大多数的操作系统实现中仍然采用默认的

Page 42: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

35

4KB 页面。在 Linux 操作系统上运行内存需求量较大的应用程序时,由于其采用

的默认页面大小为 4KB,因而将会产生较多 TLB Miss 和缺页中断,从而严重影

响了应用程序的性能。

通过使用大页内存来取代传统的 4KB 内存页面,使得管理虚拟地址数变少,可

以加快从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存

的整体性能。

ICOS 大页内存技术的实现分两方面,一方面用主机聚合技术,将配置有大页

内存的主机和没有配置大页内存的主机分开,使得可以根据不同的资源选择创建不

同类型的云主机;另一方面在云主机资源规格中可以通过元数据设置内存页的大

小、主机聚合信息以及云主机 NUMA 节点个数,从而保证创建大页内存的云主

机。

约束

目前只支持 2M 和 1G 两种大小的内存页,使用之前需要先在计算节点上配置好

大页内存。

4.1.5 云主机在线扩容

功能描述

在不影响用户业务的情况下,ICOS 允许动态为云主机增加如 VCPU、内存、

磁盘容量等规格,从而实现云主机计算资源的在线向上调整。该功能极大满足了在

业务场景要求高,不能中断情况下实时扩容云主机的诉求。

技术原理

云主机规格在线扩容可以在云主机在运行过程中对 vCPU、内存、磁盘进行扩

容,而并不影响现有业务的运行,如下图所示。

Page 43: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

36

Nova Rest API

Messaging

Scheduler

DB

Libvirt Driver

CPU

Disk

Conductor

ComputeMemory

图 4.1.5.2-1 在线扩容

目前,OpenStack 社区并不支持在线扩容功能,且很多厂商也不支持,或者仅

作为一个 POC 功能来满足客户简单应用。

ICOS 基于 Libvirt 实现对云主机 CPU、内存及磁盘在线扩容功能,支持对云

主机的 CPU、内存、系统盘之部分资源在线扩容,也支持整体资源进行在线扩容。

ICOS 可以根据云主机的操作系统类型来决定是否支持在线扩容,用户可以根

据需要调整云主机在线扩容的配置,可以选择性的开启/关闭云主机在线扩容配

置。CPU 在线扩容理论上可以扩容到到当前计算节点逻辑核数,用户无需担心云主

机是否已经达到 CPU 扩容上限,在不满足扩容条件的时候会给出合理提示。内存

在线扩容理论上可以支持到云主机当前所在物理主机的内存总量。磁盘在线扩容理

论上可以支持到系统当前配置的后端存储容量

约束

目前,云主机 CPU 在线扩容的最大个数不能超过云主机所在计算节点的逻辑

CPU 核数。

Page 44: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

37

4.1.6 云主机在线迁移

功能描述

在云计算基础架构中,云主机在线迁移已成为公有云和私有云的必备功能。云

主机在线迁移是指将一台云主机从一个云物理机迁移至另一个云物理机,而迁移过

程中云主机继续执行原有指令而不会中断的一种技术。

当某个物理主机资源竞争非常激烈而其他物理主机资源空闲率高时,用户可以

选择在线将压力较大的云主机迁移到合适的物理主机上,期间并不影响业务的运

行,这样可以保证云主机更加高效的运行。

技术原理

ICOS 有两种在线迁移类型:Live Migration 和 Block Migration。Live

Migration 需要实例保存共享存储中,这种迁移主要是实例的内存状态的迁移,速

度会很快。Block Migration 除了实例内存状态要迁移外,还得迁移磁盘文件,速

度会慢些,但是它不要求实例存储在共享文件系统中。

云主机在线迁移大致分五个步骤:

第一步迁移准备阶段,即通过调度器,将 NODE A 上的 VM 要进行迁移的信

息告诉 NODE B, NODE B 会开始一些准备工作(准备创建磁盘等)。

图 4.1.6.2-1 迁移准备

Page 45: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

38

第二步:资源预留阶段,可以理解成先是在 B 上确定是否有资源来启动和 VM

A 相同配置的云主机,并预留这个云主机。

图 4.1.3.2-2 资源预留

第三步:开始拷贝阶段,先将磁盘信息进行拷贝(块迁移会用到),然后将内

存以及脏页进行拷贝拷贝

图 4.1.3.2-3 开始拷贝

第四步:停止和拷贝阶段,此时两台 VM 都会被暂停,会将剩余的 pages 和

CPU 状态进行拷贝拷贝。从这里可以知道,在热迁移的过程中,VM 不会完全都在

运行状态,它会有短暂的暂停时间(注意并不是关机),在实际的线上环境中,这

么一点时间是可以接受的.

Page 46: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

39

图 4.1.3.2-4 停止和拷贝

需要补充一点:云主机迁移方案中的实时迁移是用一个预拷贝算法去迭代拷

贝,在每次拷贝的过程中用内部记录的方式记录内存“脏”页,当“脏”页数据集小于

一定程度时,比如 4K 的时候,停止云主机,把内容和寄存器迁移,由于需要停机

拷贝的内容非常少,因此停机的时间非常短,不过实时迁移一般是相同体系的 CPU

才能相互迁移。

第五步:完成阶段,VM A 在 NODE B 中启动。

约束

(1)云主机与宿主机存在设备映射时不允许在线迁移,如存在 cpu 绑定、gpu 直

通、大页内存、裸磁盘直通等约束时不允许在线迁移。

(2)目标主机资源不足时,会导致在线迁移失败。

(3)云主机在不同指令集的宿主机之间在线迁移,会导致在线迁移失败。

4.1.7 云主机 QoS

功能描述

在使用云主机的过程中,同一个物理主机或者同一个聚合内的多台云主机如果

读写负荷较大,可能会导致其他云主机因为抢占不到资源而运行卡顿,从而影响业

务的正常运行。ICOS 提供针对 CPU、内存、磁盘、网卡的 QoS 设置,用户可以根

Page 47: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

40

据业务场景的不同设置不同的 QoS 规则,从而保证不同类型的云主机根据业务场景

可以获取不同的资源。

数据中心资源总是有限的,包括网络资源、后端存储资源,只要存在抢占资源

的情况,就需要 QoS(服务质量)来管理资源的分配,保证关键资源(比如

CPU、内存、磁盘 I/O)的服务质量(QoS)的合理分配,对于云主机的稳定性至

关重要。特别是同一个集群的多台云主机如果读写负荷较大,可能会导致其他云主

机因为抢占不到资源而运行卡顿,这个时候需要 QoS 的配合来限制云主机的 IO 速

率及读写带宽等。

技术原理

当前社区 OpenStack 版本仅支持 CPU、磁盘的 QoS,而不支持内存 QoS,

ICOS 增加了内存 QoS,使得 QoS 功能更丰富全面。

ICOS 向用户提供云主机 CPU QoS、内存 QoS 以及磁盘 QoS。

图 4.1.7.2-1 云主机 QoS 技术原理

CPU QoS:当主机的 CPU 因资源不足导致云主机间竞争时,CPU QoS 策略可

以优先保证运行重要业务的云主机优先占用主机 CPU 资源。 ICOS 支持从两方面

Page 48: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

41

设置 CPU QoS:一方面创建云主机时通过设置 cpu_shares 参数来保证云主机 CPU

份额的功能,该参数是个相对值,假设设置云主机 A cpu_shares 为 1536,设置云

主机 B 为 512。那么在 CPU 满载时,云主机 A 使用 CPU 资源占 3/4,云主机 B

使用 CPU 资源占 1/4;另一方面, cpu_shares 只限制了使用下限,如果同时还

需要设置 CPU 使用上限,可以通过 cpu_quota 和 cpu_period 两个参数来设置

CPU 限额的功能。cpu_period 统计 CPU 使用的周期,单位为微妙。cpu_quota 表

示周期内允许被占用的 CPU 时间(指单核的时间,多核是需要在设置时累加)。

如果任务在一个 cpu_period 周期内使用的 CPU 时间超过了 cpu_quota,则进入抑

制状态,并且需要等下一个周期才能继续使用 CPU。举例,

cpu_period=1000000,cpu_quota=4000000, 周期为 1 秒,允许使用 4 秒 CPU 时

间。(假设 CPU>=4 核心,表示在一个使用周期(1s)内可以跑满 4 核资源).

内存 QoS:当主机的内存资源不足出现竞争时,内存 QoS 策略可以优先保证

运行重要业务的云主机优先占用主机内存资源。ICOS 的内存 QoS 功能可以通过在

创建云主机时设置 soft_limit 参数来实现。

磁盘 QoS:磁盘 QoS 功能可以实现对云主机磁盘读写 IOPS 和读写请求速率进

行限制。ICOS 的云主机磁盘 QoS 包括两方面,一方面是系统盘 QoS,另一方面是

数据盘 QoS。系统盘 QoS 可以通过配置云主机使用的资源规格的 QoS 元数据来实

现,在创建云主机时应用该资源规格,可以实现对该云主机的系统 QoS 控制。数据

盘 QoS 可以通过配置云硬盘类型的 QoS 规格关联来实现,使用云硬盘类型创建云

硬盘,最后,再将设置有 QoS 的云硬盘挂载到云主机上,可以实现对该云主机的数

据盘 QoS 控制。

ICOS 支持两种方式来设置云主机 QoS,一方面,在创建云主机的时候可以设

置 CPU 和内存 QoS;另一方面,云主机创建出来后,对于运行、关闭、暂停、挂

起状态的云主机,支持配置云主机 CPU 和内存 CPU。磁盘 QoS 通过设置资源规格

元数据来实现。

约束

修改云主机 QoS 后会重启云主机,以便设置的 QoS 配置生效。

Page 49: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

42

4.1.8 云主机在线修改密码

功能描述

在云主机使用过程中,用户可能需要在不影响正常业务的情况下修改云主机密

码,并且一台云主机可能有多个用户角色权限,在修改某个用户密码时,不能影响

其他用户正常访问,因此 ICOS 支持在线指定用户名称修改云主机密码。

技术原理

对于一台云主机有 A、B 两个用户角色,当需要修改用户 A 的密码时,不能影

响 B 用户正常访问。ICOS 实现了在线指定用户名称修改云主机密码功能,修改密

码后立即生效,不需要重启云主机,下次该用户进行访问时,需要使用新密码。

图 4.1.8.2-1 在线修改密码

Page 50: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

43

约束

云主机内部需要安装 QGA(Qemu Guest Agent)工具,云主机要具有

hw_qmeu_guest_agent=yes 元数据属性,对于部分 Windows 云主机,需要安装相

应的 virtio-serial 驱动。

4.1.9 云主机标签管理功能

功能描述

在云主机使用过程中,云主机的数量可能达到成千上万台,且每台云主机有着

不同的功能,这就需要对云主机进行区分,如果能给云主机做上标记,这在很大程

度上便于对云主机进行管理。

技术原理

ICOS 支持为云主机添加标签,且支持添加多个标签(但标签名称对于同一个

云主机是唯一的)。ICOS 还支持通过标签快速查找云主机、并且支持模糊查找,

支持删除标签。

图 4.1.9.2-1 云主机标签管理

约束

(1)云主机标签仅支持数字、中文、英文(字母不区分大小写)。

Page 51: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

44

(2)一台云主机标签数量不超过 50 个,但标签不超过 60 字符。

4.1.10 云主机控制台文本远程粘贴

功能描述

该功能支持对云主机“发送远程命令”,即对云主机发送常见的组合快捷键,

例如 Ctrl + Alt + Del。同时也提供“粘贴命令”功能,允许用户将本地编辑好的脚

本粘贴到“粘贴命令”文本域,点击发送按钮,脚本内容会自动传送到远程主机打

开的文本编辑器中或命令行终端。

技术原理

该技术主要的实现思路是,把用户对控制台的“远程粘贴”模拟为用户的手动

输入,期间起关键作用的是 RFB 协议。RFB 协议(Remote Frame Buffer) 广泛应用

于各种远程桌面产品,它的一项重要特性之一就是实现远程桌面客户端本地键盘事

件到远程桌面的键盘事件同步。具体的同步原理是,客户端监听并解析输入事件,

使用 RFB 协议库封包该事件的触发设备(鼠标,键盘等),触发事件(如键盘按压,鼠

标点击) 以及 Key Code(如字符 A 的 ASCII 码 65), 并通过网络发送事件同步信

息到远程桌面,远程桌面作为服务端解析 RFB 协议包,完成相应输入事件的同步。

基于上述原理,该功能的实现是,先从“粘贴命令”的文本域读取用户粘贴进来的

文本,解析各个字符对应的 ASCII 码,调用网页控制台项目集成的 RFB 协议的 js

库,将文本逐字符封装为键盘输入事件,发送到远程桌面,从而使后者能获取到用

户粘贴的文本。

约束

“粘贴命令”功能对文本内容有必要约束:文本字符仅限于 ASCII 范围,即支持

大小写字符、数字、特殊字符,不支持中文。

Page 52: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

45

4.1.11 NUMA 拓扑

功能描述

在对计算要求比较高的场景下,CPU 访问内存的速度可能决定了处理能力的快

慢,当前的计算机都是多处理器系统,而 NUMA 是多处理系统中使用的一种内存

体系结构,在该体系结构中,处理器访问内存所需的时间取决于内存相对于处理器

的位置。在 NUMA 系统上,与非本地内存(附加到另一个处理器的内存)相比,

处理器能够更快地访问本地内存(直接附加到该处理器的内存)。 NUMA 会尝试

弥补处理器与其所使用的内存之间的速度差距。因此基于上述原因,ICOS 提供针

对 NUMA 技术的云主机创建,使得云主机获取的物理 CPU 和内存属于同一个

NODE,大大提升了云主机的处理能力。

技术原理

在 NUMA 体系结构中,处理器访问内存所需的时间取决于内存相对于处理器

的位置,如上图所示。在 NUMA 系统上,与非本地内存(附加到另一个处理器的

内存)相比,处理器能够更快地访问本地内存(直接附加到该处理器的内存)。

NUMA 会尝试弥补处理器与其所使用的内存之间的速度差距。为此,NUMA 以每

个处理器为基础提供单独的内存,从而可避免当多个处理器尝试访问同一内存时出

现的性能下降的情况。每个专用内存块称为一个 NUMA 节点。一般情况下,一个

物理 CPU 有多个核心,每个核心可以按照 CPU 的设计来并行计算和连接到不同的

内存中,具有 8 核心的处理器可分为 2 个 NUMA 节点,其中核心 0~3 属于

NUMA 节点 0,核心 4~7 属于 NUMA 节点 1,并且还有一组内存(RAM)可以

访问。如果一个程序运行在 NUMA 节点 0 上,并占有一些内存,那么在 NUMA

感知操作系统或者虚拟层中,NUMA0 就会最大满足运行程序所需要内存。之所以

能最大程度地满足上述需求,是因为 NUMA 0 中有一个能直接连接到同一节点的

内存(RAM)。如果这里没有足够的内存空间允许 NUMA 0 满足需求,则会出现

NUMA 跨越,那么操作系统或者 Hypervisor 层将从另一个 NUMA 节点中分配内

存。例如从 NUMA 1 中分配内存,这样 NUMA 节点 0 在运行过程中就会间接的

访问 NUMA 节点 1 的内存空间。这种间接的访问会造成性能的降低。

Page 53: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

46

图 4.1.11.2-1 NUMA 拓扑

NUMA 的几个概念总结:

Socket 就是主板上的 CPU 插槽;

Core 就是 Socket 里独立的一组程序执行的硬件单元,比如寄存器,计算单元

等;

Thread:就是超线程 Hyperthread 的概念,逻辑的执行单元,独立的执行上

下文,但是共享 Core 内的寄存器和计算单元。

图 4.1.11.2-2 NUMA 概念

NUMA 体系结构中 NODE 的概念,其实是用来解决 Core 的分组的问题,具

体参见上图来理解(图中的 OS CPU 可以理解 Thread,那么 Core 就没有在图中画

Page 54: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

47

出),从图中可以看出每个 Socket 里有两个 NODE,共有 4 个 Socket,每个

Socket 2 个 NODE,每个 NODE 中有 8 个 Thread,总共 4(Socket)× 2(NODE)×

8 (4Core × 2 Thread) = 64 个 Thread。

图 4.1.11.2-3 NUMA 体系结构

由于每个 NODE 内部有自己的 CPU 总线和内存,所以如果一个云主机的

vCPU 跨不同的 NODE 的话,就会导致一个 NODE 中的 CPU 去访问另外一个

NODE 中的内存的情况,这就导致内存访问延迟的增加。在有些特殊场景下,比如

NFV 环境中,对性能有比较高的要求,就非常需要同一个云主机的 vCPU 尽量被

分配到同一个 NODE 中的物理 CPU 上。因此在 ICOS 版本中增加了基于 NUMA

感知的云主机调度的特性。

ICOS 提供云主机模拟 CPU NUMA 拓扑结构功能,使云主机能够根据 vCPU

配置,将内存分布到不同的 vNode 节点上,在云主机内部展示 vCPU 与内存对应

关系。云主机的 NUMA 配置,可以解决因物理 CPU 资源分配不平衡而引起的云

主机性能瓶颈问题。当启动云主机时,云主机 NUMA 根据当前主机内存和 CPU

负载,选择负载较轻的 NUMA 节点放置云主机的 vNode,使云主机同一 vNode

的 CPU 和内存资源分配在同一个 NUMA 节点上。其主要应用在具有海量高负载

数据运算的场景

Page 55: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

48

4.1.12 USB 直通

功能描述

USB 直通技术可以将主机上的 USB 设备、加密狗设备直接映射给该主机上的

云主机,从而使得云主机可以使用该 USB 设备、加密狗设备。支持挂载和卸载操

作。

技术原理

ICOS 的 USB 直通功能主要分为 3 部分:

1、获取主机上的 USB 设备列表:通过主机命令来获取主机上的 USB 设备列

表,并对列表进行了过滤,主要是过滤了 root hub 和虚拟键盘、鼠标,以便于用户

可以更方便选择到自己外插的 USB 设备;

2、挂载 USB 设备功能:基于 Libvirt 的 USB 直通的技术,实现了 ICOS 云平

台的 USB 挂载功能,可以将主机上的 USB 设备挂载给云主机使用,目前只能挂载

云主机所在的主机上的 USB 设备;

3、卸载 USB 设备功能:基于 Libvirt 的 USB 直通技术,实现了 ICOS 云平台

的 USB 卸载功能,由于 USB 设备属于主机设备,因此一个 USB 设备只能挂载给一

个云主机使用,ICOS USB 卸载功能可以将云主机挂载的 USB 设备从云主机上卸

载,以便于给其他云主机使用。

Page 56: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

49

图 4.1.12.2-1USB 直通实现原理

约束

对于加密狗设备,一台云主机仅支持挂载一个。

4.1.13 挂载 ISO 镜像

功能描述

ICOS 支持云主机在线挂载/卸载 ISO 镜像,用户可以将自己的 ISO 镜像文件

上传到 ICOS 上,然后将镜像挂载给指定的云主机。该功能让用户可以在云主机

中,获得相当于使用真实光盘的体验。

技术原理

ISO 镜像通过镜像服务 Glance 保存在后端存储中。当云主机挂载 ISO 镜像

时,可以从 Glance 查询要挂载的 ISO 镜像,Glance 将 ISO 镜像的存储地址提供给

计算服务 Nova。然后 Nova 将 ISO 镜像以只读的方式挂载到云主机,在云主机中

模拟为一个光盘设备。

Page 57: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

50

图 4.1.13.2-1 挂载 ISO 镜像技术原理

约束

一个云主机只允许同时挂载一个 ISO 镜像,如果要挂载其他 ISO 镜像,需要先

卸载当前已挂载的 ISO 镜像。目前镜像服务 Glance 只有采用 RBD 协议的存储后端

才能托管 ISO 镜像,否则云主机将无法挂载 ISO 镜像。

4.1.14 云主机回收站

功能描述

ICOS 为云主机提供回收站功能,当用户打开回收站时可以看到最近七天被软

删除的云主机列表。回收站云主机列表支持显示名称、来源、IP、资源规格、拥有

者、项目、ID、主机、任务和预计删除时间,同时云主机回收站还支持用户根据需

要对回收站中的云主机做恢复和彻底删除操作。

技术原理

用户软删除的云主机由云主机列表进入回收站。被软删除的云主机并未释放存

储、网络以及配额等资源。软删除操作只是将云主机的状态置为 soft-delete 用于区

分其他状态。如果用户想再次使用回收站中的云主机,只需选中目标云主机,点击

Page 58: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

51

“恢复”按钮,目标云主机就会被快速恢复并从回收站进入云主机列表供用户正常

使用。ICOS 还提供了回收站定时清理功能,软删除的云主机默认在回收站驻留七

天,超出驻留时间的云主机会被彻底删除且不可恢复。

约束

(1)支持对“运行”和“关闭”状态的云主机进行软删除操作。

(2)超级管理员和项目管理员有权限操作回收站。

4.1.15 自定义资源分配策略

功能描述

ICOS 支持配置多种资源调度策略保证云主机创建到适合的物理主机上。当前支

持通过 CPU 核数、内存大小、磁盘大小、可用域检测、磁盘可用性检测以及基于主

机的亲和性和反亲和性调度等策略进行筛选主机,也支持根据规范自定义分配策略

满足主机选择需求,从而能够保证云主机自主创建到合适的主机上。

技术原理

ICOS 通过定义各种策略过滤器以及定义节点权重来满足各种场景下的资源调

度。在经过一系列过滤器筛选后,云主机实例将被部署到当前最合适的计算节点

上。

Page 59: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

52

图 4.1.15.2-1 云主机回收站技术原理

ICOS 还可以支持根据用户实际需要,定制想要实现的调度算法,从而满足用户

不同的应用场景。ICOS 也支持通过主机聚合的方式对物理主机进行分组,从而保证

云主机能够根据所使用的资源侧重点不同而创建到不同的组内,比如可以根据

CPU、内存、硬盘的处理能力的不同,对物理主机进行分组,当创建 CPU 要求高的

云主机时,可以指定选择创建到 CPU能力比较强的组内,极大的提供了使用性。

约束

无。

4.1.16 云主机蓝屏策略

功能描述

云主机蓝屏策略功能主要是用来处理云主机发生蓝屏事件的场景,用户可以预

先设置好蓝屏策略,当云主机发生蓝屏事件后,就会按照实现设置好的策略对云主

机做相应的操作。

技术原理

用户选择好蓝屏策略后,将策略信息保存在云主机 metadata 中,云主机启动

的时候检查 metadata,若是有蓝屏策略对应的 metadata 信息,就为云主机添加

panic 设备,由 libvirt 监控 panic 时间,当发生云主机蓝屏事件的时候,libvirt 会

上报蓝屏事件,ICOS 根据云主机 metadata 中的蓝屏策略,对云主机做相应的操

作。目前,ICOS 可选的蓝屏策略有两种:关机和重启,设置云主机蓝屏策略的方

式也有两种:可以在创建云主机时设置云主机蓝屏策略,也可以在云主机运行期间

设置云主机蓝屏策略。

约束

1. Windows 操作系统需要安装 panic 设备驱动;

2. Centos 操作系统需要关闭 kdump.service 服务;

Page 60: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

53

3. Ubuntu 系统需要安装 linux-crashdump 包,安装好后需要编辑配置文件

/etc/default/kdump-tools 中的 USE_KDUMP=0 改为 USE_KDUMP=1。

4.1.17 主机管理

支持主机维护模式,主机聚合,远程开关机。

主机维护模式

主机维护模式是在主机进入维护模式后,可以根据主机上云主机的状态将云主

机热迁/冷迁到域内其它可用主机上。ICOS 基于云主机迁移功能实现了主机进入、

退出维护模式。当主机进入维护模式后,首先会将主机的服务使能状态置为

DISABLE,然后获取主机上的云主机列表,判断云主机的状态,运行和暂停状态的

云主机通过在线迁移迁到域内其它可用主机上,处于关闭状态的云主机通过冷迁移

迁到域内其它可用主机上。当主机维护模式结束,可以通过退出维护模式功能,将

主机服务使能状态置为 ENABLE

主机聚合

主机聚合是对物理资源进行逻辑的分组和隔离。可以根据不同计算节点的物理

硬件配置将具有相同属性的物理资源规划在同一主机聚合,或者根据用户的具体需

求将几个计算节点规划在具有相同用途的同一主机聚合,通过这样的划分有利于提

高资源的使用效率。

ICOS 支持用户界面操作,可通过用户界面创建、编辑、删除主机聚合。用户

创建主机聚合时,可以自定义选择可用主机添加/移出主机聚合和关联可用域,用户

可以自定义编辑主机聚合名称和修改可用域,支持用户为主机聚合添加元数据实现

云主机的个性化调度配置。例如:支持大页内存,用户可以将支持大页内存的计算

主机添加同一主机聚合;支持 CPU 绑定,用户可以将支持 CPU 绑定的计算主机添

加同一主机聚合;关联可用域,该可用域内的计算主机都添加到该主机聚合。

Page 61: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

54

主机远程控制

ICOS 不仅能管理云主机的生命周期,还提供了基于 IPMI 技术的主机生命周期

远程控制能力。这些远程控制包括开启主机、关闭主机、重启主机、配置 BMC、

开启/关闭服务、进入/退出维护模式。

主机远程控制使用户不需进入机房,通过云平台就能轻松管理主机,提高了运

维效率。

4.1.18 云主机亲和性和反亲和性

功能描述

云主机亲和性和反亲和性主要用在批量创建云主机调度主机的场景中,当用户

选择了亲和性策略,那么在批量创建云主机的时候,会将云主机调度到同一个主机

上;当用户选择了反亲和性策略,那么在批量创建云主机的时候,会将云主机调度

到不同主机上。

技术原理

ICOS 用户需要在创建云主机的时候需要在管理界面提前创建好亲和性策略

组,在创建云主机的时候选择对应的的亲和性策略组,在调度主机的时候会检查云

主机信息,获取亲和性策略组信息,然后再去获取亲和性策略组是亲和性的,还是

反亲和性的,亲和性的就调度到同一主机,反亲和性会调度到不同主机上面。

Page 62: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

55

图 4.1.18.2-1 亲和性策略技术原理

约束

1. 反亲和性策略组不能复用,一个只能用一次。

2. 反亲和性策略,批量创建虚拟机的个数不能大于计算节点的个数。

4.1.19 云主机密钥对

功能描述

云主机密钥对功能主要用于安全登录云主机的场景,用户需要提前准备好密钥

对,再创建云主机的时候选择对应的密钥对

技术原理

ICOS 用户首先要提前准备好密钥对,新增密钥对有两种方式,一种是创建新

的密钥对,需要保存好私钥信息,另一种方式是导入主机已有的密钥;创建云主机

的时候选择好密钥对,这样在启动云主机的时候会通过 cloud-init 将密钥信息写入

到云主机操作系统中配置文件中,云主机启动后,用户可以通过密钥对的私钥文件

来远程访问云主机,不需要输入密码。

Page 63: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

56

约束

1. 云主机操作系统需要安装 cloud-init;

2. 不支持指定用户,只能用 cloud-init 创建的默认用户;

3. 不支持 windows 系统。

4.1.20 云主机援救

功能描述

云主机援救功能主要用于修复因系统盘损坏导致的云主机不可用问题,进入援

救状态的云主机,用户可以进入云主机控制台,通过一些磁盘修复工具来修复系统

盘。

技术原理

云主机援救功能原理是为云主机重新创建一块系统盘,把原来损坏的系统盘作

为数据盘挂载给云主机,云主机进入援救状态,这时候,云主机操作系统是可以正

常启动的,用户可以通过控制台登录云主机操作系统,然后检查数据盘(也就是原

来损坏的系统盘)问题,并进行修复,修复完成后通过取消援救功能来恢复云主

机,取消援救功能的操作会把已修复完成的数据盘,重新恢复成云主机的系统盘,

云主机恢复运行状态,最大限度的挽救业务系统、数据。

Page 64: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

57

图 4.1.20.2-1 云主机援救技术原理

约束

无。

4.2 存储服务

4.2.1 存储异构多样性

随着大中型企业快速的发展,企业用户规模不断扩大,不但需要满足用户存储

大量文本、图像和视频等要求,还要保证数据的稳定性和安全性,因此对于存储的

异构多样性要求越来越高,使用场景图如下:

图 4.2.1-1 存储服务场景

ICOS 支持块存储、文件存储和对象存储三种存储类型,三种存储类型各有优

势,相互补充,用户可以根据实际的业务需要,选择相应的存储类型。

块存储是我们比较熟悉的主流存储类型,主要是基于 Block 块的模式,ICOS

支持将任意大小的块设备挂载到云主机上,为云主机提供持久化的存储设备。目前

支持两种主流形态,一种是基于 SAN 的传统集中式存储,另一种是基于 IP 的分布

Page 65: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

58

式存储,比如 CEPH,经过多方位的大规模和性能测试,对上述两种主流形态的支

持度很高,同时也支持第三方存储以驱动插件的形式提供服务和应用

文件存储也是主流存储类型,提供了可共享访问、弹性扩展、高可靠以及高性

能的共享文件存储服务。ICOS 支持将文件存储同时挂载给多个云主机,允许同时

进行访问避免了大量的数据拷贝与同步成本,达到真正的资源共享。支持 NFS 和

CIFS 两种主流协议,NFS 可以通过网络让不同操作系统的计算机可以共享数据,

CIFS 主要是针对 Microsoft Windows 操作系统的本地网络文件系统。

对象存储是兼具块存储高速直接访问磁盘和文件存储分布式的特点。它主要用

于非结构化数据的存储,核心是将数据通路(数据读或写)和控制通路(元数据)

分离,并且基于对象存储设备(Object-based Storage Device,OSD)构建存储系

统,每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。

4.2.2 块存储

云硬盘全生命周期管理

功能描述

云硬盘是一种高可靠、低成本、高可用、可定制化的存储设备,可以作为云主

机和裸金属的独立可扩展硬盘使用。云硬盘是 ICOS 平台不可或缺的一部分,为云

主机和镜像提供持久的存储资源,不仅可以用作系统盘存放镜像文件来启动云主

机,还可以作为云主机的数据盘。

支持多种来源创建云硬盘,分别包含:镜像、云硬盘、云硬盘快照和云主

机快照等,并且支持批量创建,在很大程度上方便了用户使用云硬盘的需

求。

支持云硬盘分页查询和模糊匹配,根据用户设置的每页展示数量,快速分

页展示所有云硬盘资源。支持多方位展示云硬盘信息,包括:名称、卷

ID、大小、状态、项目、拥有者、类型、迁移状态、可启动、共享、可用

域、创建时间和描述,使得用户实时监控对云硬盘的使用情况。支持用户

Page 66: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

59

按照名称、卷 ID、项目、状态、类型和用户等筛选条件快速查询云硬盘,

并且支持名称和卷 ID 的模糊查询,满足典型的应用需求场景。

支持删除和软删除云硬盘,删除指的是不仅在数据库中删除云硬盘记录,

同时清理底层的存储数据,一旦被成功删除,存放在底层存储上的数据会

被格式化,永远没有办法恢复。软删除指的是把云硬盘移入回收站,软删

除的云硬盘默认在回收站驻留七天,超出驻留时间的云硬盘会被彻底删除

且不可恢复。

支持离线扩容与在线扩容,按需增加存储容量,单盘最大可支持 128TB 。

支持更新云硬盘状态,由于环境系统异常、用户误操作和底层存储的异常

等原因,环境中会存在许多中间状态(例如,error_deleting、extending

等)的云硬盘,方便用户根据需要及时处理这些中间状态的云硬盘。

技术原理

Page 67: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

60

图 4.2.2.1.2-1 云硬盘架构

Skyline(UI 界面):为用户提供了可视化界面,使用 REST API 调用

cinder 服务,为云主机提供持久化的云硬盘。

cinder-api:主要进行 API 的分发、配额管理和相关权限认证等。

cinder-scheduler:根据预定策略选择合适的 cinder-volume 节点处理业

务。

cinder-volume:主要负责业务逻辑处理,管理云硬盘和云硬盘快照的生命

周期等功能。

cinder-backup:负责管理云硬盘备份生命周期。

约束

1) 单次批量创建云硬盘最多为 100 个。

2) 不支持批量更新云硬盘状态。

3) 仅支持软删除可用状态的云硬盘。

4) 不支持删除正在被使用的云硬盘。

云硬盘类型

功能描述

云硬盘类型是创建云硬盘时可选择的类型,一个云硬盘类型对应一组云硬盘所

使用的存储后端,用户可以创建不同的云硬盘类型对接不同的后端存储以满足多种

业务需求。

当用户业务与所在的后端存储的读写性能配置不匹配时,用户可以通过更改云

硬盘类型来调整所在的后端存储来改变读写性能。

Page 68: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

61

用户可以为云硬盘类型增加扩展规格,创建云硬盘时,可以选择相应的云硬盘

类型来创建不同特性的云硬盘,已设置后端存储名的云硬盘类型,还可以查看对应

后端存储使用情况。

用户也可以为云硬盘类型关联 QoS 规格和加密管理,以满足不同业务场景的需

求。

技术原理

图 4.2.2.2.1-1 云硬盘类型示意

可以为一个云硬盘配置不同的扩展规格,常用的扩展规格有存储后端名称

(volume_backend_name),是否支持共享(multiattach),是否为精简云硬

盘等。

可以为一个云硬盘类型创建加密,使用此云硬盘类型创建的云硬盘默认被加

密。

Page 69: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

62

可以为一个云硬盘类型关联 QoS 规格,云硬盘挂载到云主机后,会依据该

QoS 规格限速。

约束

1) 仅支持对“可用”或“正在使用”状态的云硬盘改变云硬盘类型。

2) 加密的云硬盘不支持改变云硬盘类型。

3) 共享云硬盘的云硬盘类型不支持更改为非共享的云硬盘类型。

4) 非共享云硬盘的云硬盘类型不支持更改为共享的云硬盘类型。

5) 正在被云硬盘使用的云硬盘类型,不能添加加密信息。

云硬盘挂载与卸载

功能描述

云硬盘创建之后,并不能直接使用,需要挂载到单个云主机上,共享云硬盘可以挂载

到多个云主机。将云硬盘挂载到云主机后,就可以像物理硬盘一样使用云硬盘,也可以将

云硬盘从一个云主机卸载,然后挂载到另一台云主机上。

Page 70: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

63

技术原理

图 4.2.2.3.2-1 云硬盘挂卸载流程

通过调用 Nova REST API,发送挂载云硬盘请求,然后 Nova 调用 Cinder

API 来获取指定云硬盘的连接信息,并将连接信息返回给 Nova。

Nova 根据返回的连接信息将云硬盘挂载到云主机。

约束

1) 非共享云硬盘只能同时挂载给一台云主机。

2) 云硬盘不能挂载给已软删除的云主机。

3) 不支持在线卸载系统盘。

4) 支持最多 16 台云主机同时使用共享云硬盘。

Page 71: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

64

云硬盘导出镜像

功能描述

镜像是 ICOS 平台不可或缺的一部分。利用各种定制化的镜像,我们可以快速

创建出满足不同目的云主机和启动云硬盘。例如,利用一个安装并配置了

Microsoft Windows 操作系统的镜像,就可以在 ICOS 平台上创建出多台云主机,

可以直接供用户使用。

ICOS 平台支持将云主机的系统云硬盘或数据云硬盘导出,作为镜像保存在镜

像服务中。这个功能能够简化制作镜像的繁琐步骤,并且能够使用镜像的共享特

性,方便项目间镜像资源共享访问,具有典型的应用场景。

技术原理

图 4.2.2.4.2-1 云硬盘导出镜像流程

Page 72: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

65

Cinder 通过调用 Glance API 将指定的云硬盘导出成镜像,保存到 Glance

后端存储上。

是常用的通过系统盘制作镜像的方法。

约束

正在使用的云硬盘不可以导出镜像。

云硬盘快照

功能描述

随着大中型企业快速的发展,企业用户规模不断扩大,数据的增长速度也越来

越快,需要缩短备份窗口,以在线的方式对存储数据进行保护,提高数据保护过程

中的应用感知能力。云硬盘快照是记录某个时间点的云硬盘状态,支持根据某个时

间点的云硬盘快照恢复云硬盘。

ICOS 云平台支持给可用或使用中的云硬盘创建快照,用来记录源数据在拷贝

时间点的静态影像,可以用作数据再现的一个副本。并且 ICOS 云平台支持用户进

行相关参数的设置,用来定时为云硬盘创建快照,以防重要数据丢失需要进行数据

的恢复。

Page 73: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

66

技术原理

图 4.2.2.5.2-1 云硬盘快照流程

快照功能依赖于存储底层的功能实现,包括快照的创建、还原等, 云平台层会

把这些操作指令下放到存储底层去执行。可以快速实现云硬盘的快照创建、快

照还原功能,可快速的恢复到快照时间点的数据状态。

支持任意时间点快照的还原操作,用户可以灵活的选择时间点的快照进行恢

复,并且支持挂载状态的云硬盘进行数据恢复。

约束

只有当快照的状态为“可用”时才能恢复。

云硬盘在线扩容

功能描述

随着系统的持续使用、业务的增加,会造成某些事先规划的资源大小不满足具

体应用,ICOS 云平台云硬盘的扩容支持两种形式:离线扩容和在线扩容。下面分

两部分进行介绍:

虚拟机

Volume1 Volume2 Volume3Volume3

创建快照

快照1 快照2 快照3

快照恢复

选择快照选择任意

快照还原成功Volume3

Page 74: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

67

离线扩容指的是先把挂载的云硬盘从云主机上卸载、然后进行扩容,扩容成功

之后重新挂载到云主机;这样的流程会对业务造成很大的影响,导致某时间段内业

务暂时不可用。

在线扩容解决了这个问题,可以实现云硬盘在使用过程中进行在线扩容操作,

避免业务的中断、能够有效地简化扩容流程;

ICOS 实现了对云硬盘进行在线扩容,解决了云硬盘扩容需要卸载、扩容、重

新挂载的繁琐步骤,并做到了对浪潮自研的集中式存储(G2)和分布式存储

(SDS)的全面支持。

技术原理

云主机

云硬盘

扩容通知cinder

扩容

存储后端

执行扩容成功

Nova模块扩容

(云主机扫盘)

图 4.2.2.6.2-1 云硬盘扩容流程

用户下发在线扩容请求后,Cinder 侧进行请求的合法性和状态等一系列的

校验,并调用 Cinder 的后端 Driver 进行存储的物理扩容。

Nova 侧进行已扩容盘的重新扫描和识别,完成在线迁移的动作。

Page 75: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

68

共享云硬盘

功能描述

在传统集群架构中,需要多个云主机或计算节点能够同时访问同一份数据,避

免云主机会计算节点出现单点故障时,整个高可用集群对外可以持续提供业务服

务。例如,政府、企业和金融行业用户常用的 Oracle RAC 数据库高可用、Redhat

GFS 文件系统、容器的数据共享等。

技术原理

图 4.2.2.7.2-1 云硬盘共享架构

ICOS 基于云硬盘的多挂载标识、与 Nova 交互的挂载 ID 和新增 XML 属性

的技术,实现共享云硬盘的多挂载功能。

ICOS 基于 Cinder 的锁框架,引入分布式锁机制,实现多个云主机挂载共享

云硬盘的有序性,避免在云平台和底层存储上对同一资源的重复操作。

用户需要安装集群文件系统管理共享云硬盘,保证数据一致性。

约束

1) 共享云硬盘不能作为云主机系统盘

2) 目前共享云硬盘特殊支持 G2 存储、G5 存储和原生 CEPH,AS13000 的

私有 RBD 当前不支持共享卷。

Page 76: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

69

云硬盘迁移

功能描述

随着云计算技术的普遍应用和存储技术的不断发展,公有云和私有云中使用的

存储后端种类越来越多,性能也存在差异,当上层业务和所在存储的读写性能配置

不匹配时,为了满足云主机调整存储业务性能的诉求,实现不同存储后端之间的数

据迁移已经成为必备的功能。云硬盘迁移是指将一个云硬盘从一个存储后端迁移至

另一个存储后端。这个功能实现了更灵活的存储调度,可以根据业务负载情况更灵

活的选择使用不同的后端存储,极大提高了存储资源的充分利用

技术原理

图 4.2.2.8.2-1 云硬盘迁移示意

ICOS 支持云硬盘(volume)在不同存储后端之间进行数据迁移,具体可以分

为两种场景:

未挂载的云硬盘进行迁移:该迁移流程比较简单,只需要在能保证源云硬

盘和新云硬盘状态的一致性和异常情况的特殊处理的前提下,将数据直接

从源云硬盘 DD 拷贝到新云硬盘。

已经挂载给云主机使用的云硬盘进行迁移,这个迁移流程比较复杂,需要

在无需关闭云主机的情况下,通过 Libvirt 的 Rebase 接口,最终利用

QEMU 的 Live Block Copy 技术,实现数据跨存储迁移。

Page 77: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

70

约束

1) AS13000 上的云硬盘需要卸载后进行迁移。

2) 共享云硬盘需要卸载后进行迁移

3) 若云硬盘具有快照,需要卸载后进行迁移

云硬盘转让项目

功能描述

在云计算领域,为了提高物理资源的利用率和保障数据安全,资源都需要通过

一定的手段进行隔离,在 ICOS 中,云硬盘(volume)资源是通过项目(project)

进行划分的,每块云硬盘都隶属于某个项目。为了实现某一项目可以使用另一项目

的云硬盘,云硬盘转让技术应运而生。

技术原理

转让云硬盘

填写转让名称

项目A用户

生成云硬盘转让

ID与认证秘钥

项目B用户

输入转让ID与

认证秘钥

接受云硬盘

图 4.2.2.9.2-1 云硬盘转让流程

云硬盘转让技术,通过生成转让 ID 与转让密钥来保障转让的安全性,其流程

描述如下:

Page 78: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

71

1、项目 A 管理员指定待转让云硬盘,输入转让名称后,ICOS 系统随机生成一

个转让 ID 与转让密钥(可通过文本方式保存到本地)。

2、项目 B 管理员,通过在接受转让界面输入转让 ID 与转让密钥来通过认证并

接受该云硬盘。

云硬盘 QoS

功能描述

由于云平台业务的多样性,对于带宽、延迟等传输性能有着特殊的要求,比如

电视视频要求高带宽、低延迟等,而事务处理等关键任务不要求高带宽,但要求低

延迟,需要针对不同类型的云硬盘做相应的 IO 流速限制,包括 read_iops_sec、

write_iops_sec、total_iops_sec、read_bytes_sec、write_bytes_sec 和

total_bytes_sec。

用户可根据不同的业务场景进行不同的设置,比如说可以对核心业务、占用 IO

资源较大的业务盘设置较大的 IOPS、读写 IO 带宽;对周边业务、磁盘性能需求不

高的盘设置较低的 IOPS、读写 IO 带宽;QoS 层面上进行数据传输层的精准控制、

性能优化。

技术原理

图 4.2.2.10.2-1 云硬盘 Qos 原理

Page 79: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

72

通过云硬盘绑定 QoS 的规格信息,创建带有 QoS 信息的云硬盘。

云主机挂载云硬盘,并将 QoS 信息写入 XML 文件中,云主机根据 QoS 信息限

速使用该云硬盘。

约束

1) 当前 QoS 的使用仅支持前端限速,后端限速需要依赖于底层存储的支持。

2) 更改云硬盘类型的 QoS 规格,已经创建的云硬盘需要重新卸载后再挂载,才能

够生效。

云硬盘纳管

功能描述

纳管是一种云硬盘管理手段,主要是通过云平台进行管理在底层存储上已存在

的 LUN 的技术。

基于用户希望将资源统一到一个云平台内进行管理的需求,需要将已运行的业

务从其他云平台迁移到当前云平台,后端数据的拷贝将是一件很棘手且耗时的工

作,ICOS 中的纳管存储云硬盘功能巧妙地解决了此问题。

Page 80: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

73

技术原理

开始

提取LUNUUID

提取成功

随机生成UUID

创建新云硬盘

提取LUN大小成功

纳管失败

使用提取的UUID

resize已创建的云硬盘

LUN是否符合云硬盘命名规范

rename待纳管的LUN

纳管完成

是 是

否 否

图 4.2.2.11.2-1 云硬盘纳管流程

Page 81: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

74

上图为云硬盘纳管的流程图,从图中可看到详细的纳管流程,该纳管流程最重

要的一个特性就是,如果底层存储的 LUN 的命名本身就符合云硬盘的命名规范,

那么 ICOS 将使用 LUN 的 UUID 去创建云硬盘,这样纳管后,云硬盘的 UUID 可

以和 LUN 保持一直,这种方式更加方便用户对云硬盘的识别。

约束

1) 待纳管的 LUN,在存储上要解除与源宿主机的映射关系。

云硬盘加密

功能描述

在非加密场景下,数据是通过明文存储在云硬盘中,如果不怀好意的管理员或

者黑客拿到云硬盘数据,那么将很轻易的将数据解析出来,有造成数据泄露的风

险。

云硬盘加密功能,利用宿主机操作系统加密组件,通过唯一的加密 key 将数据

加密成密文之后,再存储到云硬盘,这样即使拿到云硬盘数据,在不知道加密方

式、及加密 key 的前提下,也无法将数据解密出来。

云硬盘加密层在宿主机与虚拟化层之间,屏蔽了虚拟机层面的感知,所以在实

际业务场景里,不影响虚拟机内部应用对云硬盘数据的读写,将对业务的影响降到

最低。

Page 82: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

75

技术原理

设置卷类型加密

选择云硬盘类型

输入加密参数

加密云硬盘类型

创建加密卷

选择加密云硬盘类型

创建卷

读取加密参数

获取加密参数

根据参数获取调用key_manager

KeyManager: Barbican

获取key_id

将key_id写入volume表

挂载加密卷

选择虚拟机

选择加密卷

挂载

根据volume key_id获取

key

调用os-brick

调用cryptsetup加密卷

cryptsetup –batch-mode luksFormat –type luks1 –key-file=-

图 4.2.2.12.2-1 加密卷流程

上图为加密卷流程,在创建加密卷时,就将会调用加密仓库(barbican)生成

加密 key,并将此 key 与加密云硬盘进行关联。此为创建加密云硬盘的过程。

在加密云硬盘使用时,将加密云硬盘挂载给虚拟机时,从加密仓库中获取与之

对应的加密 key,然后通过操作系统命令 cryptsetup 命令进行对云硬盘的加密,此

后虚拟机写入到此云硬盘的数据将为加密数据。

功能约束

1. 云硬盘加密功能,依赖与宿主机 dm-crypt 组件,及其所支持的加密算法,

如果宿主机不支持 dm-crypt 功能,将无法使用加密云硬盘功能。

2. 云硬盘加密,目前只支持集中式存储,不支持分布式存储。

Page 83: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

76

3. 不支持非加密云硬盘于加密云硬盘之间的互迁移功能。

4. 加密云硬盘不支持共享、转让,不支持导出镜像及热扩容功能。

镜像缓存

功能描述

当管理员发放云主机时,在同一个镜像创建多台云主机的流程中,通过镜像创

建卷拷贝数据非常耗时,当前 OpenStack 社区原有机制,会出现频繁地下载、删

除、再下载镜像的问题,严重影响了镜像创建卷的效率,从而导致创建云主机非常

为了提高镜像创建卷的效率,ICOS 优化了镜像创建云硬盘的流程,通过加入

镜像缓存机制,节约了镜像下载到本地所消耗的时间,从而有效的提高了镜像创建

云硬盘的速度。

技术原理

新镜像

镜像缓存空间

Window-LFU缓存淘汰算法

被淘汰的镜像

镜像创建云硬盘 镜像启动虚拟机

启动虚拟机

图 4.2.2.12.2-1 镜像缓存架构

Page 84: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

77

优化社区镜像创建云硬盘流程,自研 window-LFU 镜像缓存淘汰算法,智能管

理本地缓存目录,在有限的本地缓存空间内尽可能的提高镜像缓存命中率,在

缓存空间不够的情况下,根据使用镜像频率自动删除不活跃的镜像。

支持通过配置项设置镜像缓存目录的大小,缓存目录大小默认为所属磁盘的的

50%。(至少保证 100G 的缓存目录空间)。

推荐使用 RAW 格式的镜像创建云硬盘,效果更优。

4.2.3 文件存储

ICOS 通过 OpenStack Manila 提供文件存储服务,可支持 NFS 和 CIFS 协议,通

过 Manila 创建的文件存储,可以在云主机内通过挂载文件存储来使用网络存储空

间,从而达到扩容的目的。多个云主机挂载同一个文件存储即可实现文件共享,并

同时支持快照、ACL 控制。

功能描述

文件存储服务为用户提供了丰富的功能,其功能说明如下文所述。

文件存储创建

ICOS 可以对接多个提供文件存储服务的后端存储集群,在 ICOS 侧,通过创

建多个文件存储类型,并指定后端名称来对应后端存储集群,用户可以根据不同的

需求来选择不同的文件存储类型。

ICOS 平台支持批量创建文件存储实例,文件存储实例的命名会根据用户的输

入自动命名。

文件存储删除

ICOS 云平台支持删除文件存储实例,当用户不在需要某个文件存储实例时,

可以删除该文件存储实例,删除文件存储也会同时删除该文件存储内已经存放的用

户数据。删除文件存储之前,ICOS 会弹窗提示,二次确认后才会执行删除操作。

Page 85: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

78

文件存储编辑

ICOS 云平台支持对已创建的文件存储进行编辑,支持修改文件存储的名称和

描述,方便用户对不同的文件存储进行个性化管理,便于用户识别、归类文件存储

列表。同时,用户可以结合查询功能筛选文件存储名称,快速查询到所需要的文件

存储,提高了用户管理的便捷性,提升用户体验。

文件存储列举

ICOS 可以展示当前用户已经创建出的所有文件存储实例,并同时展示各个文

件存储实例相应的文件存储类型、所属项目、大小、状态、协议、创建时间、描述

等信息。并可以选择性的展示文件存储 ID。用户可以通过以上信息来管理各文件存

储实例。

文件存储更新状态

由于环境系统异常、用户误操作和底层存储的异常等原因,环境中会存在许多

中间状态(例如,error_deleting、extending 等)的文件存储,ICOS 支持重置指

定的文件存储实例的状态,方便用户需要及时处理这些中间状态的文件存储

文件存储快照

文件存储被用于挂载给云主机或者其他宿主机,用户在使用过程中,会在文件

存储内存放用户数据,为保障数据安全性,ICOS 提供文件存储快照功能,为当前

时间点文件存储内的数据做一个副本或者静态影像,以防重要数据丢失后需要进行

数据恢复。

ICOS 支持通过文件存储快照创建一个新文件存储实例。创建完成后,新的文

件存储实例就包含了原文件存储实例打快照时的所有数据。从而用户数据得到恢

复。

Page 86: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

79

文件存储修改容量

随着系统的持续使用、业务的增加,会造成某些事先规划的资源大小不满足具

体应用,ICOS 云平台支持对文件存储进行扩容操作。扩容操作能够提升单个文件

存储实例的容量上限,以适应业务的需求。

注意:文件存储仅支持扩容操作,不支持缩容操作。

文件存储访问权限管理

ICOS 支持设置文件存储实例的权限。

对于 NFS 协议的文件存储,通过访问权限管理可以设定指定 IP 的客户端具有

何种权限来访问该 NFS 文件存储内的数据,其中权限类型包括:只读、读写。对

于 NFS 协议的文件存储,对所有客户端默认是读写权限。

对于 CIFS 协议的文件存储,通过访问权限管理可以设定指定用户具有何种权

限来访问该 CIFS 文件存储内的数据,其中权限类型包括:只读、读写。对于 CIFS

协议的文件存储,对任何用户默认是无权访问。只有经过给用户授权以后,才能使

用该用户登录 CIFS 文件存储。

注意:文件存储访问权限管理一次只能对一个文件存储实例进行操作。

Page 87: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

80

技术原理

图 4.2.3.2-1 文件存储架构

ICOS 文件存储服务架构图如上图所示,ICOS UI 界面通过 Skyline 部署,而

Skyline 管理 Manila 相关服务,用户在 UI 界面的操作会由 Skyline 转化为相关

Rest 请求发送给 Manila API 服务。API 层将 Rest 请求入参整合处理后发给

Manila Scheduler 层,Scheduler 层会根据文件存储后端的容量、可用性等信息调

度一个和该 rest 请求匹配的后端,最后,Manila Share 层将请求发给相应的后端存

储驱动 Storage Diver,驱动会调用后端存储系统完成相应的请求。

约束

1) 只有处于“可用”状态的文件存储实例才支持修改存储容量。

2) 为了获得较好的兼容性,NFS协议的文件存储实例建议在 Linux 系统下挂

载,CIFS协议的文件存储实例建议在 Window系统下挂载。

3) 删除文件存储实例之前,应确保该文件存储实例没有被挂载到客户端。

Page 88: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

81

4) 只有“可用”和“错误”状态的文件存储实例,才能够删除。

5) 只有“可用”状态下的文件存储实例,才能够创建快照。

6) 只有项目管理员才能够创建文件存储实例。

4.2.4 对象存储

对象存储服务是一个基于对象的海量存储服务,为客户提供安全、可靠、低成

本的数据存储能力。ICOS 通过 S3 API 的方式对接 AS13000 分布式存储系统提供对

象存储服务,也可以直接通过 AWS SDK 的方式来直接调用 AS13000 存储系统的对

象存储网关。

功能描述

ICOS 对象存储服务能够存放任意类型的文件, 是和普通用户、网站、企业和

开发者用户,ICOS UI 控制台提供了丰富的功能,如下文所述。

创建存储桶

存储桶是 ICOS 对象存储中对象的容器,桶名在同一项目下全局唯一,且不支

持修改桶名,创建的新存储桶,默认不限制配额,公有权限为私有,默认一个项目

下最大能够创建 1000 个桶。

ICOS 支持用户创建新的存储桶,当存在同名存储桶时,ICOS 会给出提示,告

知用户该存储桶已经存在。

删除存储桶

ICOS 云平台支持用户删除一个空存储桶,出于安全性考虑,只有空存储桶才

允许被删除。

新建文件夹

ICOS 支持在桶内创建文件夹,即目录。通过目录来归类用户数据,方便用户

对数据的管理、归纳。

Page 89: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

82

ICOS 对目录的深度和目录个数没有限制,用户可以任意创建。实际上一个文

件夹就是一个大小为零且以斜杠结尾的对象。

上传对象

ICOS 支持用户直接在 UI 控制台上传对象,并且支持在上传对象前,重命名对

象名称,控制台限制单个对象的最大大小为 5GB,单次只能上传一个对象。当然用

户可以开启多个控制台窗口进行多个对象并行上传。

对象小于 100MB 时,ICOS 采用普通上传对象的方式,当对象大于 100MB

时,ICOS 自动采用分片上传的方式,分片上传适合于上传较大的对象。

删除对象

ICOS 云平台支持删除对象操作,支持单个删除和批量删除,安全起见,在删

除之前 ICOS 会弹窗提示,用户二次确认后可才会继续执行删除任务。

复制对象

ICOS 云平台支持对象复制,即用户可以将一个对象从一个桶复制到另外一个

桶,这样方便用户管理数据,用户不必再次从本地上传,就可以备份一个对象到另

外一个桶。

设置桶配额

ICOS 云平台支持为每个存储桶设置配额,配额信息包括:桶内最大桶个数、

桶最大容量。即用户在桶内上传对象要遵循桶配额的限制,当超出配额限制后,用

户上传对象或者创建目录操作会失败并提示超出配额限制。

桶配额的容量和最大容纳对象个数只要有任何一个触发配额限制,就会导致对

象上传失败。

Page 90: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

83

设置桶 ACL

ICOS 云平台支持设置桶的公有权限(ACL),可以将一个存储桶设置为公开

访问,即匿名用户就可以读取桶内对象列表,或者下载桶内指定的对象。这项功能

方便了用户公开数据的对外共享。

技术原理

ICOS 通过集成 AWS JS SDK 的方式和 AS13000 存储系统对象存储网关进行交

互,ICOS 调用 SDK 的相应接口,SDK 再通过 S3 协议,以 REST API 的方式访问

对象存储网关。

图 4.2.4.2-1 对象存储架构

约束

1) 每个项目下最多可以创建 1000 个桶。

2) 一个桶内最多能够创建 10 级目录。

3) 桶名最长 255 字符。仅接受英文字母、数字、小数点、下划线和短横线,

只能以数字、字母开头。

4) 目录命名最长 72 字符,仅接受汉字、英文字母、数字。一个汉字占用 3 个

字符。

Page 91: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

84

在 ICOS 控制台上传或者下载对象仅支持单个对象最大 5GB。更大的对象请使用第

三方 API 工具上传。

4.3 网络服务

经过 30 多年发展,网络从最初满足简单 Internet 服务的网络,演进成能够提供

涵盖文本、语音、视频等多媒体业务的融合网络。其应用领域也逐步向社会生活的

各个方面渗透,并影响和改变人们的生产和生活方式。随着互联网业务的发展,网

络也面临一系列问题:

设备日趋复杂。IP 技术使用“打补丁”式的演进策略(目前 IETF 发布的 RFC

标准超过 7000 个),使得设备的功能和业务越来越多,复杂度显著增加。

管理运维复杂。当前网络在部署一个全局业务策略时,需要逐一配置每台设

备。随着网络规模的扩大和新业务的引入,管理运维愈加复杂。

网络创新困难。网络控制平面和数据平面深度耦合,分布式网络控制机制使得

任何一个新技术的引入都严重依赖网络设备,并需要多个设备同步更新,导致

新技术的部署周期较长(通常需要 3-5 年),严重制约了网络的演进发展。

成为新业务发展的瓶颈。随着云计算和大数据服务的兴起,传统网络技术及架

构已无法再提供新业务所需的动态配置、按需调用、自动负载均衡等需求。

为从根本上摆脱上述网络困难,业界一直在探索技术方案来提升网络的灵活性,

其要义是打破网络的封闭架构,增强网络的可编程能力。经过多年的技术发展,

SDN 技术应运而生。

ICOS 基于 OpenStack 社区的 Neutron 组件构建软件定义的网络服务,为租户提

供基本的网络、路由、安全、隔离、访问控制、VPN等网络特性,可以做到:

快速运维和组网:可以为云主机提供网络接入功能,虚拟路由实现租户内不同

私有网络之间的互联互通。

安全的网络环境:通过安全组和防火墙可以过滤流量访问,实现 ACL 访问控

制。

Page 92: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

85

负载均衡环境:通过负载均衡可以实现业务的高可用,为用户提供了软的负载

能力。

VPN服务:VPN实现不同租户之间私有通道之间的连通。

网络 QoS 服务:可以限制网络的流量速率,实现云主机带宽限制。

浮动 IP 服务:提供了外网访问数据中心云主机的能力。

ICOS 支持多种网络模型,包括 Local、Flat、VLAN和 VXLan。提供包括网络、

子网、端口、安全组、防火墙、VPN、负载均衡、QoS等功能。

本节主要介绍 ICOS 的几种高级网络功能的技术特点,包括端口镜像、VPN、防火

墙、负载均衡以及 QoS。

4.3.1 VPN

功能描述

VPN可以通过在 L2或 L3层建立一条逻辑链路让广域网上多个内网能够相互访

问,有三种类型:Site-to-Site(站点对站点)、Client-to-Site(客户端对站点)、

Host-to-Host(主机对主机)。

技术原理

ICOS 基于 Neutron 延伸项目 VPNaaS实现了 Site-to-Site的 VPN。不同租户

(可分属不同 OpenStack 环境)下的子网间可以建立 VPN。VPNaaS向用户提供

REST API、CLI和自研 UI去操作 IPSec 所使用的各种协议和对象。

Page 93: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

86

图 4.3.1.2-1 Site-to-Site VPN

ICOS VPNaaS使用 IPsec协议来实现远程接入。

IPSec(Internet Protocol Security)是 IETF 制定的为保证在 Internet

上传送数据的安全保密性能的三层隧道加密协议。IPSec 在 IP 层对 IP 报文提供

安全服务。IPSec 协议本身定义了如何在 IP 数据包中增加字段来保证 IP 包的完

整性、私有性和真实性,以及如何加密数据包。使用 IPsec,数据就可以安全地在

公网上传输。

IPsec 支持 IKE协议,IKE是 UDP 之上的一个应用层协议,是 IPSec 的信令协

议。IKE为 IPSec协商建立安全联盟,并把建立的参数及生成的密钥交给 IPSec。

IPSEC 使用 IKE 建立的安全联盟对 IP 报文加密或验证处理。

VPNaaS 的实现:基于 OpenSwan实现了 IPsec 的 VPN。OpenSwan 是 IPSec 在

Linux 上的开源实现 VPNaas 主要是实现了一个让用户通过 REST API 操作

OpenSwan 的框架:

Page 94: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

87

图 4.3.1.2-2 IPsec VPN

Extention 提供 REST API

Plugin 实现了 DB 操作,以及通过 RPC 调用 VPNaas 的 OpenSwan driver。

Driver 层实现了具体的功能

通过以上框架,Neutron 就能够通过配置 OpenSwan为在指定 Router 上的指定

子网提供 VPN 服务。

4.3.2 防火墙

ICOS 提供一种基于 Neutron L3 Agent的网络四层防火墙 FWaas。防火墙是分

租户的,但是可以在多个租户之间共享。与物理的防火墙类似,FWaas 也有三个主

要概念:

1)规则(Rule):允许用户指定所要匹配的名称、描述、针对的协议(TCP,

UDP, ANY)、行为(Allow,Reject,Drop)、源/目的 IP地址/子网和端口号/端

口号区间。

与 Neutron 安全组中的规则的区别是,这里需要指定被匹配到的数据包的处

理行为是允许(Allow)、拒绝(Reject)以及丢弃(Drop),但是不能指定网络

方向。FWaas 会将规则同时应用到进出网络的网络包上。

Page 95: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

88

2)策略(Policy):规则的逻辑集合。Policy 可以是共享的和被审计的

(Audited)。

3)防火墙(Firewall):策略的逻辑集合,可以关联作用到的虚拟路由器。

防火墙的实现:FWaas 是通过在关联的 Virtual Router 上添加 IPTABLES规

则来实现对进出数据网络的网络包进行控制的。

4.3.3 负载均衡

功能描述

负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端资

源池(资源池,可包含云物理机,云主机)的流量分发控制服务。负载均衡扩展了

应用的服务能力,增强了应用的可用性。负载均衡通过设置虚拟服务地址,将添加

的资源池成员虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自

客户端的请求分发给资源池中的成员。

负载均衡默认检查资源池中的云主机的健康状态,⾃动隔离异常状态的云主

机,消除了单台云主机的单点故障,提⾼了应⽤的整体服务能⼒。

ICOS 中的负载均衡由 Octavia项目提供。它提供向多个 Nova 云主机中运行的

应用提供负载均衡的方法,还提供 API 来快速方便地部署负载均衡器。该功能可

应用于运营商级别的可靠、可扩展负载均衡场景,采用自研的高可用负载均衡方案

提供底层支撑。

几个概念:

1)Load Balancer: 虚拟负载均衡器,具有对外提供统一服务的 VIP。

2)Listener: 监听 VIP的不同端口。

3)Pool: Pool Member 的集合,代表负载后端的云主机池。在以 HAProxy 为

Driver 的情况下,一个 Pool 对应着在一个独立的 network NAMESPACE 中

运行的 HAProxy 进程所管理的 backend。

Page 96: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

89

4)Member: 运行服务的云主机,可加入到 pool中。

5)Health Monitor: 健康监测器,监测 Member的存活状态,支持 HTTP,

TCP, 和 PING 等多种检测方法。当发现 Member有异常时,会操作 Pool的

分发列表。

图 4.3.3.1-1 负载均衡架构

技术原理

实现:ICOS直接采用各种开源可用的负载均衡项目来完成负载均衡的任务,默

认使用 HAProxy,ICOS 中的每个负载均衡服务会对应一个或多个云主机,云主机中

允许提供负载的 HAProxy。Octavia所做的任务就是根据用户提出的负载均衡要求

在提供负载均衡服务的云主机中生成符合要求的 HAProxy配置文件并启动

HAProxy,然后由 HAProxy 进行负载均衡。

Page 97: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

90

图 4.3.3.2-1 负载均衡技术原理

提供负载均衡服务的 Amphora云主机一般会绑定三个租户网络,management

network被 Octavia管理组件用来与 amphora-agent通信,下发配置信息、监控负

载均衡服务的运行状态。VIP network实际提供业务的访问,客户端通过此网络访

问 Amphora虚拟机绑定的 VIP,当业务请求到达 VIP,负载均衡服务通过预先配置

的负载方法(轮询、最小连接数等),将请求分配给指定的后端成员。tenant

network用于 Amphora 虚拟机及业务虚拟机的连接,当业务请求由负载均衡分配给

指定的后端成员后,流量通过此网络由 Amphora 虚拟机发送到实际的业务虚拟机。

Page 98: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

91

图 4.3.3.2-2 Octavia 网络架构

4.3.4 QoS

功能描述

ICOS 基于 Neutron core plugin(目前用 Open vSwitch)实现了对端口流量进

行带宽限制、DSCP标记功能,基于 router NAMESPACE 实现了对浮动 IP 设置 QoS的

功能。Openvswtich作为 neutron ml2的 mechanism driver,具有对虚拟端口进行

QoS设置的功能,通过在 router NAMESPACE中配置 TC规则可以实现浮动 IP的 QoS

功能。

技术原理

API模块对外提供 API服务,Plugin接收请求,与数据库交互,然后通过 RPC

机制将操作与参数传给设备上的 Agent,Agent 调用 Driver对虚拟网络设备 OVS进

行操作。

Page 99: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

92

Neutron Server

Qos Plugin

Neutron API

Qos API

Neutron-Openvswitch-agent

Qos Driver

Open vSwitch

Neutron-Openvswitch-agent

Qos Driver

Open vSwitch

Controller node Compute node Compute node

图 4.3.4.2-1 QoS 技术原理

QoS具有 policy 和 rule两个概念,rule 是具体的规则,而 policy 是 rule的

集合,且可以关联端口和网络实现两种粒度的带宽限制。端口带宽限制是通过修改

OVS上的端口的 ingress_policing_rate 和 ingress_policing_burst 属性值来实现

云主机出方向的限速。用户可以为一个网络绑定一个 QoS策略进行网络的带宽限

制,云主机如果创建在该网络上,那么云主机端口的 network_qos_policy_id 属性

值等于该 QoS 策略的 ID,同时 OVS-Agent会操作 OVS,在底层根据 QoS 策略进行

相应操作。

4.3.5 分布式路由(DVR)

功能描述

在 ICOS 的网络环境中,跨子网的云主机通信需要通过 ICOS 的路由器。这既

包括不同子网的云主机之间的通信,又包括云主机与外网之间的通信。

在 DVR 被提出之前, 由于 ICOS 的普通路由只会部署在网络节点上,因此

会造成网络节点的流量过大,从而产生了两个问题,其一是网络节点将成为整个网

络的瓶颈,其二是网络节点单点失败的问题。

Page 100: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

93

技术原理

针对该问题,提出了分步式路由 DVR 的概念,顾名思义就是路由器 Router 将

不单单部署在网络节点上,所有启动了 Neutron L3 Agent 的节点,都会在必要时在

节点上创建 Router 对应的 Namepspace,并更新与 DVR router 相关的 Openflow

规则,从而完成 DVR router 在该节点上的部署。

在计算节点上部署了 DVR router 后,东西方向(E-W)上的流量不再需要将

数据包发送到网络节点后再转发,而是有本地的 DVR router 直接进行跨子网的转

发;南北方向(N-S)上,对于绑定了 Floating IP 的云主机,其与外网通信时的数

据包也将直接通过本地的 DVR router 进行转发,从而使网络上的一些流量被分摊

开,有效地减少了网络节点上的流量,通信不再必须通过网络节点,也提升了

Neutron 网络的抗单点失败的能力。

图 4.3.5.2-1 DVR 技术原理

对于东西向的流量, 流量会直接在计算节点之间传递。

对于南北向的流量,如果有 Floating IP,流量就直接走计算节点。如果没有

Floating IP,则会走网络节点。

Page 101: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

94

4.3.6 VXLAN

功能描述

VXLAN 全称 Virtual Extensible Local Area Network,主要用于封装、转发二层

报文,它就是扩充了的 VLAN,其使得多个通过三层连接的网络可以表现的和直接

通过一台一台物理交换机连接配置而成的网络一样处在一个 LAN 中。

3 技术原理

它的实现机制是,将二层报文加上 VXLan header,封装在一个 UDP 包中进

行传输。VXLan header 会包括一个 24 位的 ID(称为 VNI),含义类似于 VLAN

ID 或者 GRE 的 Tunnel ID。在 VXLAN 中这类封装和解封的组件有个专有的名

字叫做 VTEP。相比起 VLAN 来说,好处在于其突破了 VLAN 只有 4000+ 子网

的限制,同时架设在 UDP 协议上后其扩展性提高了不少(因为 UDP 是高层协

议,屏蔽了底层的差异,换句话说屏蔽了二层的差异)

使用 VXLAN 的优势:

位置无关性:业务可在任意位置灵活部署,缓解了服务器虚拟化后相关的网络

扩展问题。

可扩展性:在传统网络架构上规划新的 Overlay 网络,部署方便,同时避免了

大二层的广播风暴,可扩展性极强。

部署简单:由高可靠 SDN Controller 完成控制面的配置和管理,避免了大规模

的组播部署,同时集中部署模式可加速网络和安全基础架构的配置,提供了可

靠性和极好的扩展性。

适合云业务:支持千万级别租户隔离,有力支持云业务的大规模部署。

技术优势:VXLAN 利用了现有通用的 UDP 传输,成熟性极高。

Page 102: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

95

4.3.7 SR-IOV

功能描述

ICOS支持云主机挂载 SR-IOV网卡实现了多个云主机共享使用一个物理网卡的

功能,并且达到直接分配的目的,提高了网络交换的性能。

技术原理

SR-IOV 技术是一种基于硬件的虚拟化解决方案,SR-IOV使用两种功能

(function):物理功能(Physical Functions,PF),PF是完整的带有 SR-IOV

能力的 PCIe 设备,PF 能像普通 PCI 设备那样被发现、管理和配置;虚拟功能

(Virtual Functions,VF):简单的 PCIe 功能,VF只能处理 I/O,每个 VF都是

从 PF 中分离出来的。每个物理硬件都有一定数目的 VF可以配置,一个 PF能被虚

拟成多个 VF用于分配给多个云主机,Hypervisor 能将一个或者多个 VF分配给一

个虚机。在某一时刻,一个 VF 只能被分配给一个虚机,一个虚机可以拥有多个

VF。在虚机的操作系统看来,一个 VF 网卡看起来和一个普通网卡没有区别。

图 4.3.7.2-1 SR-IOV 技术原理

SR-IOV 特性的使用需要硬件平台 Intel VT-d 或者 AMD IOMMU的支持,在使用

此功能时,这些特性必须在 BIOS中被启用,如果 BIOS中有 SR-IOV的使能配置,

那么也需要进行开启操作,系统支持云主机在使用 SR-IOV类型的网卡时,进行热

添加,不支持 SR-IOV 类型网卡的热删除以及云主机使用 SR-IOV类型网卡时的迁移

功能。

Page 103: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

96

4.3.8 端口转发

功能描述

NAT 即网络地址转换,分为 DNAT(目的地址转换)与 SNAT(源地址转

换),最直白地从常见功能目的来说,DNAT 可以用于实现一个上层(路由的外

层)地址的端口转发到下层(路由的内层)网络某个地址的某端口,SNAT 可以用

于实现多台云主机共享一个网关地址访问上层(路由的外层)网络。

技术原理

NAT 全名是 Network Address Translation,是网络地址转换,它还可以分为

SNAT(Source Network Address Translation,源地址转换)和 DNAT(Destination

Network Address Translation,目的地址转换)。SNAT 主要是用来做默认网关的,

而 DNAT 主要是用来做端口映射的。OpenStack 在路由器的 NAMESPACE 中使用

IPTABLES 执行对 NAT 表规则的增删。

图 4.3.8.2-1 端口转发示例

如上图,为了管理需要,能在外层网络管理私网中的三台云主机,而这三台云

主机仅有私网地址没有外层地址,那么可以使用端口转发,将路由外层地址

114.123.123.x 的 22 端口转发至第一台云主机 10.1.1.3 的 22 端口,将 114.123.123.x

的 23 端口转发至第二台云主机的 22 端口,将路由的 24 端口转发至第三台云主机

Page 104: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

97

的 22 端口。如此通过 SSH 一个外层地址的不同端口来连接到私网内的三台云主

机。

4.3.9 安全组

功能描述

ICOS 通过结合和优化 IPTABLES 和 Open vSwitch 流表,提供安全组功能以支

持云主机级别的安全防护措施。

技术原理

安全组实现逻辑如下:

图 4.3.9.2-1 安全组技术原理

ICOS 安全组支持:

1. 定制 TCP 规则

2. 定制 UDP 规则

3. 定制 ICMP 规则

Page 105: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

98

4. 自定义 IP 协议规则

5. 自定义 DNS 规则

并且支持用户任意组合安全组规则,安全控制云主机入和出方向的所有流量;

在云主机迁移(云主机 HA、手动迁移)等各种场景下,安全组规则也会伴随云主

机自动迁移。

4.3.10 OVS-DPDK

功能描述:

ICOS 支持 OVS-DPDK 模型提升网络性能,如提高网络吞吐率、包转发率以及

降低云主机间延迟和抖动。

技术原理

DPDK(Intel Data Plane Development Kit)是 Intel 提供的数据平面开发工具集,专

注于网络应用中数据包的高性能处理。DPDK 应用程序运行在用户空间,利用自身

提供的数据平面库来收发数据包,绕过了 Linux 内核协议栈对数据包处理过程。

DPDK 其实也是网络开发框架和开发库、高效数据结构、众多 Linux 系统优化方法

的合集。OVS-DPDK 是 Open vSwith 使用 DPDK 在用户态实现了 netdev datapath:

使用轮询 driver 绕过内核协议栈来直接处理物理网卡上的数据包,性能提升明显。

图 4.3.10.2-1 OVS-DPDK 技术原理

Page 106: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

99

约束

使用 OVS-DPDK 需要一定的约束条件:

宿主机网卡和 CPU 必须在 DPDK 支持的硬件型号列表里;

宿主机必须开启大页内存

4.3.11 网络策略模板

功能描述

网络策略模板,是关联一组网络的属性,包括网络、子网、安全组、QoS 策

略。

用户如果想创建具备相同网络属性的云主机时,可以先将这些属性,关联到一

个网络策略模板中,即创建一个网络策略模板,选择需要关联的网络、子网、安全

组、QoS 策略。 然后再使用网络策略模板创建云主机。通过网络策略模板创建的

云主机具备相同的网络属性。

ICOS 的网络策略模板设计中,网络是必选的属性,子网、安全组、QoS 策略

为可选属性,其中安全组可进行多选。

网络策略模板的创建,不影响关联资源的操作。例如网络策略模板关联了网

络,关联的网络仍可以进行更新和删除操作。网络策略模板的状态可根据关联网络

的变化,自动更新状态。当关联网络被删除或不可访问时,网络策略模板将会自动

变成无效状态。网络策略模板处于无效状态时,不能进行云主机的创建。关联的其

他资源子网,安全组,QoS 策略,也是一样。

网络策略模板和云主机关系,在设计中也是非强关联的关系。即云主机使用网络策

略模板的创建,也不影响网络策略模板的更新和删除。

Page 107: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

100

技术原理

增加一个 Neutron 扩展网络策略模板模块。一个网络策略模板,可关联已创建

的安全组,QoS,网络,子网等信息。当用户选择一个网络策略模板创建云主机

时,按照网络策略模板关联的信息去创建云主机。

网络策略模板通过监听资源的 registry.notify 和 sqlalchemy 数据操作事件,发现

变更的资源,索引到相关的网络策略模板,根据变化的资源情况,自动更新网络策

略模板的状态,做到跟随关联资源的变化而自动状态迁移。

图 4.3.11.2-1 网络策略模板技术原理

4.4 裸金属服务

4.4.1 裸金属管理

功能描述

在某些特定场景下,用户需要更多的硬件访问权以及更高的机器性能,比如,

高性能计算服务、数据库主机服务等。业内传统做法是将物理服务器放置在机房。

每次对物理机服务器进行开关机操作或者安装操作系统等操作,几乎都需要去机

房;缺乏对机器的统一管理和调度,既浪费时间又耗费精力。为此,ICOS 提供裸

Page 108: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

101

金属服务,直接为用户提供独占式的物理服务器资源,满足用户特定需求的可行性

及高效性。

ICOS 裸金属服务支持物理服务器的批量注册、转管理、转可用等状态管理;支

持裸金属 RAID 配置;批量化电源管理及安装部署;支持对裸金属网卡的网络类型

添加标签进行标识;也能够实现对云物理机和云主机的统一管理和调度,实现快速

安装系统,实现硬件基础设施资源分钟级快速交付。它支持 Flat 和 VLAN 两种网络

类型,能够实现多租户下的网络隔离;IP 分配支持自动分配及手动指定两种方式、

裸金属调度支持自动调度及手动指定两种方式,能够广泛应用于高性能计算服务、

数据库主机服务等场合。

技术原理

图 4.4.1.2-1 裸金属创建架构图

裸金属服务提供对裸金属的生命周期管理,并和 nova、neutron、glance、

cinder 等服务集成,实现裸金属的系统部署,大体流程为:

1)裸金属服务 ironic 使用 PXE、IPMI 维护金属的注册管理,并可进行一些硬

件配置,如 RAID 配置,通过 inspect 过程收集硬件信息,并向 nova 提供可用的

裸金属资源节点,供创建云物理机调度使用。

Page 109: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

102

2)从 Nova 出发创建一个云物理机时,由 nova 负责调度一个合适的裸金属,

交由 ironic 对此裸金属进行部署。

3)ironic 与 neutron 交互,实现部署网络、检查网络、租户网络之间的切换。

Glance 向裸金属提供镜像服务,部署时,ironic 将镜像从 glance 存储后端拉到本

地。Ironic 负责裸金属的 PXE 环境配置,并驱使裸金属从部署镜像启动,引导代理

(Ironic-python-agent)运行并和 Ironic 服务建立连接,ironic 服务负责将镜像安

装于裸金属的本地盘上,从而实现裸金属系统部署。

单独从务 ironic 对裸金属的管理部署,可以分为两阶段,一个是 inspect 阶段,

一个是 deploy 阶段。两个阶段的功能实现主要依赖于 PXE 和 IPMI 技术。

Inspect 阶段。该阶段主要是让机房管理员将裸金属服务的裸金属节点接入到网

络当中来,并让裸金属服务获取到该裸金属节点的硬件信息并进行管理。该阶段需

要管理员配置该裸金属节点的 ipmi 用户名、密码,并将该裸金属的启动方式设置为

pxe 启动。当裸金属上电启动以后,会到 dhcp server 请求 ip 地址,dhcp server 在发

放 ip 的时候会将 tftp server 的地址一起给它。裸金属节点拿到 ip 之后会到 tftp

server 获取启动镜像。当镜像启动以后镜像中的 IPA 会去收集当前节点的硬件信息

并上报到裸金属服务。

Page 110: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

103

图 4.4.1.2-2 inspect 阶段数据流程图

Deploy 阶段。Deploy 阶段主要是用来给裸金属装用户镜像。当用户选择裸金

属服务申请裸金属节点的时候,OpenStack Nova 模块会调度选择合适的裸金属节

点,并发送消息到 Compute 节点,Compute 调用 Ironic API 接口准备裸金属主机,

Ironic API 接受到消息以后,发送给 Ironic Conductor,Conductor 会从 Glance 中把

用户镜像下载到 Ironic 节点中缓存。裸金属节点进行 PXE 启动,获取 ip 地址并获

取部署镜像,部署镜像启动后,镜像中的 IPA 会选择一个根磁盘创建 iscsi target 并

返回至 ironic-conductor。ironic-conductor 通过 iscsi 挂载至本地,并将用户镜像 dd

至此盘。最后通过 IPMI 接口设置从硬盘启动,通过 IPMI 接口重新启动物理机。

图 4.4.1.2-3 deploy 阶段数据流程图

至此,就已经完成裸金属对用户镜像的部署。

裸金属服务支持 RAID 配置,管理员可根据需要,选择物理磁盘及 RAID 级别

触发裸金属带内方式 RAID 配置。技术原理为:裸金属从清理网络(复用部署网

络)下载部署镜像,IPA 启动和裸金属服务建立心跳连接,接收裸金属服务的

RAID 配置命令,对裸金属 RAID 卡进行配置,方便快捷直观易操作。

Page 111: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

104

ICOS 裸金属服务还支持云物理机密码重置、支持多租户 VLAN 网络隔离、

VXLAN 网络隔离(对接 SDN)、支持选择多个网络、每个网络可指定 IP 地址,

支持自动调度或指定创建到某台裸金属上、支持裸金属与 VPC 内的云主机互通。

裸金属服务能够实现管理员对裸金属的统一管理,实现快速安装系统,合理分配和

利用物理资源,降低运维和管理成本,实现硬件基础设施的快速交付。

Openstack 中 Config Drive 能够实现元数据的注入,Config Drive 可以用于任何

操作系统,它能够将元数据传输到镜像系统中,以文件形式挂载到系统,供系统或

者 cloud-init 使用,Ironic 借助 cloud-init(版本大于 0.7.9)通过读取 Openstack 传来

的元数据能够实现网卡自动化配置以及端口自动化绑定。

裸金属能够使用 vlan 网络关键问题在于裸金属在部署过程中如何能够和控制节

点通信从而能从 Glance 下载镜像以及获取到 IP,对于这个问题设计了一个 vlan 类

型的部署网络,在每个控制节点配置上一个部署网络的 IP,裸金属在安装过程中

Ironic 调用 neutron 接口将网络从租户网络切换到部署网络,切换过程涉及到交换机

上端口 tag 号的变化,为此使用到了 neutron 的 GenericSwitch 插件,网络切换过程

调用插件,插件 ssh 到交换机,修改交换机端口 tag 号为部署网络的 vlan 号,从而

裸金属和控制节点达到了通信的目的,镜像下载完成之后,Ironic 调用 neutron 接口

将网络从部署网络切换到租户网络(同时 GenericSwitch 修改交换机上端口的 tag

号),裸金属在重启之后,能够获取到租户的网络。目前 GenericSwitch 插件适配

了浪思、锐捷、思科的部分交换机。

Page 112: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

105

图 4.4.1.2-4 裸金属管理

ICOS 支持纳管外部物理服务器,用于管理已部署业务系统的物理服务器,通过

IPMI 管理此类物理服务器的开关机状态。

约束

RAID 配置目前仅适配 LSI3008IMR 和 LSI3108MR。

4.4.2 云物理机挂载云硬盘

功能描述

ICOS 支持云物理机挂载 iscsi 链路协议的云硬盘,以满足当本地物理磁盘不足

时,可以灵活地按需挂载远端存储的需求。并且依托于后端存储对共享盘的支持,

云物理机也支持共享云硬盘的挂载,实现多台云主机/云物理机间存储共享,大大增

强云物理机存储的灵活性及可靠性。

技术原理

云物理机挂载云硬盘控制面是由 Nova、Cinder 以及 Ironic 交互实现云硬盘和云

物理机的关联,由 Nova 中向裸金属中的 Inspur-Bm-Agent(自研控制代理,可制作

Page 113: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

106

裸金属用户镜像时打入)下发连接命令,由代理实现最终的 iscsi 登录、扫盘等操

作。

图 4.4.2.2-1 挂载云硬盘

约束

云物理机挂载云硬盘有以下约束:

1. 网络方面,裸金属需要三个网络,一个万兆业务网,一个万兆存储网,另外

需要一个千兆的裸金属管理网(和 ICOS 管理网通过外部路由三层打通,用

于 nova 和 inspur-bm-agent 交互)。业务网和裸金属管理网需要 neutron 下发

管理,存储网可以 neutron 管理,也可以手动指定或外部 dhcp 分配地址。

2. 镜像方面,裸金属镜像需要安装控制代理 inspur-bm-agent,配置为开机启

动。

3. 存储类型方面,ICOS563 仅支持 iscsi 链路协议存储。

Page 114: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

107

4.5 容器服务

除了传统的云业务应用之外,一个典型的私有云环境还需要支撑越来越多的云

原生应用的运行。而容器作为一种轻量级的虚拟化,是云原生应用的理想载体,可

以真正的发挥云的弹性、动态调度、自动伸缩等一些传统 IT所不具备的能力。因

此很多企业对于容器的应用和对云原生应用的支持提出了需求。

在业内,通常支撑传统业务的云主机运行在 OpenStack集群,而支撑云原生应

用的容器运行在 K8s 集群上,两个集群需要分别部署和管理,集群之间的资源无法

共享和有效利用,既不利于日常业务的处理,也使得运维和管理成本成倍提升。

ICOS的容器服务模块为解决以上问题提供了方便的容器集群和容器应用管理功能,

帮助企业用户快速创建 k8s集群,并能够快速方便的使用 k8s集群的能力,支撑容

器云业务和云原生应用。

ICOS 支持基于 OpenStack 快速高效部署和管理 K8s集群,支持集群状态的实时

感知、集群节点的一键增删、容器应用的自动化部署、容器镜像管理、以及容器的

持久化存储卷管理等功能,真正做到 K8S On OpenStack,真正实现了用户在一套云

环境中统一管理云主机和容器,实现集群计算、存储和网络资源的融合共享,虚拟

化计算资源和容器计算资源的并行调度,降低了运维与管理成本。

ICOS 容器服务提供了高效的容器集群自动化部署方案,充分利用了数据中心

计算、网络、存储资源,实现了与 OpenStack 资源的深度融合,支撑云主机和裸金

属在一个容器集群中混合部署,具有强大的集群管理能力,透明的服务注册和发现

机制、内建负载均衡器及统一认证管理,同时提供了详细的事件跟踪机制、强大的

故障发现和自我修复能力,极大的提高了运维效率、资源管理的便捷性。

Page 115: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

108

图 4.5-1 容器服务

ICOS 的容器管理技术主要分为容器集群管理、容器应用管理、容器卷管理三

部分内容。

4.5.1 容器集群管理

容器集群管理方案以自研的 Cetus 模块为控制中心,用到了 OpenStack 的多个

组件,包括 Heat、Nova、Neutron、Cinder,以及开源的 K8S 集群管理引擎

rancher。具体流程为,用户从 UI 触发容器集群创建流程,Cetus 接收集群部署所

需参数,生成服务编排模板,然后调用 Heat,生成服务编排实例,通过 Heat 进而

调用 Nova、Neutron、Cinder 等模块,自动创建出容器集群所需的云主机、网

络、云硬盘等 IAAS 层资源,同时通过 Rancher 接口创建 K8S 集群的元数据。等

IAAS 层资源创建完成之后,通过 Cloud Init 在云主机上启动 Rancher-agent 进程

完成容器集群的相关服务配置,最终完成容器集群部署。

Page 116: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

109

图 4.5.1-1 容器集群管理

4.5.2 容器应用管理

容器应用管理方案以自研的 Cetus 模块为控制中心,对接 Rancher 作为统一的

K8S 集群路由,对接 Harbor 作为容器镜像的存储仓库,实现具体流程为,首先用

户从 Skyline 添加 Harbor 镜像仓库,并上传自己的容器应用镜像到 Harbor 中;用

户需要创建应用时从 Skyline 触发容器应用创建流程,填写应用部署所需参数,

Cetus 调用 Harbor 接口获取可用的镜像信息,填写完成后提交给 Cetus,Cetus 调

用 Rancher 接口将应用创建请求转发给用户指定的 K8S 集群,同时 Cetus 根据用

户创建集群时配置的 Harbor 信息生成拉取镜像的 Secret 文件,自动添加到用户的

应用创建请求之中。K8S 根据用户参数选择合适的节点创建应用,并使用 Secret 从

Harbor 中拉取镜像,完成应用创建。

Page 117: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

110

图 4.5.2-1 容器应用管理

4.5.3 容器卷管理

容器卷管理方案以自研的 Cetus 模块为控制中心,对接 Rancher 作为统一的

K8S 集群路由,使用 K8S 的 Cinder CSI 插件实现容器持久化卷的自动创建和自动挂

载。实现具体流程为:用户选择一个已创建好的集群,通过 UI 安装 Cinder CSI 插

件;用户创建应用,声明需要持久化卷(PVC)和卷的挂载路径;Cetus 通过

Rancher 调用 K8S 接口创建应用;Cinder CSI 插件识别用户 PVC 申请,调用 Cinder

接口创建云硬盘,并调用 Nova 接口挂载云硬盘到 POD 所在的节点上,同时在 K8S

中创建该卷对应的 PV 对象;该节点上的 Kubelet 发现 PV 创建完成后,将该 PV 挂

给具体的 Container 进程;

图 4.5.3-1 容器卷管理

4.5.4 容器镜像仓库管理

镜像仓库管理方案以自研的 Cetus 模块为控制中心,对接 Harbor 作为 icos 容器

集群的镜像仓库。一个 icos 环境中可以使用 https 协议接入多个 harbor 仓库,每个

仓库独立设置用户名密码和 k8s 集群的对应关系,一个 icos 集群默认对接一个

harbor 仓库。icos 可以接入用户已有的 harbor 仓库,也提供包含 harbor 服务的虚拟

机镜像和一键初始化脚本,帮助用户快速搭建一个 harbor 服务器。用户创建 k8s 集

Page 118: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

111

群时需要选择一个可用的 harbor 仓库,icos 会在初始化 k8s 集群时自动将 harbor 仓

库的 ca 证书文件设置到 k8s 集群节点的 docker 目录下,并在集群内自动创建 secret

以储存 harbor 的认证信息,整个流程全部自动化进行,为用户提供方便快捷的容器

镜像服务。

图 4.5.4-1 容器镜像仓库管理

4.6 弹性伸缩

随着云计算技术的快速发展,企业用户可以更好地在云平台上去使用各种云资

源,然而随着云资源的使用规模越来越大,企业用户在管理资源时,难度也在越来

越大,为了进一步优化解决 OpenStack 云中的资源池管理问题,弹性伸缩服务应运

而生。在 OpenStack 云中存在大量池化的资源,比如 VM、Container 等。这些资源

池存在一些共性的管理需求:成员可管理、规模可弹性伸缩、成员间负载均衡、被

管对象和策略可定制等等。

当一个部署在云主机上的业务需要根据性能压力进行节点规模的自动伸缩时,

就可以使用伸缩服务。

Page 119: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

112

4.6.1 伸缩组

伸缩组是具有相同应用场景的实例的集合,是启停伸缩策略和进行伸缩活动的

基本单位。

伸缩组基于社区 Senlin 项目实现,通过对集群资源建模,实现集群的抽象化管

理,主要元素模型有:

Cluster:集群,配置相同的资源的集合;

NODE:节点,资源的抽象,每创建一个 NODE,同时会调用相关接口创建一

个具体的资源,目前支持的资源类型包括 Nova 实例、Heat 实例等;

Profile:模板,创建资源实例所使用的配置信息,如:资源实例是 Nova 云主

机时,Profile 就是创建云主机相关的配置;

Policy:策略,集群伸缩时的相关策略,包括:伸展资源示例的个数、收缩资

源示例个数、收缩资源示例顺序等;

Receiver:接收器,生成集群伸展、收缩等动作的 URL,作为外部调用的接

口;

4.6.2 弹性伸缩原理

Senlin 定义了一套集群管理的框架,将 OpenStack 中同类对象的集合称为集群

(Cluster)。集群由节点(NODE)组成。同一集群内的每个节点都是用相同的

Profile 创建出来的,这里的节点和集群都是抽象对象(Object),具体是什么可通

过插件(Plugins)进行定制和扩展。除 Profile 可扩展外,对集群和节点进行管理的

策略(Policy)也支持扩展(同样基于 Plugins 机制)。目前 Senlin 项目中已经支持

的策略主要包括:部署(包括 Region 级和 Zone 级)、删除、扩容、负载均衡、健

康管理等。Senlin 软件实现了一个集群管理框架,预留了很多可扩展的地方。理论

上,所有同类的对象都可以用一个相应的 Profile 来封装成 NODE 供 Senlin 管理,

只要提供对应的 Driver 即可。而具体的管理 Policy 也可以根据应用需求方便的进行

扩充和完善。

Page 120: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

113

弹性伸缩服务基于 Senlin 项目实现云主机集群弹性伸缩的流程图如下图所示:

图 4.6.2-1 弹性伸缩流程

具体工作流程为:

1. 根据节点的资源规格、资源配置等定义 Profile 文件,根据 Profile 创建伸缩

服务下的云主机集群,云主机集群下包含多个 NODE 节点,每个 NODE 节

点对应一个 Nova 云主机;

2. 为云主机集群绑定伸缩策略,伸缩策略主要负责决定在扩展或缩小集群节

点规模时需要增加或减少的节点个数;

3. 为云主机集群创建集群伸展和收缩的接收器,产生触发集群的伸展和收缩

的 URL;

4. 为云主机集群绑定负载均衡策略,通过负载均衡策略将集群与其指定创建

的负载均衡相关联,以此实现云主机集群业务的负载均衡;

5. 设置云主机集群的 CPU、内存的上下限告警阀值,ICOS 智能监控模块监控

整个集群的 CPU 和内存使用率情况。当集群 CPU 或内存的使用率超过设置

的告警阀值上限时,智能监控模块会通过调用 3 中触发伸展的 URL 实现集

群的自动伸展,直至 CPU、内存使用率均低于告警阀值上限,以此降低集

群的负载;当集群 CPU 与内存的使用率均低于设置的告警阀值下限时,智

Page 121: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

114

能监控模块会通过调用 3 中触发收缩的 URL 实现集群的自动收缩,以此节

约计算资源。

ICOS 弹性伸缩服务从用户的角度设计弹性伸缩服务流程,以界面化的操作代替

了大量的配置文件,且以用户更加易懂的概念代替了大量的高深生硬的专业名词,

且一体化创建弹性伸缩服务,省去了原生社区创建该服务需要的大量繁琐繁杂的流

程,且简易化了后期的维护,在解决了管理云资源池资源难度大的同时,给了客户

极佳的用户体验。

4.7 资源编排

4.7.1 编排模板与实例

资源编排包括编排模板和编排实例两部分。

编排模板包括系统模板和自定义模板,创建系统模板,系统内置了多种类型的

模板;创建自定义模板,用户可以直接采用拖拽的形式定制符合自己需要的模板。

目前支持的可视化编排资源主要有计算、存储、网络、负载均衡以及裸金属这几大

模块;YAML 文件创建模板,用户可自行定义 HOT去编排 HEAT所支持的所有资源类

型;

编排实例是通过编排模板一键生成的实际资源,称之为一个 STACK,可以对编

排实例进行查看、删除等操作。

4.7.2 实现原理及应用场景

ICOS 服务编排技术实现原理:基于 OpenStack 原生 HEAT 模块进行了相关的拓

展开发,用户通过 Skyline 界面配置相关模板以及参数,Heat-api 接收模板以及参数,通

过 Heat-engine 模块调用 Keystone、Nova、Neutron、Cinder 等模块,创建出符合用户

期望的编排实例,架构示意图如下:

Page 122: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

115

图 4.7.2-1 编排技术原理

资源编排是通过一个可重复利用的模板,生成一套基础资源的功能,一个典型

的应用场景:用户需要快速搭建一套包含云主机、物理机并且网络能够打通的一组

资源,那么就可以通过服务编排去编排相应的资源去实现该使用场景,如下图所

示:

图 4.7.2-2 资源编排

Page 123: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

116

4.8 运营服务

4.8.1 多级业务流程自动化

在实际生产场景中,很多客户基于企业或组织自身情况,并不都是由管理员统

一创建资源并下发给用户使用,而是需要用户通过资源的申请审批流程,一层层的

审批通过,最后才能收到按需申请的相关资源。

在 OpenStack 社区的一系列“大帐篷”项目中,还未发现存在此类项目,最为

接近的也只是 Mistral 工作流组件,但 Mistral 也只是一种任务、动作、执行的工作

流模式,并不是一种申请、审批、创建资源的通用业务流模式。

ICOS 基于自研的 Leo 项目,实现了资源的申请、审批业务模式,支持以下功

能特性:

流程自定义

• 支持自定义资源类型、流程节点以及审批人。

• 支持串行审批、并行审批以及自动审批。

• 支持多达 25 级人工审批。

• 一个通用的流程审批引擎,支持定制化。

用户订单可追溯

• 从提交资源申请到资源创建完成,详细记录订单处理历史。

• 提供订单统计,支持从项目、资源类型等不同方面进行统计。

订单审批实时提醒

• 邮件、短信方式提醒用户进行处理。

• 处理结果的通知。

Page 124: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

117

ICOS 流程管理以项目和资源类型对流程进行细粒度区分,以实现客户对于不同

项目下不同资源的审批人细节调整的需求。客户在创建流程时可以自由规定,此流

程适用单个项目选择单个或多个资源,也适用于多个项目同时选择多个资源。

实现了系统公用流程和项目内自建流程并存的机制。当项目内没有对应的

审批流程时,项目内的订单和工单自动使用系统公用流程。

可规定了最大节点数量和各节点最大审批人数,并且可以自定义每个节点

的审批规则(任一通过/全部通过)。

可以依据同其他模块 Restful 接口的交互和基于消息队列的通知,监听实现

流程各属性值和状态的动态变化。比如,通过与基础模块的交互来控制各

节点审批流程中审批人的权限。

图 4.8.1-1 申请审批流程

4.8.2 可定制的云计划任务

ICOS 系统内置多种云计划任务,如开启云主机、关闭云主机、创建云主机快

照、云硬盘备份以及云硬盘快照等。用户通过页面配置任务的执行周期就可以定制

所需的云计划任务。常见的云计划任务有定期对云主机开机、关机、定期对云主

机、云硬盘进行备份等。

在传统的系统中,实现以上相关任务都需要操作人员具备一定的 Linux 运维能

力且操作起来非常繁琐,而通过 ICOS 只需要在页面进行相关设置就可以实现周期

性云主机、云硬盘的相关功能。

Page 125: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

118

ICOS 提供了一种分布式工作流管理引擎来定义云平台中的任务和工作流程,可

以为云平台提供计划任务服务、任务调度服务、运行时间长的业务流程服务、及任

务日志服务等。

通过分布式工作流管理引擎,用户可以在系统中管理多种需要周期性执行的任

务。比如,定时对某一台或多台云主机进行开关机操作,或定期对一台或多台的云

主机进行备份。

ICOS 中分布式工作流的实现主要基于 Mistral 组件。Mistral 中的 API Server 接

受 Skyline 传递的请求,解析成对应的工作流信息保存到数据库中并监听工作流的

执行时间。当发现某个工作流的执行时间到达时,则将输入的参数跟工作流信息发

送给 Engine,接下来将由 Engine 跟 Scheduler 配合执行工作流。 执行工作流过程

中会将工作流分解成一步步的 Action 通过 Scheduler 进行相关调度,每一个 Action

会调用其他模块的 Clinet 接口进行相关处理,处理的结果会以执行日志的方式保存

在系统中。

图 4.8.2-1 ICOS任务流工作原理

4.8.3 详细的报表功能

ICOS 提供针对系统资源统总览,主机、云主机以及操作日志等资源的报表功

能。分别从三个指标层面来生成报表:详细信息、性能报表、实时告警。

Page 126: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

119

用户可以通过页面实时查询到不同资源不同指标的报表数据,并通过生成报表

功能生成该时刻的报表数据保存到数据库中。之后可以通过下载中心页面选择报表

进行导出到本地。

ICOS 还提供了周期报表的功能,底层采用 Mistral 的工作流的功能,通过执行

不同频率的工作流以及不同的输入参数,来触发生成不同资源不同指标的报表,生

成的报表会自动保存到数据库中。之后用户可以通过下载中心进行下载。

如果用户需要删除已经生成的报表,可通过下载中心中清除历史文件进行删

除。ICOS 提供两种删除报表文件的逻辑,一种是全部删除,另一种是按照时间排

序,可删除某个时间之前的所有报表。

4.9 智能运维

随着客户系统和业务规模的快速提升,对如何高效、快速及灵活的实现对系统

和业务进行监控和告警的需求越来越迫切。一方面要保证服务的高可用、高性能、

可扩展。另一面要定制灵活、用户友好,提高异常处理效率,降低损失。

ICOS 监控告警系统提供大规模系统的监控、告警、通知和数据分析等服务,

具有高可用、高性能、精细化、可扩展、智能化和用户友好等特点,帮助用户打造

稳定可靠、定制灵活、准实时的监控告警服务。

图 4.9-1 监控告警系统

Page 127: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

120

监控告警系统提供精细化功能服务,包括数据展示、业务管理、数据处理、数

据存储和数据采集等,及时准确地监控整个系统运行情况,提高系统异常处理的响

应速度,提升运维效率,降低系统维护成本,有效保证用户业务的高可靠性。

数据展示包括大屏展示、性能数据展示、告警记录、实时通知和分析报

表等。

业务管理包括资源管理、配置管理、模板管理、脚本管理、告警管理、

通知管理,拥有良好的用户操作界面和业务自动化的处理方式。

数据处理包括支持采集、告警、通知配置生成和分发;告警、通知、数

据接口和任务调度的业务功能;数据挖掘和智能处理。其中告警通知采

用常规模式、智能模式通过设置告警阀值合理解决问题;智能处理中引

入人工智能和机器学习算法,支持异常检测、定位、分析、预警和故障

发现、止损、修复、归并等处理流程。

数据存储采用时序数据库实现数据快速存储,采用数据流分层处理的方

式加快数据处理速度,采用分布式缓存、消息队列等技术解决大数据并

发传输。

数据采集包括带内、带外、集中采集、代理采集等多种方式,拥有异构

设备的数据采集能力,采用插件的方式,实现采集、告警、分析的可扩

展性;支持批量上传采集端数据以缓解数据存储的压力。

ICOS 通过提供全面、统一、多维度的管理监控子系统,可以管理监控数据中心

的海量异构资源,包括服务器、存储、网络设备等硬件资源,各种操作系统、数据

库、虚拟资源等软件资源;并且能够及时发现故障产生的告警,有效提高故障处理

响应速度,降低运维成本。

4.9.1 丰富的数据采集插件

ICOS5.6 监控开发了丰富的采集插件,可以采集到 OpenStack 集群中大部分关

键数据,具体包括 ICOS 系统本身(宿主机、云主机、集群、容器、核心服务)、

Page 128: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

121

原生 OpenStack(宿主机、云主机、集群、核心服务)、操作系统、数据库、存储

服务、中间件、CEPH 存储等,具体如下:

图 4.9.1-1 OpenStack 采集数据

4.9.2 监控资源混合采集

ICOS 监控集群支持上千种数据采集,系统设计目标支持 10 万级别的监控项和

告警项,可以为用户实现精细化、可扩展的监控告警服务。

ICOS 监控数据采集可以支持集中采集、代理采集以及事件采集三种采集模

式,可以实现异构设备的数据采集。以下是三种采集模式的区别:

在集中采集模式下,监控集群会主动读取目标服务的监控数据并进行存储,可

以实现监控采集的横向扩展,支持大规模的采集服务和采集数据种类。

在代理采集模式下,可以由部署于目标服务机的代理服务程序采集数据并主动

上报到监控集群。代理采集方式主要用于核心监控指标的采集。

在事件处理采集模式下,监控集群会接收来自目标服务机主动上报的事件数

据,主要是实时性要求非常高的事件数据。此类数据会立即处理,这种数据处理方

式可以提升监控和告警的实时性。事件采集模式,主要是为客户提供了一种可自定

义的监控数据采集器,用户只要按照一定的规则约束,定义并实现自己所需的数据

采集器即可。比如,数据的采集内容、数据的上报格式、数据的上报地址等等。

此外,在数据采集过程中还支持用户自定义采集项。包括,采集周期、采集逻

辑、数据处理方式等,从而支持更多种类的数据采集。

Page 129: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

122

4.9.3 监控数据快速传输

ICOS 监控集群采集到的数据分为性能数据和时间数据。其中,性能数据对海量

数据处理能力要求非常高,时间数据对实时性要求非常高,因此采用如下技术实现

对监控数据快速传输的支撑:

采用数据库集群实现数据与其他系统模块的交互,有利于提升系统数据吞

吐量和稳定性。

定制数据传输策略。其中性能数据采用周期性批量上传方式,减少与数据

频繁交互造成的性能损失。时间数据采用实时接收和处理方式,提高数据

处理的实时性。

采用数据流分层和消息队列方式提高数据处理速度和并发度,从而实现数

据从产出到展现的传输速度。

通过上述技术,ICOS 可以做到千级数据采集实例、100M 级数据处理速度、时

间数据支持秒级数据更新和发出告警。

4.9.4 海量监控数据高效存储和处理

采用 InfluxDB 集群作为采集数据的存储数据库。InfluxDB 是一款用于存储基于

时间序列数据的时序数据库,它可以通过压缩数据来降低 I/O 开销,提高处理速

度,非常适合构建大型分布式系统的监控系统。

告警系统采用集群化解决方案,所有告警项均衡分配在多个告警服务中,每个

告警服务中的监控项互斥,且每个告警项仅处理一次。此方案一方面实现了告警服

务的横向扩展,另一方面实现了告警服务灾备处理,提高了云平台告警服务的高可

靠性。

4.9.5 大规模监控优化

ICOS 5.6 监控继承了 ICOS 5.5 在数个数百台规模生产环境的集群中的监控组件

开发和参数调优,理论支持千台以上集群规模。

Page 130: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

123

解决的大规模监控的技术难点,解决了传统监控网络瞬时流量高、吞吐量低、

数据丢失、内存消耗直线升高等问题,主要如下:

1、采集端优化:

1)设置随机抖动时间来控制采集器采集前的休眠时间,从而降低网络瞬时

流量;

2)加入缓存机制,通过设置对采集数据量进行缓存后批量写入的方式,降

低采集器的并发请求,从而降低存储端的并发操作,提高监控的性能。

2、存储优化:

1) 基于 LSM 的存储引擎,增大数据库并发量和吞吐量。

2)加大快照容量,提高吞吐量。

3)将内存索引优化为内存磁盘混合索引,降低存储内存消耗。

4)关闭非必须的日志,减少磁盘写入,提高数据存储速度。

3、提高告警的吞吐量:

1)细粒度批量处理,兼顾实时性和吞吐量。

2)支持修改为 UDP传输协议,减少网络握手次数,提高并发。

4.9.6 大规模告警优化

ICOS5.7 依然延续了 ICOS5.6 的技术栈,并在 ICOS5.6 的基础上增添了告警分

布式处理的特性。

监控系统架构引进负载均衡器,采集的数据都发送至负载均衡器,解决了因采

集规模扩张导致的告警处理能力不足的问题,能够处理上千台集群中采集数据的处

理。其主要特性如下:

1. 采集处理端的优化:

1)整个架构添加 HAProxy 作为负载均衡器。HAProxy 是一个使用 C 语言编写

的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP

Page 131: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

124

的应用程序代理,完全可以支持数以万计的并发连接。能够支持大规模集群数据采

集端的请求及处理。

2)负载均衡器根据采集节点的 IP 地址利用一致性哈希算法,将采集的数据均

衡、一致的发送到后端告警处理节点进行处理。

2. 数据处理分布式及水平扩展:

能够以增减监控处理组件数量的方式处理应对不同规模集群的监控需求,扩展

快速灵活,只需改动少量配置。便能很好的应对不同规模的告警处理需求。

3. 处理结果集中存储:

所有采集项的处理结果都发送到统一的仓库,能够集中对这些处理结果进行聚

合整理等操作。

4.9.7 趋势预测

ICOS5.6 采用三次指数平滑算法对云平台的重点指标数据进行曲线拟合分析的

方式,实现了时间序列数据的预测,从而实现了云平台重点指标提前异常预警的效

果。

指数平滑算法是通过计算指数平滑值,配合一定的时间序列预测模型对现象的

未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平

滑值的加权平均。其中三次指数平滑算法则是对数据进行了三次指数平滑运算,在

二次指数平滑的基础上保留了季节性信息,适用于预测带有季节性的时间序列。

根据云平台实际的数据趋势和季节性,对算法的实际应用进行了参数调优。通

过参数调整,将定性分析和定量研究结合,修正趋势相关值,提高了指数平滑预测

的精度。其中调优项主要体现在以下两个方面:

1 采样数据取值,采集数据的相隔时间太短,则容易降低预测结果的精度,在

实际调参中,发现整点的数据作为开始数据进行预测可以取到更好的效果。

2 预测点周期性,周期参数太小,也容易导致预测结果的精度过低,通过对数

据进行分析和多周期环境的测试,发现 12 小时机器倍数的数据预测结果较佳。

Page 132: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

125

如下是趋势预测的展示截图:

图 4.9.7-1 趋势预测

4.9.8 通用事件系统

随着云平台的规模不断扩大及第三方平台的接入,代理采集不是全部适用。

ICOS 也具备基于事件的告警通知功能,应用场景包括:

1、ICOS 内部事件需要展现或者发送通知时;

2、替换 ICOS notification,减轻 RabbitMq 压力;

3、第三方平台事件或者告警需要在 ICOS 展现或者发送通知时。

图 4.9.8-1 事件系统架构

ICOS 事件系统接入方式为 API 调用,需填充的内容包括模块名称、事件名

称、事件等级、事件内容、采集主机、项目 ID、用户 ID 等,事件等级包括正常、

中度告警、严重告警,事件系统会对事件格式进行严格检查。页面对接入系统的事

件提供查询功能和通知管理功能。

Page 133: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

126

图 4.9.9-2 事件系统页面

4.9.9 调用链

随着云平台规模的不断扩大和复杂性的不断提升,问题定位成本也不断提升。

当用户从前端发起一个请求,到最后的请求完成,需要经过调用,这些调用可能都

是分布式服务的方式提供,部署在不同的服务器上。调用的链式日志分析功能即为

解决该运维痛点。

OpenStack 记录每一次请求调用的链路过程。每一次调用请求会在最开始生成

一个全局唯一的用于标识此次请求的 global_request_id,global_request_id 在这次请

求调用过程中无论经过多少个节点都会保持不变,并且在随着每一层的调用不停的

传递。最终,可以通过 global_request_id 将这一次用户请求在系统中的路径全部串

起来。

整个调用链中由 global_request_id 串成整个链式关系,而请求中的调用关系是

由 span 来标注的。请求链中的每一个环节称为一个 Span,每一个 Span 有一个

SpanId 来标识,在请求调用中,spanid 透传到下一 span 作为下一 span 的

parent_SpanId,这样前后 Span 间形成了父子关系。

Page 134: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

127

图 4.9.9-1 调用链原理

上述信息均采用日志方式记录在本地磁盘,此方法减少了各组件的性能压力。

ICOS 对日志进行多维解析后集中索引到分布式 elasticsearch。供调用链模块快速索

4.9.10 一键式健康检查

ICOS 集群健康度检查基于大规模、细粒度、全面覆盖的监控数据,基于时序

数据库的读写的快速响应和海量监控数据并行计算能力,包括集群检查、存储服务

检查、关键进程检查、API 服务检查、平台服务检查、系统服务检查等。

1. 集群检查

OpenStack 集群运行的宿主机,宿主机是 OpenStack 集群的载体,当宿主机出

现异常时(包括连通性、内核、进程数、性能数据等等),会影响运行于该主机的

程序是否可以正确运行。

2. 存储服务

为 OpenStack 系统运行提供第三方存储的服务,例如 G2、ceph 等,当存储服

务产生问题时,OpenStack 系统会因无法使用存储服务造成 OpenStack 本身跟存储

相关的服务(例如 cinder 等)不能使用。

3. 关键进程

Page 135: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

128

OpenStack 系统再宿主机上运行的关键进程是否正常,例如 nova-compute,

nova-api 等。当关键集成出现问题时,OpenStack 可能仍然会对外提供服务(高可

用架构),但 OpenStack 系统已处在风险中。

4. API 服务

OpenStack 各服务通过对外提供的 API,从而提供服务。当 API 不能访问时即

外部系统不能使用 OpenStack 服务,所有 API 的正确性和及时性影响集群向外提供

服务是否能够运行。

5. 平台服务

OpenStack 各组件的服务,例如 nova-compute,neutron-server 等。除了进程,

还会检查 OpenStack 各组件服务的运行情况。服务的状态影响集群提供的业务是否

能够正确执行。

6. 系统服务

系统服务是 OpenStack 中使用的第三方软件,包括 Rabbitmq、Mariadb、

Memcache 等。当平台服务不能正确运行时,会造成 OpenStack 集群整体瘫痪。

图 4.9.10-1 健康检查页面

ICOS 一键式监控检查按照资源类型不同进行健康度检查,实现了对平台的各

项服务进行全面的一体化自动检查,并对结果进行直观的展现,做到“及时预警、

快速定位”。

Page 136: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

129

4.10 日志系统

4.10.1 功能描述

随着客户系统和业务规模的快速提升,对如何高效、快速及灵活的实现对系统

和业务日志进行管理、检索和分析的需求越来越迫切。当系统发生故障或出现性能

瓶颈时,需要通过分析各种日志来定位故障原因,找出导致系统性能瓶颈。

ICOS 通过提供全面、多维度的日志系统,可以管理 OpenStack集群的海量日志

数据,包括操作系统日志、核心服务日志(如 Mysql、RabbitMQ 集群)、

OpenStack 组件日志和 WEB 服务日志,在此基础上支持主机日志分析、组件日志

分析、主要组件调用错误、主要组件 RabbitMQ 调用错误、主要组件 MYSQL 调用

错误和云主机创建调用链等核心分析功能,有效提高故障处理响应速度,节省运维

成本。

4.10.2 技术原理

ICOS 日志系统提供大规模系统的日志采集、日志存储、日志检索和日志分析

等功能,具有高可用、高性能、可扩展、和用户友好等特点,帮助用户打造稳定可

靠日志系统服务,提高问题定位效率。

Page 137: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

130

高性能、分布式架构

图 4.10.2.1-1 日志系统架构

日志系统包括日志检索、日志分析、日志数据接口服务、日志存储和日志采集

等,提高系统异常处理的响应速度,提升运维效率,降低系统维护成本,可以使用

户专注核心创新。

数据检索支持按时间、主机、模块、组件、级别、用户 ID、项目 ID 和

关键词进行检索数据,支持数据导出为 Excel 文件。

数据分析包括支持主机日志分析、组件日志分析、主要组件调用错误、

主要组件 RabbitMQ 调用错误、主要组件 MYSQL 调用错误和云主机创

建调用链等核心分析功能。

日志数据接口服务处理日志系统管理,为 Skyline、Kibana 等前端和包

括监控系统在内的第三方系统提供数据查询服务。

Page 138: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

131

日志存储采用企业级全文搜索引擎 ElasticSearch 集群,具有分布式、高

扩展、高实时的特征,支持大数据量的检索和分析。在 500 节点测试

中,日志系统每天采集并存储约 10 亿条日志,准实时索引后供测试和

运维人员检索。

数据采集支持操作系统日志、核心服务日志(如 Mysql、RabbitMQ 集

群)、OpenStack 组件日志和 WEB 服务日志;支持定制化采集规则;支

持自定义上报周期。

日志种类多样性

ICOS 日志系统支持 OpenStack 集群中大部分关键日志数据的采集,具体如

下:

(1)操作系统日志

记录内核和应用程序产生的日志信息,管理员可以通过查看日志记录,来掌握

系统状况。

(2) 核心服务日志

包括 MariaDB、RabbitMQ 集群、Zookeeper 和 Kafka 等核心服务,及时通过日

志掌握核心服务运行状态。

(3) OpenStack 组件日志

包括 Nova、Cinder、Keystone、Neutron、Glance 和 Haproxy 等核心组件。

(4) Web 服务日志

包括所有 OpenStack 中提供 HTTP 服务模块的 Web 日志。

海量日志数据高效存储

日志存储采用企业级全文搜索引擎 ElasticSearch 集群,支持大数据量的检索和

分析,在 500节点测试中,日志系统每天采集并存储约 10亿条日志,ICOS日志存

储具有以下特性:

Page 139: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

132

高可扩展性:作为大型分布式集群容易实现集群扩容,也可实现单机形式

的轻量级搜索引擎。

功能丰富:提供了全文检索、同义词处理、相关度排名、复杂数据分析、

海量数据的近实时处理等功能。

数据分片:一方面提高数据检索、分析效率,另一方面提升数据量存储能

力。

高可用:提供副本机制,即使在某些服务器宕机后,集群仍能正常工作,

提高数据可用性。

多维度日志分析

(1) 数据多维度

日志数据支持时间维度(精确到毫秒)、主机维度(云物理机)、用户维度

(用户 ID)、租户维度(租户 ID)、级别维度(Info、Warning、Error 等)、组件

维度(Nova_API、Nova_Compute 等)、Python 模块(neutron.agent.l3.ha 等)和日志

文件名(Nova、Neutron 等)。支持用户通过上述维度检索日志信息,快速定位问

题。

(2) 多维度数据分析

数据分析包括支持主机日志分析、组件日志分析、主要组件调用错误、主要组

件 RabbitMQ 调用错误、主要组件 MYSQL 调用错误和云主机创建调用链等核心分

析功能。另外,基于 Elasticsearch 强大的检索和数据分析功能可快速实现有价值的

业务分析,为用户对整个系统的管理具有重要价值。

4.10.3 日志系统优势

全面、可扩展的日志数据采集

支持对操作系统日志、核心服务日志(如 MySQL、RabbitMQ 集群)、

OpenStack 组件日志和 WEB 服务日志进行检索和导出,全面覆盖云平台核心日

志。同时支持日志数据种类的灵活扩展。

Page 140: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

133

支持海量日志数据存储

日志系统支持每天采集存储约 10 亿级别条日志,准实时构建索引,秒级数据

查询。

项目 指标

数据存储量 每天 10 亿级

索引构建(更新)时间 10 秒级

数据查询耗时 秒级

支持大规模云平台

支持 500 台宿主机的大规模云平台,理论上支持上千台宿主机规模云平台。

项目 指标

经测试验证的最大集群规模 500 台宿主机、20000 云主机

理论支持的最大集群规模 1000 台宿主机、40000 云主机

4.11 双因子认证

双因子认证是指在用户名密码验证基础上,额外增加一种不同的安全认证方

式,通过系统登录的多因子认证过程,来提升系统安全性。安全 CBBV2.0 数字证

书双因子认证模块,在 WEB 系统登录过程中,在用户名密码认证用户合法性的基

础上,增加对用户数字证书认证的过程。其以微服务的方式对外提供,向外提供

restful 接口,提供的接口功能包括证书的查询、生成、下载、验证、删除及 token

信息的认证等。数字证书双因子认证 CBB 模块,利用 Java 的 keytool 工具对用户

生成对应的证书信息,证书信息里面写入用户标识等信息。

Page 141: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

134

对于集成了此安全 CBB 模块的 WEB 系统,系统管理员可以根据需要进行开启

数字证书双因子认证功能。若开启功能,则 WEB 系统需要在对应业务中配置微服

务调用地址,以进行数字证书的生成、下载、验证、删除等操作。

双因子认证服务主要包括证书管理服务以及证书校验服务。证书的查询、生

成、下载、删除,以及 token 的验证均在证书管理服务上完成;证书的校验在证书

校验服务上完成。

证书保存在证书库中;进行证书校验产生的 token 保存在 token 库中。

其次,双因子认证服务提供了证书管理 UI,包括根证书的管理、CA 证书的管

理以及用户证书的管理。管理员可以登录证书管理系统,生成一套独立的证书,供

其他应用使用。

4.12 访问控制

随着企业规模的不断扩大,企业使用系统的人员越来越多,所需要的权限多样

性也在上升,需要灵活、直观的角色权限访问控制系统。

虽然 OpenStack 社区提供了角色权限访问控制功能,但配置复杂,角色功能

弱,不能灵活控制 UI 层面上的权限配置和展示,不能完全满足客户需求。

ICOS 产品站在用户的角度,基于 RBAC,为客户提供了可自定义的角色权限访

问控制功能,这些功能充分考虑了客户的使用场景,并经过了完善的测试。

ICOS 中的自定义角色是以系统预置角色为基础的权限集合,通过权限分配

“树”的自定义勾选,可实现所有可选权限的有效控制和细粒度的分配。同时,也

实现了权限和角色多对多的控制和操作。

许可

用户 角色 操作 客体

图 4.12-1 角色权限访问控制

Page 142: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

135

ICOS 中也划分了几个默认角色,具体为,超级管理员、项目管理员及项目用

户。超级管理员负责数据中心的所有资源的管理监控和分配。项目管理员是对项目

内所有资源的持有者。项目用户是具体的资源的实际应用者。

超级管理员

项目管理员

项目用户

OpenStack Admin

Openstack Member

图 4.12-2 默认角色

ICOS 中一个用户可以同时被赋予多个角色,组是一个角色的集合,也可以

通过将用户加入组中,间接实现对用户的赋权,简化赋权过程。

角色A

角色B

组A

图 4.12-3 角色组

ICOS中的角色权限访问控制系统,可实现对不同角色进行不同的权限分配,可

实现角色和权限的多对多关系。

前台 UI层面通过对表单 JSON数据的快速引导计算,把权限序列加载到页面树

状结构中。根据不同的角色类型,可以展示出不同的权限集合树。管理员通过对权

限树上具体权限的勾选, 可以实现对不同角色进行权限自定义、修改、删除、查

询及重定义。

Page 143: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

136

图 4.12-4 权限集合树

后台接口层面,通过 Policy配置文件,可实现具体接口和原生 OpenStack 角

色权限的多对多关系映射。对不同的接口,可以配置一条或多条基于角色的接口访

问规则,也可以根据业务需要,自定义接口访问规则。Policy配置文件支持动态修

改,无需重启认证服务即可生效。

图 4.12-5 Policy 配置

另外,ICOS基于 Policy配置文件,还可以实现接口层面的安全检查机制,一

个请求从进入接口层面开始,会经过重重的认证和权限检查,待检查通过后,才可

以访问 ICOS 系统,这可以充分有效防范非法的请求以及危及网络安全的黑客攻

击,做到安全同时有效的细粒度的角色权限访问控制。

Page 144: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

137

图 4.12-6 安全检查机制

Keystone 认证流程:

第一步:用户想要接入服务(Service),向 Keystone 发送凭据(Credential),获取

一个临时令牌(Token)

第二步:用户使用临时令牌,获取可用项目列表

第三步:用户使用凭据和可用项目列表,获取令牌和可用服务列表,用户决定

使用哪个服务,并将令牌随请求发送给对应的服务

第四步:服务向 Keystone 验证用户的令牌是否合法

第五步:Keystone 验证令牌是否具备访问服务的权限,验证通过后,提供与令

牌相关的用户权限等信息,服务根据自己的权限策略文件,判断用户是否具备权限

访问对应接口

第六步:服务执行用户请求

第七步:服务将请求结果返回用户

Page 145: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

138

4.13 备份与容灾

随着大中型企业的快速发展,企业用户规模不断扩大,数据的增长速度越来越

快,往往会出现系统操作失误或系统故障导致数据丢失的情况,需要云平台提供容

灾备份的功能,以保证用户业务数据的安全性。

备份主要是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或

部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。容灾主要是

指在相隔较远的异地,建立一套或多套功能相同的 IT 系统,互相之间可以进行健

康状态监视和功能切换,当一处系统因意外(如火灾、地震等)停止工作时,整个

应用系统可以切换到另一处,使得该系统功能可以继续正常工作。容灾技术是系统

高可用性技术的一个组成部分,容灾系统更加强调处理外界环境对系统的影响,特

别是灾难性事件对整个 IT 节点的影响,提供节点级别的系统恢复功能。

4.13.1 云内备份

ICOS 云平台上支持的备份功能包括云硬盘备份、云主机快照、整机备份等。

云硬盘备份

ICOS 支持备份到云,或备份到第三方服务器两种备份方式,支持的备份类型

有全量备份与增量备份。对云硬盘支持热备份和冷备份两种方式。

云内备份指的是可以使用 ICOS 中的备份服务,将云硬盘备份到已经对接好的

备份后端,而无需使用第三方备份软件。

全量备份(full backup)会将云硬盘中所有数据包括云硬盘的属性数据一起全

量地备份到备份后端。全量备份不会检查云硬盘数据的变化,即使两次全量备份之

间数据未有变动,全量备份也会简单地对数据进行全量复制备份。

增量备份在做数据备份前,首先对比当前云硬盘的数据与上次备份数据之间的

一致性,只备份差异性数据。注意,在对云硬盘进行第一次增量备份时,默认执行

全量备份,因为增量备份需要一次全量备份作为参照,且支持显示父备份和源卷的

信息,可以清晰地展示备份间的继承关系,增量备份比全量备份更加节省存储空

间,但是各增量备份文件间依赖性较强。

Page 146: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

139

ICOS 同时支持云硬盘的热备份(Worm Backup)与冷备份(Cold Backup)。热备

份:即使云硬盘处于正在使用状态(已被挂载),仍然可以进行云硬盘的备份操

作。冷备份:即云硬盘处于可用状态(未被挂载)时,可以对云硬盘进行备份操

作。

云主机快照

ICOS 支持给云主机创建快照,并支持通过快照还原云主机。

ICOS 支持两种模式的快照。一、如果云主机由镜像直接创建,此时创建快

照时,会将快照以镜像的方式创建到镜像服务管理的镜像仓库内。当恢复云主机

时,可以将通过该远端镜像将系统盘恢复出来。二、如果云主机由云硬盘启动(包

括镜像创建时指定新云硬盘,云硬盘快照)时,此时创建的快照是一个镜像文件索

引,该镜像文件索引信息对应该云主机所挂载的每一块云硬盘所创建的的快照,也

就是说其真实快照创建到各个云硬盘所在的存储后端上。例如,如果云主机挂载 A

和 B 两块云硬盘(A 为系统盘),对云主机创建快照后,A 和 B 云硬盘会在自己的

存储后端上分别创建相应的云硬盘快照.此时通过快照创建云主机时可以将所有云硬

盘创建出来,并自动挂载给云主机。

整机备份

在日常生产中,通过备份可以恢复之前的数据,即使云主机的数据丢失,也

能通过备份数据进行恢复,最大限度地减少或避免因原数据丢失而造成的损失,

“备份”意味着安全保障。

对于用户的备份需求 ICOS 整机备份能够备份云主机全部磁盘在某一个或者

多个时间点的数据,从而满足用户保证业务安全、方便使用、提高应用部署效

率。ICOS 基于整机备份记录云主机全部系统盘和数据盘时间点不同数据状态,

进去全量备份保存,与源独立、隔离,记录备份的来源云主机、创建时间、状态

等。当需要某个数据状态的云主机时可使用相应备份一键恢复、创建,提高管理

效率,实现数据安全。整机备份的工作原理示意图如下所示:

Page 147: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

140

图 4.13.1.3-1 整机备份

对应云主机的系统文件和数据都保存在存储节点上的一组云硬盘(Original)

中,当云主机创建的备份时,ICOS 会在存储节点上进行数据的全量复制

(Backup)产生新的云硬盘。备份成功后就能够通过备份启动一个新的云主机。

4.13.2 容灾

功能描述

当数据中心级别故障或者计划内维护时,最大限度保障业务连续性,保障客户的

关键数据不丢失。当对某个云主机进行了容灾保护后,当主数据中心意外宕机后,

业务云主机可以在备中心一键拉起,对外继续提供服务。

这里的业务连续性包括 RTO 和 RPO,存储的同步复制机制可实现 RPO=0,RTO

接近于零,为发现主中心业务失败时间加上拉起备中心业务云主机的总时间。

技术原理

该功能由 ICM + ICOS + G2 三层系统共同完成,包括:

G2 利用远程复制技术实现业务云主机数据层面的数据同步

ICOS 封装 G2 的远程复制关系和一致性组功能,对 ICM 提供管理接口

ICM 编排业务逻辑,包括云主机的容灾保护、业务恢复等

Page 148: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

141

具体的流程图如下图所示:

图 4.13.2.2-1 容灾技术原理

当用户对某个云主机进行了容灾保护时,具体的流程为:

1. 调用 Nova 查询云主机的详细信息,主要是系统盘(云硬盘启动)和数据盘

的信息

2. 调用主中心 Cinder 的接口查询云硬盘的信息。

3. 调用备中心的 Cinder 在备中心创建同规格的从云硬盘。

4. 调用远程复制关系管理模块 Neptune 建立主从云硬盘的复制关系,把一个云

主机的多个复制关系,放到一个一致性组内,进行数据同步。

当主中心故障后,在备中心拉起业务云主机,流程包括:

5. 把云主机对应的一致性组解除写保护(存储系统保护机制)

6. 根据云主机的具体信息,创建备中心的业务云主机(通过从云硬盘启动云主

机)

Page 149: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

142

两地三中心

以上容灾方案在数据层面上保障了双活,但是业务上仍然需要有个拉起过程即

RTO 不等于零,如果想保障业务上的双活,可以使用双活数据中心(使用负载均衡

进行业务负载),如下图所示,这种方案下需要业务自己保障两地的双活。用户 A

访问站点间负载均衡 GSLB,获取可用的站点内负载均衡 SLB,SLB 对站点内的应

用进行业务负载,像是 DB 层需要集群技术进行跨站点高可用。

图 4.13.2.3-1 双活数据中心

同城的两个中心同时负载业务,异地备中心进行数据备份,就构成了两地三中心

的方案,如下图所示:

Page 150: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

143

图 4.13.2.3-2 两地三中心

具体原理为:

主中心的 ICM 管理同时纳管同城两个 ICOS 和异地的一个 ICOS,创建的业

务可以选择在同城的双活中心进行负载;

如果有大二层打通的需求,可以借助网络 SDN 技术实现同城和异地的二层互

通;

ICM 统一管理平台实时同步元数据到异地 ICM,通过存储远程复制到异地存

储;

当主中心宕机后,可以在备中心通过 ICM 拉起业务。

4.13.3 第三方备份

ICOS 对外提供标准的备份接口,不仅支持云内备份,也支持对接第三方备份

系统的云外备份,目前已经支持对接 AS 备份系统,实现云外备份及恢复。第三方

备份支持云硬盘启动的云主机及其所有数据盘的备份及恢复,支持 Cinder 存储后端

为 Ceph、LVM、G2 的备份及恢复,支持定时备份及恢复。

ICOS 对接第三方 AS 备份系统,不再使用原生 Backup Driver,而是在 Cinder-

backup 容器中安装 AS 备份驱动(Eisoo AnyBackupCinderClient)并做相应的配置

变更。

Page 151: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

144

备份操作在 AS 备份系统下发,ICOS 接收到备份请求后:对云主机创建云硬盘

快照、从云硬盘快照创建云硬盘、挂载云硬盘读取云硬盘数据、完成云主机数据备

份到 AS 备份系统;其中 AS 备份系统后端可以挂接的浪潮 AS5500G2。

恢复操作可将云主机恢复至 ICOS 云平台,既支持重新创建云主机恢复,也支

持覆盖原云主机恢复,覆盖恢复保持原云主机 ID 不变,恢复操作的恢复粒度为云

主机级别,支持单个或多个云主机的恢复。

第三方备份-AS 备份与恢复的数据流如下图所示:

图 4.13.3-1 AS 备份与恢复

4.14 起始页和大屏

ICOS 拥有优秀的 Portal 界面技术架构,服务端引入基于 NODE.js 技术的

Express 框架,客户端引入基于 MVVM 设计模式的 VUE.js 框架,有效提升了页面

响应速度,增强用户体验。

基于 D3.js 数据可视化组件,实现服务编排可视化拖拽,可基于系统模板或自

定义拖拽创建编排模板,通过可见即所得的方式完成资源的编排,提升用户友好

度。

如下是 ICOS 起始页和大屏展示截图:

Page 152: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

145

图 4.14-1 起始页(一)

图 4.14-2 起始页(二)

图 4.14-3 起始页(三)

Page 153: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

146

图 4.14-4 起始页(四)

图 4.14-5 大屏

4.15 集群生命周期管理

4.15.1 安装部署

ICOS容器化安装部署分为操作系统安装以及 ICOS各组件安装部署两部分。

ICOS 操作系统安装

ICOS 操作系统安装使用容器化的 Cobbler 服务,通过网络启动(PXE)的方式

来完成系统快速无人值守安装。Cobbler是一个 Linux系统安装的服务,可以通过

Page 154: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

147

网络启动(PXE)的方式来快速安装、重装物理服务器和云主机,同时还可以管理

DHCP,DNS 等,其服务端和客户端的工作流程如下图所示:

启动cobbler服务

执行cobbler check命令

执行cobbler sync命令

复制相关文件到tftp目录中

启动dhcp服务

dhcp服务分配ip地址

tftp传输文件

server端接收安装信息

server端发送ISO镜像与kickstart文件

图 4.15-1 cobbler 服务端工作流程

客户端以PXE模式启动

客户端获取IP地址

通过TFTP服务器获取启动文件

进入cobbler安装选择界面

客户端确定加载信息

根据配置信息准备安装系统

加载kickstart文件

传输系统安装的其他文件

进行系统安装

Page 155: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

148

图 4.15-2 cobbler 客户端工作流程

ICOS 各组件安装部署

ICOS 各组件安装部署已经实现了容器化。容器化的优势是可以在任何安装了

Docker的机器上运行,而不用关心底层操作系统,同时,也可以很方便的做到服务

组件的版本化升级、回滚。

ICOS 各组件安装部署的工作主要分为两部分:

ICOS 各组件镜像的构建

ICOS 各组件的镜像构建是以社区开源的基础镜像库为基础的,在此基础之上,

使用 ICOS 镜像构建模块整合内部 Gitlab个性化代码、内部 PIP及 YUM 源和一些安

全加固的策略等,从而生成最终的个性化镜像库。ICOS镜像构建模块的基本流程如

下图所示:

社区基础镜像库

个性化镜像构建模块

安全加固策略 内部pip及yum源

内部gitlab个性化代码库

个性化镜像库

个性化镜像构建

图 4.15-3 ICOS 镜像构建基本流程

ICOS 各组件的容器化安装部署

ICOS 各组件的容器化安装部署过程主要使用 Kolla-ansible实现。Kolla-

ansible的主要目的是把 ICOS各组件镜像按照一定的规则部署出来一个可用的

OpenStack系统。Kolla-ansible不仅支持大部分 OpenStack模块的容器化部署,

Page 156: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

149

同时也支持很多第三方模块的容器化部署,以满足 OpenStack对第三方组件的依

赖。Kolla-ansible项目使用 Ansible工具实现,其架构如下图所示:

图 4.15-4 Kolla-ansible架构

4.15.2 集群升级

ICOS 版本在不断地进行迭代开发,每个新版本都会新增不少新功能,同时也会

对一些原有功能进行优化和完善。因此,就会涉及到 ICOS集群的升级操作。正常

情况下,ICOS 集群的升级非常便捷,拿到新的镜像私库后,只需要修改 ICOS集群

的/etc/kolla/globals.yml 文件(同时可能需要做一些必要的备份工作),配置上

新的镜像 Tag,然后执行 Kolla-ansilbe的 upgrade 命令即可,其流程图如下所

示:

新的镜像/镜像仓库

配置文件备份

数据库备份

修改/etc/kolla/globals.yml

+

kolla-ansilbe

ICOS环境

upgrade

kolla-ansible脚本

site.yml playbook

角色role

nova cinder glance neutron...

nova操作逻辑 neutron操作逻辑glance操作逻辑cinder操作逻辑

命令行层

playbook层

角色层

Page 157: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 4ICOS 功能特色和实现原理

150

图 4.15.2-1 集群升级流程

4.15.3 集群快速弹性扩容

ICOS 的物理节点在集群内的角色是由角色定义文件来进行决定的,利用

Kolla-ansible 部署工具可以实现对物理节点角色的管理,通过增加相应角色的物

理节点名称来实现集群的快速弹性扩容。

ICOS 云平台下的角色具体可以分为部署节点、控制节点、计算节点、存储节

点以及监控节点,部署节点上拥有云平台部署所需要的全部 docker 镜像,控制节点

上拥有 API、Scheduler、Conduct 等控制服务镜像,计算节点上拥有 nova-

compute、neutron-openvswitch、nova-libvirt 等计算服务镜像,存储节点上拥有

cinder-volume、Iscsid、Multipathd 等存储服务镜像,监控节点上拥有 Plutto、

Telegraf 等监控服务镜像。

所以当集群需要扩容时,我们只需要明确扩容用的节点要承载何种节点角色,

确定角色后,在部署节点上分发与该节点角色对应的 Docker镜像即可,这样就完

成了集群的快速扩容。ICOS扩容使用 Kolla-ansible可以实现一键自动化扩容,所

有的扩容节点就像是从已有的云平台节点中复制出来的一样。

Page 158: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

151

5 ICOS 开放兼容 安全可靠

5.1 开放 API

InCloud OpenStack 对外提供基于标准化 OpenStack 的开放的 API 接口,每个

OpenStack 组件可能包含若干子服务,其中必定有一个 API 服务负责接收客户请

求。

以 Nova 为例,nova-api 作为 Nova 组件对外的唯一窗口,向客户暴露 Nova

能够提供的功能。 当客户需要执行虚机相关的操作,能且只能向 nova-api 发送

REST 请求。这里的客户包括终端用户、命令行和 OpenStack 其他组件。

基于开放的 API,用户可以并可将云计算资源整合入自身运维管理系统或者其

他的第三方 PaaS 平台,满足上层应用的动态调度和资源整合,大幅提高云计算资

源的管理效率。具体来说,开放 API 的对客户的收益有以下几点: 1. 对外提供统

一接口,隐藏实现细节; 2. API 提供 REST 标准调用服务,便于与第三方系统集

成; 3. 可以通过运行多个 API 服务实例轻松实现 API 的高可用,比如运行多个

nova-api 进程

5.2 兼容主流基础设施

支持在业界主流服务器上部署 InCloud OpenStack,支持浪潮服务器各种主流服务

器型号。

5.2.1 服务器兼容

序号 厂商 服务器型号 服务器类型

1 inspur NF5170M4/SA5112M4 企业级

2 inspur NF5180M4 企业级

3 inspur NF5180M5 企业级

4 inspur NF5240M4 企业级

Page 159: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

152

5 inspur NF5240M5 企业级

6 inspur NF5270M4 企业级

7 inspur NF5280M4 企业级

8 inspur NF5280M5 企业级

9 inspur NF8260M5 关键业务

10 inspur NF8460M4 关键业务

11 inspur NF8460M5 关键业务

12 inspur NF8480M4 关键业务

inspur TS860M4 高端服务器

13 inspur TS860M5 高端服务器

14 inspur NF5568M4 计算优化

15 inspur NF5288M4 计算优化

16 inspur NF5288M5 计算优化

17 inspur SA4624M5 计算优化

18 inspur GX4/SA6224M5 计算优化

19 inspur SR-AI Rack/SN3410M5 计算优化

20 inspur i24 计算优化

21 inspur i28 计算优化

22 inspur i48 计算优化

23 inspur i4008/NX5480M4 计算优化

24 inspur i8000 计算优化

Page 160: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

153

25 inspur i9000 融合架构整机柜

26 inspur NF5166M4 存储优化

27 inspur NF5177M4 存储优化

28 inspur NF5460M4 存储优化

29 inspur NF5466M5 存储优化

30 inspur NF5486M5 存储优化

31 inspur SA5212M4 存储优化

32 inspur SA5224M4 存储优化

33 inspur SN3116M4S 冷存储

34 inspur SN5261M4 分布式存储

35 inspur SN6115M5 分布式存储

36 inspur SA5248M4 刀片服务器

37 inspur NX5460M4 i9000 节点

38 inspur NX5460M5 i9000、SR节点

39 inspur NX8280M4 i9000 节点

40 inspur NX8880M4 i9000 节点

41 inspur NX8480M4 i9000、SR节点

42 inspur NS5162M5 i24 刀片计算节点

43 inspur NS3124M4 i28 刀片计算节点

44 inspur NS5482M5 i48 刀片存储节点

45 inspur NS5484M5 i48 刀片节点

Page 161: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

154

46 inspur NS5488M5 i48 刀片计算节点

47 inspur SN5150M4 SR的计算节点

48 inspur SN5160M4 SR的分布式存储节点

49 inspur SN5161M5 SR的分布式存储节点

50 inspur SN5162M5 SR的计算节点

51 inspur SN5171M5 SR的计算节点

52 inspur NP3020M4 SMB

53 inspur NP5540M5 SMB

54 inspur NP5570M4 SMB

55 华为 2288H V5 机架式

56 联想 x3650 M5 机架式

5.2.2 存储兼容

InCloud OpenStack 后端默认搭配浪潮 SDS 使用,但也兼容支持主流 FC、ISCSI

等集中式存储。

序号 厂商 存储型号 存储类型

1 inspur AS2200 G2 FC、iSCSI

2 inspur AS2600 G2 FC、iSCSI

3 inspur AS5300 G2 FC、iSCSI

4 inspur AS5500 G2 FC、iSCSI

5 inspur AS5600 G2 FC、iSCSI

6 inspur AS5800 G2 FC、iSCSI

Page 162: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

155

7 inspur AS5300

8 inspur AS5600 FC、iSCSI

9 inspur InCloud Storage 分布式存储

10 inspur AS13000 NFS

11 inspur AS18000 FC、iSCSI

5.2.3 网络兼容

InCloud OpenStack 兼容支持各种虚拟网络业务模型,包括了 Local、Flat、

VLAN、VXLAN、GRE,还支持对接业界主流 SDN 控制器,对外提供 SDN 服务。

序号 类型 厂商 设备型号

1 SDN控制器 浪潮思科 DCNC

2 SDN控制器 上海贝尔 Nuage(软件)

3 SDN控制器 中兴通信

5.2.4 操作系统(GuestOS)

InCloud OpenStack 支持各种 Windows/Linux 主流操作系统类型。 包括

操作系

统类型 操作系统子类 操作系统型号

Windows Server

Windows Server 2016 Standard 64位

Windows Server 2016 Datacenter 64位

Windows Server 2012 R2 Standard 64 位

Windows Server 2012 R2 Datacenter 64 位

Windows Server 2012 Standard 64位

Page 163: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

156

Windows Server 2012 Datacenter 64位

Windows Server 2012 R2 Essential 64 位

Windows Server 2008 R2 WEB 64位

Windows Server 2008 R2 Standard 64 位

Windows Server 2008 R2 Enterprise 64 位

Windows Server 2008 R2 Datacenter 64 位

Windows Server 2008 Standard 64位

Windows Server 2008 Standard 32位

Windows Server 2008 Enterprise 64位

Windows Server 2008 Enterprise 32位

Windows Server 2008 Datacenter 64位

Windows Server 2008 Datacenter 32位

Windows Server 2008 Datacenter 32位

Windows Server 2008 Wed Server 64位

Windows Server 2008 Wed Server 32位

Windows Server 2003 64位

Windows Server 2003 32位

Desktop

Windows 10 64 位

Windows 10 32 位

Windows 8 64位

Windows 8 32位

Page 164: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

157

Windows 7 64位

Windows 7 32位

Windows Vista 64位

Windows Vista 32 位

Windows XP 64 位

Windows XP 32 位

Other Windows 64 位

Other Windows 32 位

Linux

CirrOS

CirrOS 64位

CirrOS 32位

CentOS

CentOS7 64位

CentOS7 32位

CentOS6 64位

CentOS6 32位

CentOS5 64 位

CentOS5 32 位

CentOS4 64 位

CentOS4 32位

Red Hat

Enterprise7 64位

Enterprise6 64位

Enterprise6 32位

Page 165: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

158

Enterprise5 64位

Enterprise5 32位

Enterprise4 64位

Enterprise4 32位

Ubuntu

Ubuntu Server 14.04 64 位

Ubuntu Server 14.04 32 位

Ubuntu Server 13.10 64 位

Ubuntu Server 13.10 32 位

Ubuntu Server 13.04 64 位

Ubuntu Server 13.04 32 位

Ubuntu Server 12.10 64 位

Ubuntu Server 12.10 32 位

Ubuntu Server 12.04 64 位

Ubuntu Server 12.04 32 位

Ubuntu Desktop 16.04 64 位

Ubuntu Desktop 14.04 64 位

Ubuntu Desktop 14.04 32 位

Ubuntu Desktop 13.10 64 位

Ubuntu Desktop 13.10 32 位

Ubuntu Desktop 13.04 64 位

Ubuntu Desktop 13.04 32 位

Page 166: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

159

Ubuntu Desktop 12.10 64 位

Ubuntu Desktop 12.10 32 位

Ubuntu Desktop 12.04 64 位

Ubuntu Desktop 12.04 32 位

Ubuntu 11 64 位

Ubuntu 11 32 位

Ubuntu 10 64 位

Ubuntu 10 32 位

Ubuntu 9 64 位

Ubuntu 9 32 位

Ubuntu 8 64 位

Ubuntu 8 32 位

SUSE

Server 12 64 位

Server 11 64 位

Server 11 32 位

Server 10 64 位

Server 10 32 位

Desktop 11 64位

Desktop 11 32位

Desktop 10 64位

Desktop 10 32位

Page 167: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

160

Debian

Debian8 64位

Debian8 32位

Debian7.1 64 位

Debian7.1 32 位

DebianSquee7.0 64 位

DebianSquee7.0 32 位

DebianSquee6.0 64 位

DebianSquee6.0 32 位

DebianGNU/Linux6.0 64位

DebianGNU/Linux6.0 32位

DebianGNU/Linux5.0 64位

DebianGNU/Linux5.0 32位

DebianGNU/Linux4.0 64位

DebianGNU/Linux4.0 32位

Fedora

Fedora16 64 位

Fedora16 32 位

Fedora14 64 位

Fedora14 32 位

Fedora12 64 位

Fedora12 32 位

Fedora10 64 位

Page 168: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

161

Fedora10 32 位

Fedora9 32位

Fedora atomic

Oracle

Oracle Linux6 64 位

Oracle Linux6 32 位

Oracle Linux5 64 位

Oracle Linux5 32 位

国产

Neoshine

Neoshine Linux Server5.4 64 位

Neoshine Linux Server3.0 64位

中科红旗

Asianux Server4 64位

Asianux Server4 32位

Asianux Server3 64位

Asianux Server3 32位

麒麟

NeoKylin Linux

Kylin Linux

5.3 多维度安全体系设计

ICOS 支持 Web 安全、虚拟化安全、数据安全、访问控制、安全审计和多租户

资源安全隔离等方面的安全控制功能。

ICOS 通过了公安部计算机信息系统安全产品质量监督检验中心检测、符合

《信息安全技术云操作系统安全检验要求》,取得计算机信息系统安全专用产品销

售许可证,是国家认可的安全云操作系统,可帮助用户构建安全可控的云数据中

心。

Page 169: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

162

ICOS 集成了第三方安全模块,支持底层无代理安全防护,实现从操作系统到

应用层面的三层防御,最大程度保障数据中心的安全性。

ICOS 还集成了浪潮的 SSA、SSC 等安全产品,可以实现对数据中心资源的统

一安全管控。

5.3.1 云平台安全

1. 账户管理安全:采用 RBAC 权限管理,以及三权分立,使账号管理更加安

全。增加独立的运维管理账号,在不影响使用的前提下,避免过多的权限分配。

2. 云物理机安全:及时修复操作系统及中间件漏洞,采用自研的 SSR-h 对主机

进行加固,保证云物理机不会被恶意攻击。

3. 数据安全:具备独立的备份和容灾模块,在平台遭遇不可抗力时,能够恢复

平台和业务数据。

4. 租户资源隔离:租户间的计算、网络和存储等资源不可见,避免恶意攻击和

数据窃取等。

5.3.2 租户安全服务

租户通过配置安全服务,达到保护租户资源的效果,可以分配的安全服务为:

1. 安全组:控制单个云主机是否对外可见。

2. 防火墙:通过控制路由器,达到网络传输的安全保护。

3. 密钥:通过创建云主机的时候注入密钥,使用密钥登陆云主机,避免云主机

密码被破解或遗忘。

4. 网络 QoS:可以对某个云主机进行网络流量的限制,避免其受到攻击后,大

量占用网络带宽,导致网络瘫痪。

Page 170: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

163

5.3.3 云主机安全

ICOS 支持创建云主机时通过“密码重置”、“密钥对”对云主机的登陆进行安

全设置、通过“VNC 密码设置”可实现在使用 VNC 控制台登陆时必须输入密码方

可进入系统,确保安全可靠

1)密码重置

密码重置功能实现了重置云主机系统 root/Administator 用户密码,用户在创建

云主机时可以选择设置系统 root/Administator 用户登录密码。

ICOS 实现了云主机的重置密码功能,用户在创建云主机时选择重置密码,并输

入要设置的密码信息,ICOS 底层会将密码信息写入到云主机系统中,这样,在云

主机创建成功后,就可以设置好的密码登录云主机;目前,对于 windows 云主机,

镜像中必须安装有 cloud-init 才支持重置密码,云硬盘创建的云主机,系统中也需

要事先安装好 cloud-init。

2)密钥对

密钥对功能是指用户在创建云主机时可以选择预先创建好的密钥对,如此在云

主机启动后就可以用密钥连接云主机。

ICOS 实现了云主机的密钥对功能,用户首先要预先创建好密钥对,在创建云主

机时选择创建好的密钥对,ICOS 底层会将密钥的公钥写入到系统中,这样,在云

主机创建成功后,就可以用密钥来连接云主机;目前,只有安装了 cloud-init 的镜

像支持密钥对功能。

3)VNC 密码控制

VNC 密码控制功能是指用户在创建云主机的时候可以预先设置 vnc 控制台连接

密码,这样在后续使用 VNC 客户端连接云主机时,首先要输入用户预先设置的密

码才能进入到云主机控制台。

ICOS 基于 Libvirt Api,通过修改创建云主机时的 XML 文件,实现了 VNC 密

码控制的功能。用户在创建云主机时,可以再附加配置中的 VNC 密码配置中输入

要设置的 VNC 连接密码,底层会将改密码信息写入到云主机配置文件中,在云主

Page 171: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

164

机启动后,打开 NoVNC 控制台,首先就要先输入预先设置的密码。如此相当于为

在云主机连接增加了一层防护,保障云主机的安全使用。

5.4 可靠性设计

5.4.1 控制层可靠性

ICOS 控制节点的高可用是通过 Keepalived + Haproxy 的组合来实现的。

Keepalived 可以实现主备之间故障转移,用来防止单点故障(单点故障是指一

旦某一点出现故障就会导致整个系统的不可用)发生。

Keepalived 以 VRRP(Virtual Router Redundancy Protocol,即虚拟路由冗

余协议)协议为实现基础,在集群中维护一个 VIP(虚拟 IP),VIP 通过选举某一

时刻只在集群的某一个节点上存在。当一台机器发生故障时候,VIP 自动漂移到另

外一台机器上,始终保持 VIP 可访问。

Haproxy 主要提供负载均衡和基于 TCP 和 HTTP 应用的代理。基本工作方式

是接收外部的请求,然后根据不同的策略将请求转发至后端的多个服务器上进行处

理,之后将处理结果返回,从而实现了负载均衡和代理功能。

ICOS 控制节点高可用的实现过程:Keepalived 维护一个 VIP,通过检测

Haproxy 以及 Keepalived 存在与否,决定是否飘移 VIP,通过 VRRP 协议进行选

举新的 VIP,进入 VIP 的请求到达 Haproxy,然后转发到后端服务,如下图所示。

Page 172: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

165

图 5.4.1-1 控制节点高可用

服务高可用

在通过 Haproxy+keepalived 实现 ICOS 控制节点 HA 的方案中,高可用的服务可

以分为以下几种:

1) API 服务:包括 *-api, neutron-server,glance-registry, nova-novncproxy,

Keystone,Httpd 等,这些服务均为无状态服务,由 HAProxy 提供负载均衡,将

请求按照一定的算法转发。

2) 内部组件:包括 *-scheduler,nova-conductor,nova-cert 等。它们都是无状态

的,因此可以在多个节点上部署,它们会使用 HA 的 MQ 和 DB。

3) RabbitMQ:跨三个节点部署 RabbitMQ 集群和镜像消息队列。可以使用

HAProxy 提供负载均衡,或者将 RabbitMQ host list 配置给 OpenStack 组件(使

用 rabbit_hosts 和 rabbit_ha_queues 配置项)。

4) MariaDB:跨三个节点部署 Gelera MariaDB 多主复制集群。由 HAProxy 提

供负载均衡。

各个服务的高可用逻辑图如下所示:

Page 173: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

166

图 5.4.1.1-1 服务高可用

当前控制层可靠性场景包括但不局限于如下:

场景 1 单节点数据库故障:登录一个控制节点,关闭 Mariadb 容器,服务不受

影响,重启 Mariadb 容器后集群恢复正常。

场景 2 全部节点数据库故障:登录所有节点,关闭 Mariadb 容器,等待 5 分钟

后启动 Mariadb 容器,服务恢复。

场景 3 单节点消息队列故障:关闭一个控制节点的 Rabbitmq 容器,服务可

用,重启 Rabbitmq 容器后,集群恢复正常。

场景 4 全部节点消息队列故障:全部关闭控制节点 Rabbitmq 容器 5 分钟后启

动容器,服务恢复正常。

Page 174: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

167

场景 5 单个控制节点服务器故障:强制关闭一个控制节点,服务正常访问,重

启节点之后,服务恢复正常。

场景 6 全部节点服务器故障:强制关闭所有控制节点、Mariadb 节点和

Rabbitmq 节点,然后顺序启动服务器。Mariadb 概率启动失败,修复 Mariadb 之后

服务可以正常访问。

数据库高可用

ICOS 使用 Mariadb 作为后端数据存储的数据库,使用 Galera 实现 Mariadb

数据库的复制集群。

Galera Cluster 是一个高可用集群解决方案,它不是一个分布式数据库,没有

进行分库、分表的操作。

其主要特点为:

同步复制: 集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,

数据不会丢失。

真正的 multi-master(如下图所示),即所有节点可以同时读写数据库,不用

做读写分离。

自动的节点成员控制,失效节点自动被清除。

新节点加入数据自动复制。

真正的并行复制,行级。

用户可以直接连接集群,使用感受上与 MySQL 完全一致。

Page 175: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

168

图 5.4.1.2-1 数据库可用

由于 Galera 采用的是多主同步复制,同步复制时,主库的单个更新事务需要

在所有从库上(理论上的从库,从其他节点看也是主库)同步更新。换句话说,当

主库提交事务时,集群中所有节点的数据保持一致。而保持数据同步复制的核心是

由 Galera 复制机制完成

Galera 集群的内部架构包含四个组件,如下图所示:

数据库管理系统(DBMS):在单个节点上运行的数据库服务器。Galera

群集可以使用 MySQL、Mariadb 或 Percona xtradb。

wsrep api:Galera 与数据库服务器的接口,为上层提供了丰富的状态信息

和回调函数。wsrep api 由 wsrep hooks、dlopen 函数两部分组成。wsrep

hooks 钩子程序用于与数据库服务器引擎集成。dlopen 函数使 Galera 插件

中的复制程序对 wsrep hooks 可用。

Galera 复制插件:实现写集复制功能的核心模块。

组通信插件:Galera 集群的组通信系统(Group Communication System,

GCS),如 GComm。

Page 176: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

169

图 5.4.1.2-2 Galera 集群架构

Galera 复制是一种基于验证的复制,基于验证的复制使用组通信和事务排序技

术实现同步复制。它通过广播并发事务之间建立的全局总序来协调事务提交。简单

说就是事务必须以相同的顺序应用于所有实例。事务在本节点乐观执行,然后在提

交时运行一个验证过程以保证全局数据一致性。所谓乐观执行是指,事务在一个节

点提交时,被认为与其它节点上的事务没有冲突,首先在本地执行,然后再发送到

所有节点做冲突检测,无冲突时在所有节点提交,否则在所有节点回滚。Galera 复

制原理如下图所示:

图 5.4.1.2-3 Galera 复制

当客户端发出 commit 命令时,在实际提交之前,对数据库所做的更改都将被

收集到一个写集(写集(Write-sets):将多个并发数据库写操作更新的数据,绑

Page 177: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

170

定到单个写集消息中,提高节点并行性)中,写集中包含事务信息和所更改行的主

键。然后,数据库将此写集发送到所有其它节点。节点用写集中的主键与当前节点

中未完成事务的所有写集(不仅包括当前节点其它事务产生的写集,还包括其它节

点传送过来的写集)的主键相比较,确定节点是否可以提交事务。同时满足以下三

个条件则验证失败(存在冲突):

1. 两个事务来源于不同节点。

2. 两个事务包含相同的主键。

3. 老事务对新事务不可见,即老事务未提交完成。新老事务的划定依赖于全

局事务总序,即 GTID。

验证失败后,节点将删除写集,集群将回滚原始事务。对于所有的节点都是如

此,每个节点单独进行验证。因为所有节点都以相同的顺序接收事务,它们对事务

的结果都会做出相同的决定,要么全成功,要么都失败。成功后自然就提交了,所

有的节点又会重新达到数据一致的状态。节点之间不交换“是否冲突”的信息,各

个节点独立异步处理事务。由此可见,Galera 本身的数据也不是严格同步的,很明

显在每个节点上的验证是异步的,这也就是“虚拟同步”。

最后,启动事务的节点可以通知客户端应用程序是否提交了事务。

消息队列高可用

消息中间件通过使用 Rabbitmq的集群模式和镜像队列的来实现高可用。

镜像队列是 RabbitMQ 高可用的一种方案,相对于普通的集群方案来讲,

Queue中的消息每个节点都会存在一份 拷贝, 这个在单个节点失效的情况下,整

个集群仍旧可以提供服务。但是由于数据需要在多个节点复制,在增加可用性的同

时,系统的吞吐量会有所下降。所以在对可靠性要求较高的场合中适用。

选举机制:Mirror Queue 内部实现了一套选举算法,有一个 Master 和多个

Slave,Queue 中的消息以 Master 为主。镜像队列有主从之分,一个主节点

(Master),0个或多个从节点(Slave)。当 Master 宕掉后,会在 Slave 中选举新的

Master,其选举算法为最早启动的节点。若 Master节点失效,则 Mirror Queue

Page 178: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

171

会自动选举出一个节点(Slave中消息队列最长者)作为 Master,作为消息消费的

基准参考;在这种情况下可能存在 ACK消息未同步到所有节点的情况(默认异步),

若 Slave 节点失效,Mirror Queue 集群中其他节点的状态无需改变。所以,看起

来可以使用两节点的镜像队列集群。

使用:对于 Publish,可以选择任意一个节点进行连接,Rabbitmq 内部若该节

点不是 Master,则转发给 Master,Master向其他 Slave节点发送该消息,后进行

消息本地化处理,并组播复制消息到其他节点存储;对于 Consumer,可以选择任意

一个节点进行连接,消费的请求会转发给 Master,为保证消息的可靠性,Consumer

需要进行 ACK确认,Master收到 ACK后,才会删除消息,ACK消息会同步(默认异

步)到其他各个节点,进行 Slave节点删除消息。

考虑到性能问题,复制可以在可控范围内进行,包括集群内全节点复制的镜像

队列和集群内局部节点复制的镜像队列两种模式。

5.4.2 计算层可靠性

功能描述

计算层可靠性是指在本地系统某个节点故障情况下,运行其上的云主机能够

HA 到其他状态健康的节点上,保证云主机能够继续接受本系统的管理,用户业务

稳定持续的运行。同时支持业务云主机、物理主机关机进程的高可用;支持简单易

用的界面

技术原理

浪潮 ICOS 的计算层可靠性在实现技术中提供了方便快捷的高可用管理功能,

从业务云主机层高可用、主机关键进程高可用、主机高可用三个方面入手,以提供

真正的高可用保障。

高可用管理:ICOS 在提供计算层可靠性时,在用户界面提供方便快捷的高可

用管理操作。ICOS 高可用管理功能提供对高可用创建、删除、编辑、查询功能,

支持配置高可用策略为预留、自动、预留优先等多种,根据不同场景选择配置使

Page 179: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

172

用,并可一键打开计算节点的高可用、关闭计算节点高可用设置,同时已发生的高

可用事件在界面展示、查询,ICOS 提供了完善易用的高可用管理功能。

业务云主机层高可用:确保业务高可用的关键在于能敏锐感知 Hypervisor 虚

拟化层面异常事件并及时采取合适的保护措施。ICOS 的集群 HA 管理服务方案在

计算主机配置云主机监控服务,轮询底层虚拟化接口,关注云主机异常事件,例如

“异常退出”。当异常事件发生时,云主机监控服务封装并发送“云主机异常退出

通知”到集群 HA 管理服务,由异常事件处理引擎甄别事件,并发送“云主机重

启”请求到 ICOS 计算服务接口,完成对异常云主机业务的恢复。

主机关键进程高可用:如果要确保业务云主机的健康运行,仅仅从

Hypervisor 层关注云主机是否宕机显然是不够的,因为在复杂的云环境下,业务的

健康不仅取决于其挂载的后端分布式存储是否可用,业务网络是否畅通,还在于云

环境中能否被良好地治理等诸多因素。在计算集群中,负责维护这些因素良好状态

的进程就是我们所关注的“关键进程”。ICOS 的集群 HA 管理服务方案提供了一

套高度可配置化,自由定制化架构以实现对计算主机进程的监控:监控进程列表可

配置,监控脚本以及异常处理 Action 可以自定义,支持基于 Action 列表的工作流

定制化。系统默认提供“尝试重新启动失败进程”的处理方式,当检测到目标进程

异常后,优先尝试拉起服务以解决问题,如果多次尝试无果,即自动发送“进程不

可用”事件到集群 HA 管理服务,由其通知云平台 Disable 本节点计算服务,使该

计算主机不在为新建云主机提供计算资源,但并不妨碍既有业务运行,这时配合外

部的集群监控系统告知运维人员,使其进行系统修复。

主机高可用:主机高可用的实现依赖高可用主机故障处理模块和基于 Consul

的故障检测模块。运行于各计算节点 Consul 故障检测模块构成的故障检测层,能

够同时监控到控制平面、存储平面和业务平面的健康状况。高可用主机故障处理模

块能够接收到这个故障检测层感知上报的三个平面的健康状况,任何一个平面发生

故障,高可用主机故障处理模块都能够根据故障类别做相应的操作,例如疏散、上

报警告、或者不做操作等,管理员可以针对复杂的场景定制自己的 HA 决策矩阵,

可灵活设置高可用故障处理机制。

Page 180: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

173

图 5.4.2.2-1 主机高可用

高可用功能总开关:平台管理员执行有计划的升级维护任务时,可通过总开关

暂时关闭/开启高可用功能,避免云主机的错乱疏散。

并发故障的限流熔断机制:当云平台出现大规模主机故障时,通过云主机/物

理主机故障恢复的并发限制与恢复失败的熔断机制,减少大规模故障对云平台的影

响,提高云平台的稳定性。

5.4.3 存储层可靠性

为了保证云平台的稳定性,ICOS 存储层从两个层面保障可靠性:

存储服务的可靠性。

存储服务的可靠性是通过两方面保证的,首先通过负载均衡对客户端下发的请

求根据当前环境的压力和定制的策略合理地转发到存储服务的消费端, 存储服务

的消费端是冗余部署的,并且支持灵活的扩展,能够有效地保证请求的顺利接收。

其次通过分布式集群方式部署存储服务(cinder-volume),部分存储服务(cinder-

volume)不可用时,也不影响业务流程的正常运行。

底层存储的可靠性。

底层存储的可靠性主要表现在:浪潮 SDS 的数据保护技术,是以分布式、节点

级/机柜级冗余为设计核心的。数据进入存储系统,首先被切分为一定大小(默认

Page 181: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

174

为 4MB,可根据纠删策略调整)的数据切片,进而散布到不同的节点上。系统支持

副本、纠删码两种数据冗余保护方式,可以支持用户在应用性能、数据可靠性保护

方面灵活决策和部署。在多个数据冗余副本设计的基础上,采用主-从节点的驱动机

制,实现了基于 Write-All-Read-One 的强一致性数据访问,有效保证数据一致

性,使用户无需关心宕机、掉电等意外故障带来数据丢失风险的问题,可满足企业

级用户的实时性、事务性应用需求。如下图所示。

客户端

从控节点

主控节点

从控节点 从控节点

数据请求

N2

……

写入N1

N3 Nn

图 5.4.3-1 存储可靠性机制

在数据重建方面,浪潮 SDS采用全局空间的数据分布机制,将数据在资源池内

打散,通过快速的数据重构技术,在单一硬盘故障时,全资源池内自动并行重建,

无需单独的热备盘支持。数据重构时,存储池内所有磁盘都可以参与到重构中,数

据底层存储结构为对象存储使得不同的数据块可以位于不同的数据组上,两者结合

后一块盘上的数据会跟所有的磁盘都存在数据冗余关系。基于快速重构,浪潮 SDS

实现高于 2TB/h的重建速度;同时按照 MB粒度数据块的写入方式,系统规模越

大、重建速度越快。

如下图所示,数据为三副本配置,以磁盘 A 的数据分布为例,磁盘 A、B、

C、D、E 组成一个存储池,A 磁盘上的数据副本分布到了 B、C、D、E,当磁盘 A

故障时,磁盘 B、C、D、E 都会参与数据的重构,这样每块盘占用的带宽以及需要

重构的数据就会被分布到所有剩余磁盘上,能够极大的提高系统重构速度。

Page 182: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

175

图 5.4.3-2 数据三副本

全速重构的情况下,恢复速率大于 2TB/h,单盘数据重构时间小于 3 小时。系

统满负荷情况下,为了最大化减少对外部共享网络业务的影响,AS13000 也可以对

重构速度进行调整,在业务闲时全速恢复。

5.4.4 网络层可靠性

路由器 HA

路由器是整个网络的核心。一个网络内的所有主机往往都设置一条缺省路由,

这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器,从而

实现了主机与外部网络的通信。在通常只使用单路由器来承担缺省路由的情况下,

当该路由器坏掉后,本网段内所有以它为缺省路由下一跳的主机将断掉与外部的通

信。可见,在使用单路由器的情况下,如果路由器发生致命性的故障,将导致本地

网络的瘫痪,如果是骨干路由器,影响的范围将更大,所造成的损失也是难以估计

的。因此,对路由器采用热备份是提高网络可靠性的必然选择。

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种可

以解决这种问题的容错协议,其协议文本在这里。 它保证当主机的下一跳路由器出

现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信

的连续性和可靠性。一组实现了该协议的路由器向局域网内的主句提供具有高可用

性(HA)的虚拟路由器

Page 183: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

176

图 5.4.4.1-1 HA router 结构

要使用 HA Router,首先必须有多个 Neutron L3 Agent 在不同的 Network

NODE 上运行。一旦创建了一个 HA Router,Neutron 会通过多个 L3 Agent 创

建相应的 Namespace 和端口,这样就有了这个 HA Router 的多个 Instance。同

时,L3 Agent 还会创建 Keepalived 进程,每个 Keepalived 进程都有 Router

的全部信息。这样,每个 Network NODE 上都有 HA Router 的一个 Instance

和管理这个 Router Instance 的 Keepalived 进程。

当一切就绪之后,这些 Router Instance 会进行一次选举,胜出的作为

Master Instance,剩下的作为 Slave Instance。由于所有的 router Instance 的优

先级都是一样的,选举的结果是随机的。也就是说,如果创建多个 HA Router,

这些 Router 的 Master Instance 可能分布在多个 Network NODE 上。

选举结束后,Master Router Instance 负责提供 L3 网络服务,并同时向其他

的 Slave Router Instance 发广播报告自身的状况。一旦由于各种原因,广播中

断,Slave Router Instance 会重新选举出新的 Master Router Instance,继续提供

L3 网络服务,并同时发送广播报告自身的状况

Page 184: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

177

DHCP HA

DHCP 为动态主机配置协议(Dynamic Host Configuration Protocol)的缩

写。能够自动为子网分配适当的 IP地址以及相关网络参数,从而减少网络管理需

求。同时,DHCP能够保证不会出现地址冲突,能够重新分配闲置资源。使用 DHCP

时必须在网络上有一台 DHCP服务器。当 DHCP 客户端程序发出一个信息,要求一个

动态的 IP 地址时,DHCP 服务器会根据目前已经配置的地址,提供一个可供使用的

IP地址、子网掩码等参数给客户端。如果本地网络内只有一台 DHCP服务器,网络

的地址分配就会面临单点故障的风险,此时就需要 DHCP服务器的高可用机制。

DHCP 协议本身支持多个 DHCP Server拥有相同的 Pool在一个 2层网络中同时

共存

图 5.4.4.2-1 DHCP HA

当 Server 连入到 10.0.0.0/24子网时,它会广播出 DHCP Discover。两个

DHCP Servers Dnsmasq1 和 Dnsmasq2(或者其他的 DHCP Server实现)会收到广播

包,之后回复一个 Offer IP是 10.0.0.2。假设第一台 Dnsmasq1的 Response 被

Server先收到,它就会广播 Request 10.0.0.2,并且指定 Dnsmasq1的 ip

10.0.0.253 。两台 DHCP Server都会收到广播包,但是只有 Dnsmasq1 会回复

ACK。由于所有的 DHCP 通信都是通过广播,那么 Dnsmasq2也会收到 ACK,可以标记

Page 185: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

178

10.0.0.2被 AA:BB:CC:11:22:33使用了,就不会将此 IP分配给其他 Server

了。总的来说,因为 Clients和 Servers所有的通信都是通过广播,通过部署多个

DHCP Server 就能达到 HA的效果了。

按照上节所述,DHCP HA的实现就是在网络内建立多个 Dhcp Server 实现。

ICOS通过 DHCP Agent Management及 agent_scheduler 扩展,在创建网络的时候通

过 DHCP Agent在多个不同的主机上创建 dhcp server来实现 DHCP HA。ICOS部署

规划时,需要规划部署多个 DHCP Agent并可按照高可用原则将 DHCP Agent分散到

不同的可用域主机上,网络内的 DHCP Server 在创建时,会被 agent_scheduler 动

态的调度到所有 DHCP Agent中的几个上,从而在不同主机上创建了多个从属于此

网络的 DHCP Server。

负载均衡 HA

ICOS 中的负载均衡基于社区 Octavia项目进行扩展和优化,ICOS 软件定义负

责均衡服务通过 VM中内置 HAProxy来完成负载均衡功能,Keepalived 来实现负载

均衡应用的高可用。Keepalived是一个基于 VRRP协议来实现的服务高可用方案,

可以利用其来避免 IP 单点故障。HAProxy为基于 TCP、HTTP及 HTTPS 的应用提供快

速及可扩展的负载均衡服务,而 Keepalived 实现了 HAProxy的高可用,当 HAProxy

发生故障时,Keepalived 可将负载均衡服务快速的切换到 Backup主机,保证了负

载均衡服务的高可用。

Page 186: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 5ICOS 开放兼容 安全可靠

179

图 5.4.4.3-1 负载均衡 HA

如上图,ICOS 的实际实现创建了两个 VM,每个 VM 在 VIP 网络(负载均

衡对外提供服务网络)分配到一个 IP,此 IP 用来访问 VM 实体。每个 VM 中运行

着相同的 HAProxy+keepalived 进程,keepalived 通过 VM IP 发送 VRRP 报

文。VIP 网络中单独分配一个 vip 绑定到 keepalived,由 keepalived 负责在

master VM 或其上的 HAProxy 出现故障时将 vip 快速漂移到 backup VM,此时

backup VM 上的 HAProxy 通过 vip 继续对外提供服务,这样随着 vip 的漂移,

HAProxy 在 master VM 出现故障后持续对外提供服务,从而实现了负载均衡服务

的高可用。

Page 187: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 6ICOS 规格参数

180

6 ICOS 规格参数

规格参数参考如下表所示:

编号 规格指标 指标数据 备注

1 单 OpenStack 最大管理主机数 500 实测

2 单 OpenStack 最大管理云主机数 20000

3 单 OpenStack 最大管理用户数 2000

4 单 OpenStack 支持的最大并发访问数 2000

5 单 OpenStack 支持的最大并发创建云

主机个数

800 200 台集群规模下,实测

5 每云主机最大支持 vCPU 128 From Redhat

6 每云主机最大支持内存 4TB From Redhat

7 每云主机最大支持的系统盘 64TB From Redhat

8 每云主机最大支持的虚拟网卡 24 实测

9 单盘 IOPS(GB 级)吞吐量 10W级

10 每云主机最大支持的磁盘数量 24 实测

Page 188: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 7ICOS 适用场景

181

7 ICOS 适用场景

ICOS,是以快速构建和稳定运维行业云为发展目标和战略导向而发展起来的应

用平台,能出色的承担大型企业的云数据中心管理、业务上云和应用创新的需求,

同时能满足企业研发测试云的实施。

7.1 面向大规模云数据中心的智能管理

云计算的日渐普及、大数据的兴起、5G 时代的到来以及人工智能在各个领域

的应用,使得数据和应用双轮驱动,均呈现爆发式增长。因此,支撑数据及应用的

数据中心计算量越来越大,数据中心也呈现集中化和规模化趋势。

传统的数据中心通常采用“一机一业务”的部署模式,但是随着数据中心规模不

断扩大,传统 ICT 资源构建方式的低效和高成本弊端日益突出,架构复杂且缺乏

灵活性,业务与基础设施紧耦合,应用系统受制于软硬件之间的依赖关系,复杂度

越来越高、进一步提升了管理运营成本、降低了业务上线速度。

面对上述问题,业内通用的做法是通过引入虚拟化技术把数据中心物理设备进

行资源池化,使得资源使用和部署更加灵活,进而提升业务部署效率、降低业务迁

移的难度。

虚拟化后单台主机上运行着多台云主机,多个业务系统,而大型云计算数据中

心普遍具有数千乃至上万台物理服务器、十万量级规模的云主机。这也带来了如何

对虚拟化平台乃至整个数据中心进行智能监控和统一管理的新问题。云平台的整体

管理能力以及监控的效率、准确率对维持虚拟资源池可靠运行尤为重要。

基于对数据中心计算资源的池化和统一管理,ICOS可以协助 IT 部门更加灵活

而弹性的控制数据中心的各种资源,为业务部门提供更好的支持和服务。通过提供

全面、统一、多维度的管理监控子系统,管理监控数据中心的海量异构资源,包括

服务器、存储、网络设备等硬件资源,各种操作系统、数据库、虚拟资源等软件资

源;并利用多级阈值设置和智能警报功能,可以自动而更加准确地分析各种类型的

数据,剔除短时异常数据,并且能够判断性能变化的趋势,从而能够在终端用户抱

怨和普通的监控工具报警前,报告系统性能问题,节省运维成本。ICOS 监控集群

Page 189: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 7ICOS 适用场景

182

支持上千种数据采集,系统可支持 10 万级别的监控项和告警项,可以为用户实现

精细化、可扩展的监控告警服务。

7.2 业务云化:核心业务上云

经过多年的发展,以政务云为代表的私有云在国家政策的大力支持下发展迅

速。金融、医疗等传统行业上云进程加快,私有云市场逐渐得到云服务商、系统集

成商、IDC 服务商以及各行业用户的广泛关注。传统行业正在走向全面云化,这其

中基于 OpenStack 云架构获得普遍认可,成为云化“事实标准”;与此同时,全球

各大运营商在电信网络和业务云化的战略高度驱劢,强调 NFVI及 VIM 必须独立于

多家 VNF,硬件 COTS 化,VNF与硬件及 Cloud OS 彻底解耦,NFV扩展的

OpenStack/KVM开源的趋势不可阻挡;软件定义存储、软件定义网络成熟度得到普

遍认知和广泛接受,企业开始启动分布式软件定义存储对传统存储进行革新改造及

创新合作。

但是传统行业经过多年建设,积累了各种品牌、各种类型的硬件设备和复杂的

软件设备,这些设备和软件都需要在上云的过程中得到很好的平滑迁移和继承,而

不是重起炉灶,重新建设。同时,设备和软件的异构复杂还带来迁移过程的困难。

不仅应用要进行迁移,数据和网络拓扑也要同步迁移;迁移后资源集中度提高,管

理和维护的压力也会相应增大。

因此,通过软件定义实现整个数据中心内基础设施资源的抽象、池化、部署和

管理,满足定制化、差异化的应用和业务需求,有效交付云服务,为企业业务的全

面云化提供支撑。

ICOS 通过对硬件虚拟化,软件版本的标准化,系统管理服务化和流程一体化

等手段,把企业信息平台建设成一个以服务为中心的云平台。从原有的独占方式转

变为共享方式,运行环境可以自动的部署,资源环境可以进行灵活的分配与调整,

从而帮助我们建立一个基于业务资源共享、服务集中和资源开放的一个平台。

ICOS 可以为用户提供虚拟私有云租用服务,租户可以配置自己的子网、云主

机 IP 地址和 ACL,管理自己的网络资源。需要数据中心网络支持虚拟多租户能

力,支持大量的租户部署,实现租户的隔离和安全保障。

Page 190: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 7ICOS 适用场景

183

基于 ICOS 的云服务平台,可以实现资源的动态迁移。一方面是主动迁移,另

一方面是被动迁移。如果说前者偏重于管理用户,那么后者则偏重于业务保障,当

某个设备发生故障,将会直接迁移到另外一台设备上去,而业务是没有受到任何的

干扰。

ICOS 通过区分功能调用的内外部 API 和独立运行的认证管理模块,确保数据

的安全;通过虚拟资源的多重备份和智能化调度保证企业云业务的稳定运行,同时

能够达到智能备份和恢复的效果。

7.3 云化业务:云原生应用创新

随着云计算、大数据、人工智能的发展,企业级应用的复杂性越来越高,也越

来越呈现出双模态并存的特点,企业传统业务以稳定发展为中心,力求稳健,而其

互联网业务则以创新驱动为中心,力求敏捷;而作为驱动业务的技术手段,IT 架

构也表现为双态 IT 架构并存。具体表现为应用架构由单体架构变成微服务架构,

而应用部署模式上也由单一节点走向分布式云化。

Page 191: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 8 缩略语

184

8 缩略语

中文全称 英文缩写 英文全称

应用程序编程接口 API Application Programming Interface

中央处理器 CPU Central Processing Unit

动态主机配置协议 DHCP Dynamic Host Configuration

Protocol

域名系统 DNS Domain Name System

分布式虚拟路由 DVR Distributed Virtual Router

光纤通道 FC Fiber Channel

简单文件传输协议 TFTP Trivial File Transfer Protocol

图形处理器 GPU Graphics Processing Unit

高可靠性 HA High Availability

超文本传输协议 HTTP Hypertext Transfer Protocol

基础设施即服务 IaaS Infrastructure as a Service

Page 192: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 8 缩略语

185

中文全称 英文缩写 英文全称

互联网数据中心 IDC Internet Data Center

输入输出 I/O Input and Output

每秒读写(I/O)操作次数 IOPS Input/Output Operations Per

Second

网络互连协议 IP Internet Protocol

智能平台管理接口 IPMI Intelligent Platform Management

Interface

互联网传输协议安全性 IPSec Internet Protocol Security

因特网小型计算机系统接口 iSCSI Internet Small Computer Systems

Interface

基于内核的云主机 KVM Kernel-based Virtual Machine

模型-视图-视图模型 MVVM Model-View-ViewModel

网络附属存储 NAS Network Attached Storage

网络地址转换 NAT Network Address Translation

Page 193: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 8 缩略语

186

中文全称 英文缩写 英文全称

网络文件系统 NFS Network File System

操作系统 OS Operating System

平台即服务 PaaS Platform as a Service

预启动执行环境 PXE Preboot Execute Environment

独立冗余磁盘阵列 RAID Redundant Array of Independent

Disks

服务质量 QoS Quality of Service

内存 RAM Random Access Memory

基于角色的访问控制 RBAC Role-Based Access Control

表示状态转移 REST Representational State Transfer

软件即服务 SaaS Software as a Service

存储区域网络 SAN Storage Area Network

服务器信息块 SMB Server Message Block

软件定义网络 SDN Software Defined Network

Page 194: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 8 缩略语

187

中文全称 英文缩写 英文全称

源地址转换 SNAT Source Network Address

Translation

传输控制协议 TCP Transmission Control Protocol

用户数据报协议 UDP User Datagram Protocol

用户界面 UI User Interface

通用串行总线 USB Universal Serial Bus

虚拟图形处理单元 vGPU Virtual Graphics Processing Unit

虚拟 IP VIP Virtual Internet Protocol

虚拟局域网 VLAN Virtual Local Area Network

云主机 VM Universal Serial Bus

云主机监控器 VMM Virtual Machine Monitor

虚拟路由冗余协议 VRRP Virtual Router Redundancy

Protocol

Page 195: 浪潮云海云操作系统InCloud OpenStack 5.5

浪潮云海云操作系统 InCloud OpenStack 5.5.0

技术白皮书 8 缩略语

188

中文全称 英文缩写 英文全称

可扩展虚拟局域网 VXLAN Virtual Extensible Local Area

Network

虚拟私有云 VPC Virtual Private Cloud

虚拟私有网络 VPN Virtual Private Network

扩展标记语言 XML Extensible Markup Language

复原时间目标 RTO Recovery Time Objective

复原点目标 RPO Recovery Point Objective

基于角色的访问控制 RBAC Role-Based Access Control

浪潮安全应用交付系统 SSA

浪潮运维安全管控系统 SSC