|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
|
这是尚未发布的文档。 SUSE® Storage 1.12 (Dev). |
数据本地性
数据本地性设置旨在在某些情况下启用,即只要可能,至少应将一个 Longhorn 卷的副本调度到与使用该卷的 Pod 相同的节点上。我们将拥有本地副本这一特性称为拥有 data locality。
例如,当集群的网络状况不佳时,数据本地性可能会很有用,因为拥有本地副本可以提高卷的可用性。
数据本地性对于分布式应用程序(例如数据库)也很有用,在这些应用程序中,高可用性是在应用程序级别而不是卷级别实现的。在这种情况下,每个 Pod 只需要一个卷,因此每个卷应调度到与使用它的 Pod 相同的节点上。 此外,Longhorn 的默认卷调度行为可能会对分布式应用程序造成问题。问题在于,如果存在一个 Pod 的两个副本,并且每个副本各含有一个卷,则 Longhorn 无法识别这些卷存储的是相同数据,因此不应将它们调度到同一节点上。因此,Longhorn 可能会在同一节点上调度相同的副本,从而阻止它们为工作负载提供高可用性。
当数据本地性被禁用时,Longhorn 卷可以由集群中任何节点上的副本支持,并且可以被运行在集群中任何节点上的 Pod 访问。
数据本地性设置
Longhorn 目前支持两种数据本地性设置模式:
-
disabled:这是默认选项。附加卷(工作负载)所在的节点上可能有或没有副本。 -
best-effort:此选项指示 Longhorn 尝试在附加卷(工作负载)所在的同一节点上保留一个副本。由于环境限制(例如磁盘空间不足、不兼容的磁盘标签等),即使 Longhorn 无法在附加卷(工作负载)所在节点保留本地副本,仍不会停止该卷。 -
strict-local:此选项要求 Longhorn 在附加卷所在节点上仅保留 一个副本,从而提供更高的 IOPS 和更低的延迟性能。此选项与 ReadWriteMany (RWX) 卷 不兼容。
如何为卷设置数据本地性
有三种方法可以为 Longhorn 卷设置数据本地性:
更改默认全局设置
您可以在 Longhorn UI 设置中更改数据本地性的全局默认设置。 全局设置仅作为默认值,类似于副本数量。 它不会更改任何现有卷的设置。 当创建卷时未指定数据本地性,Longhorn 将使用全局默认设置来确定该卷的数据本地性。
使用 StorageClass 为单个卷设置数据本地性。
Longhorn 还将数据本地性设置作为 StorageClass 中的一个参数公开。
您可以创建一个具有指定数据本地性设置的 StorageClass,然后使用该 StorageClass 创建 PVC。
例如,下面的 YAML 文件定义了一个 StorageClass,指示 Longhorn CSI 驱动程序将数据本地性设置为 best-effort:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: hyper-converged
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
numberOfReplicas: "2"
dataLocality: "best-effort"
staleReplicaTimeout: "2880" # 48 hours in minutes
fromBackup: ""