非营利 OpenStack 和 Ceph 集群,分布在五个数据中心
一些非营利组织(April、FSF France、tetaneutral.net…)和志愿者不断研究如何获得计算、存储和带宽,使其
- 100% 自由软件
- 内容中立
- 低维护
- 可靠
- 廉价
最新的设置,自 2013 年 10 月以来一直使用,基于一个分布在五个数据中心的 Ceph 和 OpenStack 集群。它被设计用于以下用例
- 自由软件开发和持续集成
- 托管低活动网站、邮件服务器等。
- 保留备份
- 共享电影和音乐
该集群由二十个节点组成,配备约 100 个核心、500GB 内存和 60TB 的原始存储。
OpenStack ¶
所有超visor 运行 OpenStack Havana 使用 puppet 安装。每个个人和组织最终都值得信赖,并且租户是一种避免错误而非强制安全性的便捷方式。与共享 Ganeti 集群上的 root 访问权限相比,它大大减少了人为错误的数量。
每个超visor 由不同的实体付费,具有非常不同的访问策略和成本。普遍共识是每个人消耗的资源量大致等于其对集群的贡献量。在过渡阶段(更新超visor 时)或硬件损坏时除外,在这种情况下,集群的备用资源将用于尽可能长的时间以恢复。例如,当退役 OVH 硬件时,其中包含的所有实例都将在其他超visor 上重新启动,并且 Ceph OSD 将被删除。
许多用户更喜欢在他们付费的硬件上运行他们的实例。允许每个人使用 forced_host 策略,以便可以使用 –availability-zone ovh:bm0014.the.re 来定位 bm0014.the.re 超visor。
网络 ¶
数据中心具有不同级别的内部连接性(OVH 托管硬件低至 100Mb/s,tetaneutral.net 最高可达 10Gb/s)和延迟(tetaneutral 和 Hetzner 之间超过 20 毫秒,Cloudwatt 和 FSF France 之间小于 5 毫秒)。一些数据中心被分配了公共 IPv4 子网,而另一些则没有公共 IP。
基于 tinc 的全网状网络 连接集群中的所有节点,以便所有节点共享一个公共子网。当 tinc 守护进程成为性能瓶颈时,将添加路由以绕过它。例如,它用于最大化位于 FSF France 千兆网络上的两个 Ceph OSD 的性能。
每个数据中心运行一个 L3 代理,路由其所在 AS 的 IP(可能带有 处理隔离 IP 的 hack)。
集群中的任何地方运行的实例都可以使用从另一个数据中心发出的浮动 IP。 dachary.org 是在 OVH 数据中心运行的实例,并使用来自 FSF France 数据中心的浮动 IP。
Neutron 配置了 OpenVSwitch 和 GRE,确保每个 L3 代理 运行带有 linux-3.13 内核 以避免性能问题。
存储 ¶
每个超visor 提供一个 LVM 池,旨在 与在其上运行的实例关联,以提高性能。Ceph 集群获得其余的存储容量。它有一个包含所有磁盘的池,并具有一个放置规则,该规则规定给定对象的两个副本不能位于同一数据中心。它还定义了每个数据中心的一个池,可用于提高性能。存储在该池中的数据如果数据中心被破坏,将会丢失。
# ceph osd tree
id weight type name up/down reweight
-1 33.57 root default -5 7.28 datacenter ovh -2 1.82 host bm0014 0 1.82 osd.0 up 1 -3 1.82 host bm0015 1 1.82 osd.1 up 1 -12 3.64 host bm0017 7 3.64 osd.7 up 1 -6 4.55 datacenter hetzner -7 2.73 datacenter cloudwatt -8 0.91 host bm0501 3 0.91 osd.3 up 1 -9 0.91 host bm0502 4 0.91 osd.4 up 1 -10 0.91 host bm0503 5 0.91 osd.5 up 1 -13 11.73 datacenter fsf -14 7.23 host bm0101 8 3.64 osd.8 up 1 13 3.59 osd.13 up 1 -15 4.5 host bm0102 9 0.91 osd.9 up 1 12 3.59 osd.12 up 1 ...
$ cinder create --availability-zone bm0014 \ --volume-type lvm \ --display-name volume-in-the-bm0014-hypervisor-vg 100 $ cinder create --volume-type fsf --display-name volume-in-fsf-ceph-pool 100
Ceph 的跨数据中心开销从来都不是问题,即使数据中心故障持续数小时。因为它分布在广域网上,所以它比具有良好连接性的 Ceph 集群更容易受到干扰。
计算 ¶
所有超visor 运行 KVM。
中立性 ¶
集群外部存储和共享的内容由每个个人和组织负责。该集群被故意设计为尽可能少地了解其用户的活动,并且鼓励他们系统地使用加密来保护其隐私。
例如,从 RBD 分配的虚拟机的磁盘应 加密,以便其内容,即使分布在许多磁盘上,也无法被第三方恢复或分析。
用例 ¶
实例存档 ¶
当从 Ceph RBD 卷启动的实例不再需要时,它将被关闭。当需要再次启动时,它可以再次启动。如果关联的 Ceph 池已满,可以添加一个编码擦除层来驱逐比一个月更冷的物体。
共享电影和音乐 ¶
分配一个 4TB 磁盘来存储由一些人共享的电影和音乐。磁盘从 Ceph 分配,并且可以 根据需要动态增长。使用的 Ceph 池将使用 编码擦除 池进行分层,以减少原始磁盘使用量。
持续集成 ¶
短生命周期实例从 位于同一超visor 上的 LVM 卷启动,以获得最大的 I/O 性能,而无需网络使用。
自由软件 ¶
不存在专有软件。
使用价值 ¶
裸机资源至少比云中的等效资源便宜五倍。Ceph 的高可靠性有助于志愿者通过选择何时更换硬件来降低维护成本(时间和金钱)。它超出了存储:如果超visor 完全失败,则只需要恢复数据,而不需要 CPU、内存或网络连接。更换超visor 可以等到可以廉价或方便地进行时再进行。安装新硬件时,手动步骤需要两三个小时,包括在内。预计一台新机器可以可靠地工作至少三年。在 OpenStack Havana + Ceph 集群之前,已经使用了 OpenStack Essex + LVM 集群,其中一部分仍然存在。它经历了一些 事故,正如任何集群所期望的那样,但大多数租户能够在六个月或更长时间内使用它而无需任何干预。
结论 ¶
我发现这样一个合作维护的集群比任何其他解决方案更灵活、更便宜、更可靠。虽然我花费的时间比任何人都多来维护它,但我能够在几个月内(包括 2013 年 12 月至 2014 年 2 月)使用它而没有任何与系统管理相关的工作。能够长时间使用原始计算/存储/网络而无需维护,这要归功于 KVM 或 Ceph 等高度可靠的软件。人为错误然后成为主要问题来源,但 OpenStack 租户逐渐减轻了这种负担。我希望能够在日常使用集群的同时,能够忘记一整年的维护。我已经很高兴能够连续运行三个月 ![]()

