Dockerコンテナがフェイルオーバーしたとき、ストレージも自動的に切り替えてくれる。オープンソースの「REX-Ray」をDell EMCが無償公開中[PR]
ソフトウェアの開発環境や実行環境を実現する基盤として注目度が高まっているDockerコンテナ。
Dockerコンテナを利用することで、手もとのノートPCで開発したアプリケーションを簡単にオンプレミスのテスト環境やクラウド上の本番環境などへ持ち運んで展開、実行できるようになります。
Dockerコンテナは軽量で簡単にアプリケーションの実行環境を生成、移動、削除できる点が大きな特長になっています。しかし一方でそのアプリケーションで処理されるデータは、簡単に消えてもらっては困ります。
そこでDockerにはデータを永続化するための仕組みがいくつか用意されています。
Dockerのデータを永続化する4つの方法
Dockerコンテナでデータを永続化するには、すなわちアプリケーションが生成するデータを失わないためには、何らかの方法でデータをストレージに書き出す必要があります。
その仕組みとして例えば、DockerコンテナをホストしているOSのディレクトリを、Dockerコンテナからマウントする機能が用意されています。
あるいは「Docker Volumes」という機能を用いてホストOSのファイルシステムをDockerコンテナのファイルシステムに割り当てることも可能です。似たようなことは、「Data Volume Container」という機能を用いて実現することもできます。
しかし同じ物理ホスト内のストレージにデータを保存するのでは、万が一その物理ホストに障害が発生したときにデータを失いかねません。Dockerコンテナを業務アプリケーションのような重要なアプリケーションの基盤にするには、より信頼性の高いデータ永続化の仕組みが必要です。
そこで、より信頼性の高いデータ永続化を実現する仕組みとして用意されているのが「Docker Volume Plugin」です。
Dockerのストレージ機能はプラグインで拡張できる
Dockerはネットワークやストレージの機能をプラグインで拡張できるようになっています。「Docker Volume Plugin」とは、このプラグイン機能によってDockerコンテナのストレージ機能を拡張する仕組みです。これによって例えばNFSやiSCSIなどによってストレージと接続すれば、Dockerコンテナから高性能かつ高信頼なストレージの利用が可能になります。
DockerのオフィシャルWebサイトにある「Volume plugins」では、ストレージ機能を拡張する20種類以上のプラグインが紹介されています。例えば、オープンソースの分散ファイルシステムであるGlusterFSに接続するための「GlusterFS plugin」、高可用ストレージであるDRBDに接続するための「DRBD plugin」など、さまざまな商用あるいはオープンソースのプラグインが存在します。
その代表的なプラグインの1つが、ストレージ大手Dell EMCがオープンソースで開発し無償で提供している「REX-Ray Plugin」(以下REX-Ray)です。
さまざまなストレージ操作を統一化する「REX-Ray」
REX-Rayを用いることでDockerコンテナからAmazon EBSやCeph、Azure Unmanaged Disk、VirtualBoxのVirtual Mediaなどさまざまなストレージにアクセス可能となります。もちろんDell EMCのIsilonやScaleIOにも対応します。
REX-Rayがサポートするストレージ
Amazon EC2:EBS, EFS, S3FS
Microsoft:Azure Unmanaged Disk
Google:GCE Persistent Disk
DigitalOcean:Block Storage
FittedCloud:EBS Optimizer
Ceph:RBD
VirtualBox:Virtual Media
Dell EMC:ScaleIO, Isilon
REX-Rayの1つ目の特長は、これらのストレージすべてを抽象化し、同じAPI、同じコマンドでボリュームの作成やボリュームのアタッチといったストレージの操作を可能にする点です。
REX-Rayを用いることで、Dockerコンテナを基盤としたアプリケーションをAWSへデプロイしても、Azureへデプロイしても、Google Cloudへデプロイしても、Virtual Boxでも、そしてオンプレミスでDell EMCのIsilonやScaleIOを利用したとしても、同じストレージコマンドでストレージ操作が可能なのです。
このように複数のプラットフォームを利用していたとしても同一のバイナリイメージを利用できでアプリケーションがシンプルになり、またオペレーションも統一できて容易になります。
当然、REX-Rayを用いてDockerコンテナから外部ストレージを利用できるようになれば、バックアップやディザスタリカバリ、スナップショットといったストレージの高度な機能が利用可能です。
オーケストレーションツールと連係してフェイルオーバー可能
そしてもう1つのREX-Rayの特長は、Dockerコンテナのオーケストレーションツールと連係できる点にあります。
MesosやKubernetesなどのコンテナオーケストレーションツールの基本的な機能は、クラスタ構成を自動的に維持してくれるというものです。例えば3つのDockerコンテナで1つのクラスタを構成する、と設定した場合、クラスタ内のDockerコンテナが何らかの障害で終了するなどしても、オーケストレーションツールが自動的に別のDockerコンテナを起動し、つねに3つのDockerコンテナでクラスタを構成する状態を維持してくれます。
このとき、REX-Rayはオーケストレーションツールと連係し、自動的にストレージへの接続を新しく起動したDockerコンテナへ引き継ぐフェイルオーバー機能を実現してくれます。
Dockerコンテナでのアプリケーションの展開にはオーケストレーションの利用が標準的な構成になろうとしています。そのとき、ストレージの運用も自動的に連係してくれるREX-Rayのようなストレージプラグインも、同じようにDockerコンテナにおける標準的な機能になると考えられます。
(本記事はEMCジャパン提供のタイアップ記事です)
あわせて読みたい
IIJ、マルチクラウドの運用統合と自動化を実現する「IIJ統合運用管理サービス」提供開始。同社のノウハウで障害原因の特定や対処をナビゲート
≪前の記事
Google Drive、PCとの同期不要でクラウドに置いたままファイルを開く「Drive File Stream」発表。企業向けのTeam Drivesは正式版へ。Google Cloud Next'17