この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です SUSE® Storage 1.12 (Dev).

データのローカリティ

データのローカリティ設定は、少なくとも1つのLonghornボリュームのレプリカが、そのボリュームを使用するポッドと同じノードにスケジュールされるべき状況で有効にすることを意図しています。ローカルレプリカを持つ特性を`data locality`と呼びます。

例えば、クラスターのネットワークが悪い場合、データのローカリティは役立ちます。なぜなら、ローカルレプリカを持つことでボリュームの可用性が向上するからです。

データのローカリティは、分散アプリケーション(例:データベース)にも役立ちます。これらのアプリケーションでは、ボリュームレベルではなくアプリケーションレベルで高可用性が達成されます。その場合、各ポッドに対して1つのボリュームが必要なので、各ボリュームはそれを使用するポッドと同じノードにスケジュールされるべきです。 さらに、ボリュームスケジューリングに関するLonghornのデフォルトの動作は、分散アプリケーションに問題を引き起こす可能性があります。問題は、ポッドのレプリカが2つあり、各ポッドレプリカがそれぞれ1つのボリュームを持っている場合、Longhornはそれらのボリュームが同じデータを持っていることを認識せず、同じノードにスケジュールされるべきではないということです。したがって、Longhornは同じノードに同一のレプリカをスケジュールする可能性があり、その結果、ワークロードに対して高可用性を提供できなくなります。

データのローカリティが無効になっている場合、Longhornボリュームはクラスター内の任意のノードにレプリカを持ち、クラスター内の任意のノードで実行されているポッドによってアクセスされることができます。

データのローカリティ設定

Longhornは現在、データのローカリティ設定のために2つのモードをサポートしています:

  • disabled:これがデフォルトのオプションです。接続されたボリューム(ワークロード)と同じノードにレプリカが存在する場合もあれば、存在しない場合もあります。

  • best-effort:このオプションは、Longhornに接続されたボリューム(ワークロード)と同じノードにレプリカを保持するよう指示します。Longhornは、環境の制限(例:十分なディスクスペースがない、互換性のないディスクタグなど)により接続されたボリューム(ワークロード)にローカルレプリカを保持できない場合でも、ボリュームを停止することはありません。

  • strict-local:このオプションは、Longhornが接続されたボリュームと同じノードに*1つのレプリカ*を保持することを強制し、その結果、より高いIOPSと低いレイテンシ性能を提供します。このオプションは、ReadWriteMany (RWX) ボリュームとは互換性がありません。

ボリュームのデータのローカリティを設定する方法

Longhornボリュームのデータのローカリティを設定する方法は3つあります。

デフォルトのグローバル設定を変更する

Longhorn UIの設定内でデータローカリティのグローバルデフォルト設定を変更できます。 グローバル設定は、レプリカ数と同様にデフォルト値として機能します。 既存のボリュームの設定は変更されません。 データローカリティを指定せずにボリュームを作成すると、Longhornはグローバルデフォルト設定を使用してボリュームのデータローカリティを決定します。

Longhorn UIを使用して個別のボリュームのデータローカリティを変更する

Longhorn UIを使用して、ボリューム作成時にデータローカリティを設定できます。 ボリュームの詳細ページで、作成後にボリュームのデータローカリティ設定を変更することもできます。

StorageClassを使用して、個別のボリュームのデータローカリティを設定します。

Longhornは、StorageClassのパラメータとしてデータローカリティ設定も公開しています。 指定されたデータローカリティ設定を持つStorageClassを作成し、その後StorageClassを使用してPVCを作成できます。 例えば、以下のYAMLファイルは、Longhorn CSIドライバーにデータローカリティを`best-effort`に設定するよう指示するStorageClassを定義しています。

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: ""