BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ClusterHQがFlockerをリリース,堅牢なステートフルDockerコンテナを支援

ClusterHQがFlockerをリリース,堅牢なステートフルDockerコンテナを支援

原文(投稿日:2014/08/13)へのリンク

FlockerZFSをベースとした,Dockerのボリュームとコンテナ管理システムである。データベースのようなステートフルコンテナを,仮想または物理ホスト間で移動することが可能な,一部の仮想マシンのハイパーバイザが備えるライブマイグレーション機能に似た機能を提供するソフトウェアだ。そのバージョン0.1ClusterHQから,Apache 2.0のオープンソースプロジェクトとしてリリースされた。

Flockerには2つの重要なコンポーネントがある。フロントエンドのネットワークプロキシと,バックエンドにあるZFSベースのストレージだ。フロントエンドのプロキシサービスは,サービス要求をアクティブなコンテナを実行しているホストにルーティングする機能を備える。コンテナがホスト間を移行すると,最初にZFSボリュームの同期が行われる。そして,アクティブなコンテナからレプリカへのハンドオフが実行され,レプリカをアクティブにすることが可能になる。ハンドオフの実行時には,一時的にアベイラビリティの停止時間が存在する。プロジェクトの目標は,コンテナ間の無停止マイグレーションを実現することだ。

Flockerのアーキテクチャは,同じようにフロントエンドのプロキシとZFSストレージファブリックを利用する,HybridClusterのアーキテクチャを継承している。Dockerに注目していること以外のおもな違いは,(FreeBSDではなく)Linux上でZFSを利用している点にある。後にOracleに買収されることになったSunがオリジナルを開発した,という事実に起因する知的財産上の懸念から,ZFSのLinuxへの移植にはさまざまな問題があった。ClusterHQの創設者でCEOであるLuke Marsden氏は,次のようにコメントしている。

ZFSは非常に成熟して安定した,画期的なシステムです。 ZFS on Linux(ZOL)は現在,(FUSEではなく)ネイティブカーネルモジュールとして実装されていて,安定性とパフォーマンスの両面で,製品レベルに到達しつつあります。すでにローレンス・リバモア国立研究所などの機関で数ペタバイトというデータを管理していますし,私たち自身が行っているストレステストでも,デッドロックやカーネルパニックを発生させることなく,数カ月間にわたって持ちこたえています。 ライセンス上の問題は障害にはなりません。Oracleには,OpenZFSプロジェクトの支配権はないのです(ZoL FAWをご覧ください)。ClusterHQは先日,Richard Yao氏を雇用しました。氏はZoLプロジェクトで2番目に積極的なコントリビュータであり,ZoLを極めて堅牢なプロジェクトにするための最終フィックスの進展に貢献した人物です。Richardは今後数週間にわたって,ZOLの状態を,極めて詳細にClusterHQブログに書いてくれることになっています。

バージョン0.1では,コンテナのリンクがサポートされていない。また,DockerのネイティブリンクシステムがFlockerプロキシを認識しないため,プロキシも利用することはできないが,コンテナの代わりにプロキシを示すリンクパラメータ設定した環境変数を渡すことで,この状態を回避することは可能だ。Flockerではすでに,Red Hatのgeardを一部分的に利用している。またClusterHQチームは今後のリリースで,geardスタイルのリンクを実装する予定だ。プロキシのトピックに関しては,Marsdenが次のように説明している。

コンテナをポータブルにするためには,コンテナが提供するプロトコルの種類について,ある程度の知識を備えたプロキシ層を経由して処理を行う必要があると考えています。クラスタ内の任意のIPアドレス経由で同じコンテナにアクセスできれば,単純の複数のAレコードを公開するだけで,効率的なIPベースのフェールオーバやデータセンタ間のポータビリティが実現できますから,極めて望ましいことです。HTTPS Webサーバならば,コンテナのアドレスは (https, "clusterhq.com")といったものになるでしょう。あるいは,クラスタで動作する全IPアドレスで利用できる必要があるような,汎用的なTCPサービスならば,(tcp, 1234) のよう書くことができます。

当分の間Flockerは,FigDeis,あるいはPanamaxといった,Dockerエコシステムの他の部分とはうまく動作しない。多くのユーティリティがさほど重要ではないステートレスシステム用の機能提供に留まる中,堅牢な状態管理コンテナを提供するFlockerは,他のプロジェクトにとっても魅力的なインテグレーション対象になる可能性がある。Flockerはまた,能力管理上の理由や,緊急を要しない既知の障害などに関連した,計画的マイグレーションにのみ対応する。ClusterHQチームがこれまで,ホスティングプロバイダ向けのフォールトトレラントシステムのインフラストラクチャを提供していたことを考えれば,同じような機能をFlocker (あるいはFlockerをベースとした有償システム)に求めるのは理にかなったことだ。実際にロードマップには,"連続レプリケーションとフェールオーバの自動設定"という項目がある。

Flockerを試したい開発者は,"Getting Started Guide"に従ってみるとよいだろう。MongoDBとPostgreSQLを使用するFlockerのデモを,VagrantとVirtualBoxによるVMで実行する手順が説明されている。Marsdenが先日のEdinburgh Docker Meetupで行ったプレゼンテーション"Data focused Docker clustering"の内容も,YouTube上で見ることができる。

この記事に星をつける

おすすめ度
スタイル

BT