5.8. 创建任意分区卷(可选)

仲裁卷支持所有具有相似一致性和磁盘空间要求的持久性卷类型。仲裁复制卷或仲裁器卷充当一个三向复制卷,其中每个第三个 brick 都是称为 arbiter 的特殊类型的 brick。仲裁器 brick 不存储文件数据;它们仅存储文件名、结构和元数据。仲裁程序使用客户端仲裁将此元数据与其他节点的元数据进行比较,以确保卷的一致性并防止脑裂状况。

仲裁复制卷的优点:

  • 相似一致性:配置仲裁器时,仲裁逻辑在自动模式中使用客户端仲裁,以防止出现脑裂条件的文件操作。
  • 所需磁盘空间减少:由于仲裁器 brick 仅存储文件名和元数据,因此仲裁 brick 可能会比卷中的其他 brick 小得多。

有关调整复制卷的详情,请参考 https://access.redhat.com/documentation/en-us/red_hat_gluster_storage/3.5/html-single/administration_guide/index#Creating_Arbitrated_Replicated_Volumes

在创建仲裁卷前,请确保已安装了 heketi-client 软件包。

# subscription-manager repos --enable=rh-gluster-3-for-rhel-7-server-rpms
# yum install heketi-client

如果要升级现有 Heketi 服务器,请查看 https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage/3.11/html-single/deployment_guide/index#upgrade_heketi_rhgs

注意

仲裁卷可能不适用于小文件或无法预计文件大小的工作负载,因为它可能会比数据 brick 更快地填充仲裁数 brick。如果要使用仲裁卷,我们建议您根据数据 brick 的大小和文件数量选择更保守的平均文件大小,以便仲裁的 brick 可以容纳您的工作负载。

5.8.1. 创建任意卷

可以使用 Heketi CLI 或更新 storageclass 文件来创建仲裁卷。

5.8.1.1. 使用 Heketi CLI 创建任意分区卷

要使用 Heketi CLI 创建 Arbiter 卷,必须请求一个副本 3 卷,并提供 Heketi 特定卷选项"user.heketi.arbiter true",它将指示系统创建副本 3 的 Arbiter 变量。

例如:

# heketi-cli volume create --size=4 --gluster-volume-options='user.heketi.arbiter true'

5.8.1.2. 使用 Storageclass 文件创建任意卷

要使用 storageclass 文件创建仲裁程序卷,请确保在 storageclass 文件中包含以下两个参数:

  • user.heketi.arbiter true
  • (可选)user.heketi.average-file-size 1024

以下是 storageclass 文件示例:

# cat glusterfs-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gluster-container
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://heketi-storage-project.cloudapps.mystorage.com"
  restuser: "admin"
  volumetype: "replicate:3"
  clusterid: "630372ccdc720a92c681fb928f27b53f,796e6db1981f369ea0340913eeea4c9a"
  secretNamespace: "default"
  secretName: "heketi-secret"
  volumeoptions: "user.heketi.arbiter true,user.heketi.average-file-size 1024"
  volumenameprefix: "test-vol"
spec:
  persistentVolumeReclaimPolicy: Retain
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
storage: 5Gi