在 Windows 上运行 Glance

https://blueprints.launchpad.net/glance/+spec/windows-support

目标是允许 Glance 服务在 Windows 上运行,从而使 Hyper-V OpenStack 部署能够充分利用 Microsoft 存储解决方案。

问题描述

目前,Glance 服务无法在 Windows 上运行。为了提供一些背景信息,有一些 OpenStack 部署依赖于 Hyper-V 计算节点以及其他 Microsoft 技术。

在存储方面,最常用的 SDS 解决方案是 Storage Spaces Direct (S2D) 以及高度可用的 Scale-Out File Server (SoFS) SMB 共享。

一个问题是,Linux cifs 驱动程序目前提供的 HA SMB 共享支持有限(大多数版本甚至无法连接到 HA 共享,不支持 Witness 服务,自动故障转移最近才添加)。

考虑到这一点,大多数部署者不得不为他们的 Glance 镜像使用单独的存储后端(例如 Swift、Ceph 等)。

允许 Glance 在 Windows 上运行将使部署者能够更好地利用他们的 S2D 后端,这些后端通常用于存储 VM 磁盘(当前由 Nova 作为根镜像或 Cinder 作为可附加卷处理)。特别是,这对于融合超聚合部署非常有用,在这种部署中,部署另一个存储后端可能不是期望的。

提议的变更

让 Glance 服务在 Windows 上运行并不困难。我们只需要更改一些事情

  • 避免 fork,在 Windows 上不可用

  • 避免不可用的信号

  • 避免重命名/删除正在使用的文件

  • 避免使用在 Windows 上不可用的二进制文件

  • 避免让 eventlet monkey-patch os 模块,因为这会导致 subprocess.Popen 失败

  • 避免缺少特性或库(例如 xattr)

  • 路径处理的一些小差异('/' 将被视为相对路径)

  • 避免连接到 '0.0.0.0',而是使用 '127.0.0.1'。这主要适用于功能测试

以上所有要点都包含在不到 150 行代码中(如果包括测试,则再多几百行),并且不会影响 Linux 行为。

os-win 库将用于大多数 Windows 底层操作,这是一个官方的 OpenStack 项目。

主要目标是使用文件系统驱动程序以及 SMB 共享或群集共享卷 (CSV)。

最初将不支持 IIS,而是使用 eventlet wsgi(恰好是目前部署 Glance 的推荐方式)。

备选方案

对于 Hyper-V 部署,另一种选择是在单独的 Linux 主机上继续运行 Glance,必须部署额外的存储后端,或者使用当前 Linux 上可用的有限的 HA SMB 共享支持。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

性能方面,不应有太大差异。在 Windows 上启动新进程可能会稍慢,因此功能测试可能需要更长时间才能完成。

其他部署者影响

Glance 现在可以在 Windows 上运行。配置方面没有太大变化。

请记住,我们主要针对文件存储(这是我们希望 Glance 运行在 Windows 上的主要原因)。

Glance 最好作为 Windows 服务运行。通常,我们提供 MSI 包,这些包简化了安装和配置 OpenStack 服务(例如 Nova、Neutron agent、Cinder 等),这些服务也可以无人值守地运行。

我们还打算提供 Juju charms,以便在 Windows 上部署 Glance。

需要注意的是,os-win 目前支持 Windows Server 2012 或更高版本。

开发人员影响

开发人员应记住 Glance 应该具有可移植性。

从过去的经验来看,这对于其他 OpenStack 项目来说不是问题。Glance 不使用太多特定于平台的库或二进制文件,因此应该没问题。

实现

负责人

主要负责人

lpetrut

其他贡献者

工作项

这项工作分为 3 个补丁

  • 一个小补丁,允许 Glance 服务在 Windows 上运行

  • 另一个补丁,允许 API 服务使用多个进程

  • 一个补丁,允许所有 Glance 单元和功能测试在 Windows 上运行

os-win 上也进行了一些小的更改,公开了一些底层的 Windows 原语。

依赖项

我们依赖于 os-win,这是一个官方的 OpenStack 库,它公开了底层的 Windows 功能。它目前由其他一些 OpenStack 项目使用,例如 Nova、Cinder、Ceilometer、networking-hyperv 等。

测试

现有的测试提供了足够的覆盖范围。尽管如此,单元和功能测试需要进行一些小的更改才能在 Windows 上运行(当前依赖于一些 Linux 特定的功能)。

我们打算提供第三方 CI 测试。记录一下,我们目前正在对 Nova、Cinder 和 Neutron 补丁进行投票,并针对 Hyper-V 运行测试。

文档影响

文档应该更新,以指出 Glance 现在与 Windows 兼容,以及一些安装和配置指南。

参考资料