HPE Blog, Japan
1752780 メンバー
6320 オンライン
108789 解決策
新規ポスト
Yoji_Inoue

Dockerストレージ基礎編 (2)

前回の記事では、Dockerのストレージには以下の3つの種類があることを説明しました。今回はこのうち3つ目の永続ストレージを実現するDockerのボリュームプラグインについて解説していきます。

1) コンテナファイルシステム (揮発性ストレージ)
2) Docker ボリューム (永続的ストレージ)
3) Dockerボリュームプラグイン (永続的ストレージ)

 Docker plugin.jpg

最初はサードパーティのプラグインサポートから
当初はソフトウェア開発用途で利用されていたコンテナですが、その用途が拡大するにつれ、複数ホストからデータを共有するデータベースのサポートや、フェイルオーバー等いろいろ不都合なことが増えてきました。 そこでDockerのバージョン1.8 から、サードパーティのプラグインをサポートするようになり、そのプラグインを利用してコンテナの永続ストレージをじつげんできるようになりました。これらのプラグインは通常複数のストレージドライバーをサポートし、ストレージボリュームとのやり取りを行います。一方それぞれのホストに存在するDockerコンテナからストレージへのタスクは、コマンドラインでDockerデーモン経由でプラグインに送られ、ボリューム操作を行います。これらのプラグインを利用すると、一般的には以下のようなストレージ機能を実行できます。

ボリュームの作成
スナップショットの作成
スナップショットの外部ストレージへのバックアップ
スナップショットの任意のホストへのリストア


ボリュームプラグインの主な効能
ではこれらのボリュームプラグインを使うことで、どのようなメリットがあるのでしょうか?具体的な例を以下にリストアップしてみます。

高速データ処理が可能
  ストレージ製品専用のドライバーを使えるため、それぞれのストレージ製品がもつ性能や機能が利用可能になります。データベースやビッグデータ分析、ビデオのフォーマット変換等、ストレージの性能が求められるアプリケーションに利用されます。

データベースの移行
  データベースの運用を停止せずデータを移動することが可能になり、より性能の高いストレージへの移行や、容量の拡張等がダウンタイムなしに実現できるようになります。

フェイルオーバー
  実運用では、障害時のフェイルオーバー機能は必須と言えるでしょう。プラグインを使うことで、複数のホストから同一の外部ストレージを共有することができるようになり、フェイルオーバーを実現できるようになります。

OpenStackでの永続コンテナストレージ実現方法
Dockerのサードパーティボリュームプラグインとして初期に登場し、幅広く利用されているのがClusterHQのFlockerです。このFlockerはDocker Swarm、KubernetesやMesosのような主流のコンテナオーケストレーションツール、ストレージ環境としてもOpenStackのCinderやvSphere、VSAN等多くをサポートしています。OpenStackの初期からのメンバーであるHPEのストレージ製品でもFlockerを利用して永続コンテナストレージを実現しています。
ではFlockerを使ってOpenStack環境でどのようにコンテナの永続ストレージを実現しているかについて説明します。

 

 Flocker.jpg
HPEでは2015年後半、OpenStackのLリリース(Liberty) から永続コンテナストレージをサポートしています。対応ストレージ製品はオールフラッシュで有名な性能重視の3PAR StoreServと、software-defined storage のStoreVirtual VSAの2種類です。いずれもOpenStackのCinderドライバー(ブロックストレージ用ドライバー)を利用しています。
具体的なアーキテクチャーは以下のようになります。Flockerのエージェントをそれぞれのホストの仮想マシンに実装し、それぞれのホストのエージェントをFlockerの管理サービスモジュールで管理します。FlockerのエージェントはOpenStackのコンピューター用ドライバーNovaとブロックストレージドライバーCinderとのやり取りを行います。

さてこのようにOpenStack環境でステートフルコンテナは実現できるようにはなったのですが、全ての企業がOpenStackを使用しているわけではありません。それ以外の環境でもDockerのステートフルコンテナを実現するために、Dockerのバージョン1.11 からネイティブプラグインがサポートされました。その詳細については次回解説したいと思います。

 

【関連記事】
Dockerストレージ基礎編 第1回記事はこちらから 
http://ow.ly/mNnL30815xG

0 感謝
作者について

Yoji_Inoue

Technology Evangelist, Composable Infrastructure, Software Defined Data Center and Cloud Technology Architect, Hyper Converged, Storage, Memory centric-Data driven computing, Specialist