5.6. ゾーン全体にブリックを配置するように Heketi を設定する
Heketi は、ノードゾーンをブリック配置のヒントとして使用します。異なるゾーンでレプリカブリックを厳密に配置するように Heketi に強制するには、Heketi の "strict zone checking" 機能を有効にする必要があります。この機能を有効にすると、各ブリックセットが十分な数のゾーンに分散している場合にのみ、ボリュームが正常に作成されます。
heketi の厳密なゾーンを使用するように StorageClass を設定する前に、OCS ノードに正しいゾーンでラベルが付けられていることを確認します。
この機能は、StorageClass のパラメーターセクションの必要な設定で "volumeoptions" フィールドを追加して設定できます。以下は例になります。
volumeoptions: "user.heketi.zone-checking strict"
あるいは
volumeoptions: "user.heketi.zone-checking none"
設定は以下のとおりです。
- strict
- 異なるゾーンに少なくとも 3 つのノードが存在している必要があります(レプリカ 3 と仮定)。
- none
- 以前(および現在のデフォルト)の動作
"strict zone checking" 機能が設定された StorageClass ファイルのサンプルを以下に示します。
# cat glusterfs-storageclass.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: gluster-container provisioner: kubernetes.io/glusterfs reclaimPolicy: Delete parameters: resturl: "http://heketi-storage-project.cloudapps.mystorage.com" restuser: "admin" volumetype: "replicate:3" clusterid: "630372ccdc720a92c681fb928f27b53f" secretNamespace: "default" secretName: "heketi-secret" volumeoptions: "user.heketi.zone-checking strict" volumenameprefix: "test-vol" allowVolumeExpansion: true
既存のストレージクラスの仕様は編集できません。将来のすべてのアプリケーションに、必要なボリュームオプションを指定して新しいストレージクラスを作成することができます。ただし、既存のストレージクラスの設定を変更する必要がある場合は、最初に既存のストレージクラスを削除してから、以前のクラスと同じ名前の新しいストレージクラスを再作成する必要があります。
以下のコマンドを実行して、新しい設定で glusterfs-storage ストレージクラスを削除し、再作成します。
ストレージクラスオブジェクトを yaml ファイルにエクスポートします。
# oc get sc glusterfs-storage --export=true -o yaml > glusterfs-storage.yaml
- 推奨されるエディターを使用して、新しいパラメーターを追加します。
ストレージクラスオブジェクトを削除し、再作成します。
# oc delete sc glusterfs-storage # oc create -f glusterfs-storage.yaml