开始考虑 Ceph 作为 OpenStack Cinder 的后端(替换 LVM)

刚从 Juno 会议回来,我参加了大部分存储相关的会议,并且对存储厂商避开 Ceph 的现象感到非常震惊。然而,LVM,Cinder 的参考存储后端,却总是被提及。也许,这是否意味着 Ceph 正在接管?说到 LVM,最近的 OpenStack 调查显示它是使用最多的后端。
起源
看到存储专家们如何看待 OpenStack Cinder 生态系统真是令人有趣。一方面,你拥有默认的开源 LVM 驱动程序,它被认为是廉价且开始为你的虚拟机提供块存储的不错方式(这是真的)。另一方面,你拥有专有解决方案,如 EMC、NetApp 和 Solidfire。后者被认为是为 Cinder 部署块存储的真正解决方案,因为它们提供高可用性和性能。看起来中间什么都没有……哦!等等,我感觉这里有些奇怪……哦,是的,我们完全忽略了其他可靠、可扩展且强大的解决方案,例如 Ceph 和 Sheepdog。两者都具有分布式架构,使其具有高度可用性。所以是的,确实存在真正的开源替代方案,可以从 OpenStack 的块存储开始。如果你阅读这篇博客,你肯定已经理解了我有多喜欢 Ceph 以及它的强大之处。本文无意于火上浇油并开始一场激烈的辩论。我只是想尽量保持现实、诚实和公平。
那么为什么选择 Ceph 而不是 LVM?
为了给你一些背景知识,Cinder 是 OpenStack 组件,负责向虚拟机暴露块设备。Cinder 有 27 个存储驱动程序,其中只有 4 个是开源的,其余都是专有解决方案
- Ceph RBD
- GlusterFS
- NFS
- LVM:参考实现
让 Ceph 成为 Openstack 的默认存储后端。你可以使用与 LVM 或 NFS 等其他后端相同数量的机器来启动 Ceph。
为了进入 Cinder,LVM 很容易,我相信这至少是你 OpenStack 体验中应该经历一次的好练习。然而,这不会持续太久,随着生产环境的到来,你肯定会考虑一些更具可扩展性并提供一些高可用性功能的解决方案。如今,这一切都归结于这两点,而这两点正是 LVM 所缺乏的。通过引入多后端功能,LVM 在可扩展性方面得到了扩展。不幸的是,实现高可用性仍然很困难,如果执行 LVM 的服务器发生故障,你所有的 Cinder 块将不再响应,并且会在一段时间内停滞不可用。
这就是为什么你需要可靠性、可用性和鲁棒性。这三个因素定义了 Ceph。
Ceph 是一个统一的、分布式的、大规模可扩展的开源存储解决方案!
Ceph 的学习曲线非常陡峭,但相信我,学习它是值得的。你们中的一些人可能认为要开始使用 Ceph,至少需要 3 台机器。好吧,答案是肯定的,也是否定的。是的,建议从 3 台机器开始,特别是如果你想测试复制和恢复机制。但是这 3 台机器不必是专用的,因此你可以轻松地将计算节点与你的存储实体共置。让我们现实一点,如果你真的想开始使用 OpenStack,你至少需要 3 台机器。你可以轻松地将所有内容都共置在它们上面,这样你就可以测试诸如高可用性、实时迁移等功能……
基本上你的 3 台机器将运行
- HAProxy | Keepalived
- OpenStack APIs
- MySQL Galera | RabbitMQ | MongoDB
- Nova-compute
- Ceph
这种设置可以被认为是一个沙盒,你可以在其中测试 OpenStack 的各种事物。
虽然,如果你是一名开发人员,并且你唯一寻求的是一个开发环境,那么你可能会对 Devstack Ceph 感兴趣。借助它,你将能够有效地快速启动一个开发环境,并开始使用 Ceph 玩转 OpenStack。我预计这个补丁很快就会进入 Devstack(好吧,我已经这样说了好几个月了……)。
不要误会我的意思,我的目的不是否定 LVM 或类似的东西。只是我相信 Ceph 是 OpenStack 存储的未来。最近的一项研究表明,Ceph 排名第二(并且非常接近)仅次于 LVM(LVM 有 63 个,Ceph 有 58 个)。我想在这篇文章中展示的是,我们绝对可以达到顶峰。像往常一样,欢迎评论。