▶OpenStack与云计算
大家比较公认的云计算架构分为三层,从下往上,依次是基础设施层、平台层、软件服务层,如图1所示。OpenStack就处于基础设施层,也就是IaaS层。IaaS层的核心在于虚拟化技术,通过虚拟化技术可以将各种计算设备、网络设备、存储设备等虚拟化为虚拟资源池中的资源。
OpenStack是一个云操作系统,可控制整个数据中心内的大型计算,存储和网络资源池,所有资源均通过具有通用身份验证机制的API进行管理和配置。还提供了一个仪表板,可让管理员进行控制,同时授权其用户通过Web界面配置资源。除了标准的基础架构即服务功能外,其他组件还提供业务流程,故障管理和服务管理等其他服务,以确保用户应用程序的高可用性。另外,OpenStack还与一些流行的企业(如 设备商、运营商)和开源技术(如 ceph、docker)一起使用。
▶OpenStack社区发展
OpenStack从2010年到现在,已经发布了22个版本,版本名称是按照字母顺序从A到Z排列的,今年5月份发布了U版本,10月份发布了V版本。在U版本中新增的功能有:Kuryr添加了对IPV6的支持(OpenStack与容器网络之间的桥梁);Ironic 增加了对硬件退回工作流的支持,以实现托管云中的自动化停用;Kolla(OpenStack的容器化部署)增加了对后端API服务的TLS加密的初始支持;Magnum提供对Kubernetes版本升级支持、对Kubernetes集群的操作系统升级支持等。V版本的核心亮点有:推进OpenStack与容器融合,增强裸金属管理功能、对多计算架构和标准的支持以及针对复杂网络问题提供高效解决方案的能力。从OpenStack最近几个版本的新增功能来看,OpenStack社区的发展趋势为:跨开源项目的融合与协作——OpenStack与硬件、智能、容器等相关开源社区项目的整合与调适。OpenStack有很多服务,我们可以根据需要安装和使用这些服务。图3提供了OpenStack的全景视图,我们可查看这些服务的位置以及它们如何协同工作。
我们在龙芯平台loongnix-server系统上对OpenStack做了适配和测试。
▶适配版本和组件
据了解,国内主流厂商使用的版本有Ocata、Pike、Rocky等。我们目前适配的版本为Rocky。http://www.loongnix.org/index.php/OpenStack(1)Rocky版本是2018年8月发布的,龙芯是在2019年开始做OpenStack相关适配工作。(2)OpenStack基金会非常看重这个版本,在这个版本中,大大增强了核心组件稳定性,增加了对很多新兴技术的兼容,如:人工智能、机器学习、NFV、边缘计算、软件容器、支持裸机架构等。服务名称 | 组件名称 | 描述 | 版本 |
compute | nova | 为云主机提供计算资源 | rocky |
network | neutron | 为云主机提供网络资源及网络连接 | rocky |
image | glance | 为云主机提供镜像 | rocky |
identify | keystone | 提供身份和权限验证服务 | rocky |
block storage | cinder | 为云主机提供块存储资源 | rocky |
object storage | swift | 提供对象存储服务,类似于AWS的S3 | rocky |
表1 龙芯平台已适配的基础组件列表
如表1所示,目前做了适配分析的OpenStack组件有:nova、neutron、glance、keystone、cinder、swift这6个基础组件。另外,客户端工具OpenStackClient以及horizon组件也是支持的,在龙芯平台上可以正常使用。
OpenStack环境的搭建是比较复杂的,我们从主流的环境部署工具中选择了packstack来做适配,它集成了OpenStack puppet模块,非常成熟和稳定,使用方法也比较简单。具体的使用方法可以参考龙芯社区的《OpenStack安装和使用文档》。测试工具,我们选择了rally,这是OpenStack社区推出的一款开源测试工具。我们使用“rally + tempest”对6大基础组件做了功能测试。▶功能测试结果
表2列出了在龙芯平台和x86平台上,OpenStack基础组件功能测试的结果对比。
其中,对x86平台测试结果需要说明的是:我们使用的x86平台环境是使用虚拟机搭建的,有些测试例的测试条件不满足,导致fail较多。列出这个对比结果,是为了说明龙芯平台部署的OpenStack环境能支持6大基础组件的绝大部分功能。组件名称 | 结果 (Success/Skip/Fail) (MIPS64) | 结果 (Success/Skip/Fail) (x86_64) |
nova | (551/28/4) | (503/29/51) |
neutron | (265/2/0) | (265/2/0) |
cinder | (203/0/0) | (195/6/2) |
swift | (139/1/1) | (139/1/1) |
keystone | (60/27/0) | (60/27/0) |
glance | (127/97/0) | (127/97/0) |
表2 OpenStack基础组件功能测试结果对比
▶分析过的重点功能
在对基础组件功能测试结果分析的过程中,遇到了很多问题,多数都与配置有关。表3列出了我们分析验证过的基础组件的部分重要功能。序号 | 内容 | (关联)组件 |
1 | nova 过滤器的使用 | nova |
2 | 实例获取不到 IP 地址 | nova、neutron |
3 | 实例的迁移问题 | nova |
4 | 实例的密钥功能使用 | nova |
5 | openvswitch的支持性分析 | neutron |
6 | 实例的浮动ip不生效 | neutron |
7 | multiattach-volume 与多个实例的连接/分离 | nova、cinder |
8 | cinder 多后端存储的使用 | cinder |
9 | swift 的权限问题 | swift |
10 | nova + cinder 各种场景的功能测试 | nova、cinder |
11 | OpenStack 帐号锁定、密码修改问题 | keystone |
12 | 使用config drive实现元数据注入 | nova |
... | ... |
|
表3 分析过的基础组件的重点功能列表
注:关于基础组件的使用方法,可参考龙芯社区的文档《OpenStack ssh VM的网络配置和操作》、《OpenStack实例迁移配置和使用指南》、《cinder组件的配置和使用文档》。
解决的架构问题多数与nova组件有关。在龙芯平台,nova通过libvirt管理KVM云主机。与架构有关的问题,见表4。序号 | 问题描述 | 涉及组件/工具 |
1 | 创建实例失败,不支持mips64el CPU架构 | nova |
2 | 缺少键盘功能,无法操作实例的控制台 | nova |
3 | 不支持设备热插拔功能 | nova |
4 | 自动部署工具packstack不支持loongnix-server系统 | puppet / packstack |
▶运行情况
我们在龙芯平台上部署了openstack环境,图4是openstack环境的登录界面。图5是登录后的实例概况界面。
在龙芯平台上部署的OpenStack环境中,对实例进行的各项操作都是正常的。图6是一个网络拓扑图,外部网络是flat类型,内部网络是vxlan类型。图7是实例vm-03控制台(vnc)的截图,表示可以和外网正常通信。
虽然OpenStack已经发展了10年时间,但龙芯涉足OpenStack领域的时间只有1年,还有许多工作要做。其中,首要任务是对基础组件和其它重要组件的适配测试工作,使OpenStack能够在龙芯平台跑起来,并满足基本功能的使用。我们以图3作为组件适配工作的蓝图,结合客户的反馈、运营商/银行/铁路/网络设备商等OpenStack用户的组件使用情况,制定了两个阶段的组件适配计划。表5是第一阶段的适配计划,主要是对基础组件和客户反馈所需要组件的适配分析。表6是第二阶段的适配计划,是在调研了运营商/银行/铁路/网络设备商等行业对OpenStack组件的使用情况后,做出规划。组件名称 | 备注 |
6大基础组件 | 功能测试、常见场景测试 |
ironic组件 | 镜像构建工具(DIB)、docker、PXE |
magnum组件 | 提供容器集群部署 |
sahara组件 | 支持各种不同的Hadoop发行版 |
组件名称 | 备注 |
tacker组件 | open NFV编排 |
heat组件 | 编排器,模板文件、自动化的云部署 |
ceilomete组件 | 计量与监控,获取平台中用户对各种资源的使用情况 |
aodh组件 | 告警,当收集的计量或事件数据违反定义的规则时,遥测警报服务将触发警报 |
octavia 组件 | 负载均衡 |
[龙芯有云第四话] 龙芯平台Alpine Linux适配最新进展