Kubernetes管理プラットフォームの作成者であるRancher Labsは、クラウドネイティブのブロックストレージソリューションであるLonghornを一般提供している。Longhornは、Kubernetes内のステートフルアプリケーションの開発をサポートするベンダー中立の永続ストレージソリューションを提供する。
Longhornは、マイクロサービスを使用して構築されたオープンソースの分散ブロックストレージである。ユーザがCloud Native Computing Foundation (CNCF) サンドボックスプロジェクトとしてストレステストを行っていたため、最初は2019年にベータ版でリリースされた。この一般提供 (GA) バージョンのLonghornは、シンプロビジョニング、スナップショット、バックアップと復元、無停止のボリューム拡張、定義されたRTOとRPOを備えたクロスクラスターディザスタリカバリボリューム、実行中のボリュームに影響を与えることなくLonghornソフトウェアのライブアップグレード、 スタンドアロンUIとKubernetes CLIの統合を提供する。
Longhornは、独自の代替手段のコストオーバーヘッドなしに、チームが永続ストレージの展開を簡素化できるよう支援することを目的としている。また、チームがスループットと安定性を向上できるようにするために、データの管理と環境の運用に必要なリソースを削減することも目的としている。
クラウドおよびコンテナベースのデプロイの拡大に対応するために、分散ブロックストレージシステムはますます高度になっている。ストレージコントローラが提供するボリュームの数は増え続けている。最新のクラウド環境では、数万から数百万の分散ブロックストレージボリュームが必要になるため、ストレージコントローラは非常に複雑な分散システムに進化した。
分散ブロックストレージは、ファイルシステムなどの他の形式の分散ストレージよりも単純である。これは、システムにボリュームがいくつあっても、各ボリュームは単一のホストによってのみマウントできるためである。このため、それらのボリュームがディスクの共通プールから構築でき、ストレージコントローラーが首尾一貫して存在し、連携して動作するように調整する手段である限り、大きなブロックストレージコントローラーをいくつかの小さなストレージコントローラーに分割することが可能であるはずである。
各コントローラが1つのボリュームのみを提供する必要がある場合、ストレージコントローラの設計が簡素化される。コントローラソフトウェアの障害ドメインは個々のボリュームに分離されているため、コントローラのクラッシュは1つのボリュームにのみ影響する。Longhornは、100,000のボリュームに拡張できる高度に洗練されたコントローラを構築する代わりに、ストレージコントローラを軽量化して、100,000の個別のコントローラを作成できるようにする。Swarm、Mesos、Kubernetesなどのオーケストレーションシステムを使用して、これらの個別のコントローラをスケジュールし、共有ディスクセットからリソースを引き出し、連携して分散ブロックストレージシステムを形成できる。
Longhornユーザは、ローカルディスク全体にミラーリングされた分散ブロックストレージを作成できる。また、既存のNFS、iSCSI、ファイバーチャネルストレージアレイ、およびアプリケーション対応のスナップショット、バックアップ、リモートレプリケーションなどの追加機能を備えたAWS EBSなどのクラウドストレージシステムにLonghornをデプロイできるようにすることで、エンタープライズグレードのストレージをKubernetesと統合するためのブリッジとしても機能する。
Longhornのマイクロサービスベースの設計では、各ボリュームに独自のコントローラーを持たせることもできるため、IO操作に目立った中断を引き起こすことなく、各ボリュームのコントローラとレプリカコンテナをアップグレードできる。Longhornは、システムの進行中の操作を中断することなく、すべてのライブボリュームのアップグレードを調整するための長時間実行ジョブを作成できる。アップグレードによって予期しない問題が発生しないようにするために、Longhornは、ボリュームの小さなサブセットをアップグレードし、アップグレード中に問題が発生した場合に古いバージョンにロールバックすることを選択できる。
Longhornを使用すると、ユーザは、コンピューティングホストまたは専用ストレージホストにマウントされたローカルディスクまたはネットワークストレージをプールし、コンテナおよび仮想マシン用のブロックストレージボリュームを作成できる。ボリュームのサイズ、IOPS要件、および同期レプリカの数は、ボリュームのストレージリソースを提供するホスト全体で指定できる。レプリカは、基盤となるディスクまたはネットワークストレージにシンプロビジョニングされる。
ユーザは複数のコンピューティングホストまたはストレージホストにわたって複数のレプリカをスケジュールでき、Longhornは各レプリカの状態を監視して修復を実行し、必要に応じてレプリカを再構築する。ストレージコントローラとレプリカは、Dockerコンテナとして操作できる。たとえば、レプリカが3つあるボリュームは、4つのコンテナになる。
ボリュームごとに複数のストレージフロントエンドを割り当てることができる。一般的なフロントエンドには、Linuxカーネルデバイス (/dev/longhornの下にマッピング) とiSCSIターゲットが含まれる。LinuxカーネルデバイスはDockerボリュームのバックアップに適しているが、iSCSIターゲットはQEMU/KVMおよびVMwareボリュームのバックアップに適している。
ボリュームスナップショットとAWS EBSスタイルのバックアップを作成できる。ボリュームごとに最大254のスナップショットがあり、NFSまたはS3互換のセカンダリストレージにインクリメンタルにバックアップできる。バックアップ操作中には、変更されたバイトのみがコピーされて保存される。定期的なスナップショットとバックアップ操作のスケジュールを、これらの操作の頻度、これらの操作が実行される正確な時間、および保持される定期的なスナップショットとバックアップセットの数とともに指定できる。
Longhornには、ここからGitHubでアクセスできる。