4.9. Arbiter ボリュームの作成(オプション)
Arbiter ボリュームは、同様の整合性と少ないディスク容量要件で、すべての永続ボリュームタイプをサポートします。Arbitrated Replicated ボリュームまたは arbiter ボリュームは、3 方向の複製ボリュームのように動作し、3 つおきのブリックは arbiter と呼ばれる特殊なタイプのブリックです。Arbiter ブリックはファイルデータを格納しません。ファイル名、構造、メタデータのみを格納します。arbiter は、クライアントクォーラムを使用して、このメタデータを他のノードのメタデータと比較し、ボリュームの一貫性を確保し、スプリットブレイン状態を防ぎます。
Arbitrated Replicated ボリュームの利点
- 同様の一貫性: arbiter が設定されている場合、arbitration ロジックはクライアント側のクォーラムを自動モードで使用して、スプリットブレイン状態につながるファイル操作を防止します。
- ディスクの必要容量が少なくて済む: arbiter ブリックはファイル名とメタデータのみを保存するため、arbiter ブリックはボリューム内の他のブリックよりもはるかに小さくすることができます。
Arbitrated Replicated ボリュームの詳細は、https://access.redhat.com/documentation/ja-jp/red_hat_gluster_storage/3.5/html-single/administration_guide/index#Creating_Arbitrated_Replicated_Volumes を参照してください。
arbiter ボリュームを作成する前に、heketi-client パッケージがインストールされていることを確認します。
# subscription-manager repos --enable=rh-gluster-3-for-rhel-7-server-rpms
# yum install heketi-client
既存の Heketi サーバーをアップグレードする場合は、https://access.redhat.com/documentation/ja-jp/red_hat_openshift_container_storage/3.11/html-single/deployment_guide/index#upgrade_heketi_rhgs を参照してください。
Arbiter ボリュームは、データブリックよりも Arbiter ブリックのほうが早くいっぱいになるので、ファイルサイズのワークロードが予測できない場合やファイルサイズが小さい場合には適していない可能性があります。arbiter ボリュームを使用する場合には、arbiter ブリックがワークロードに対応できるように、データブリックのサイズとファイル数に基づいてファイルサイズを平均より若干少なめに選択することを推奨します。
4.9.1. Arbiter ボリュームの作成
Arbiter ボリュームは、Heketi CLI を使用して、または storageclass ファイルを更新して作成できます。
4.9.1.1. Heketi CLI を使用した Arbiter ボリュームの作成
Heketi CLI を使用して Arbiter ボリュームを作成するには、レプリカ 3 ボリュームを要求し、Heketi 固有のボリュームオプション "user.heketi.arbiter true" を指定して、システムがレプリカ 3 の Arbiter バリアントを作成するように指示します。
以下は例になります。
# heketi-cli volume create --size=4 --gluster-volume-options='user.heketi.arbiter true'
4.9.1.2. Storageclass ファイルを使用した Arbiter ボリュームの作成
storageclass ファイルを使用して arbiter ボリュームを作成するには、storageclass ファイルに以下の 2 つのパラメーターを含めるようにしてください。
- 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