在 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 兼容,以及一些安装和配置指南。