2014年3月12日水曜日

OpenStack Swiftを使いこなす、SwiftStack!-SDS8-

今回はOpenStack Swift(以下、Swift)を使ったプライベートクラウドストレージの普及を目指すSwiftStackについて追ってみよう。Swiftはオブジェクトストレージとして最も普及が進んでいるもののひとつだ。周知のように、OpenStackはシリコンバレーのNASA AmesRackSpaceが共同でスタートさせた画期的なプロジェクト。主な構成要素はComputeエンジンとなるNASA NebulaのNova、そしてストレージのエンジンSwiftの原型となったのはRackSpaceのCloud Filesだ。共にプロジェクトに寄贈されたものである。世界中で利用が進むOpenStackの中でも、Swiftは単独導入が出来る。SwiftStackはここに目を付け、その普及のための鍵となるプロダクトを開発した。

=念のため、Swiftとは=
念のため、Swiftについて纏めておこう。
SwiftはAWS S3RackSpace Cloud Files互換のREST APIでアクセスする。その構成はまず、①ユーザからのアクセスを振り分けるProxy Serverと ②ユーザ認証のAuthentication Serverがある。Proxyはユーザ認証後、必要に応じてAccount/Container/ObjectのServerと連携する。③Account Serverはユーザ情報と関連するコンテナーのマッピングを行い、④Container Serverはオブジェクトのリストを保持し、⑤実際のオブジェクトは複数あるObject Serverに分散保存される。分散配置の仕組みを理解するポイントはRingとZoneだ。Ringはアカウント毎にP個(Defaultは32)のパーティションに分割し、オブジェクトのハッシュ値を計算して、どのObject Serverに配置するかを決める。この際、保存オブジェクトは3つ(Default)の複製が作られる。もうひとつのポイントのZoneはObject Serverをラックや電源系統、できれば地理的に分離させて複製を置くもので、これによって障害対策を確実にする。

=RackSpaceという会社=
OpenStackの言い出しっぺのRackSpaceとはどんなスタートアップだろう。
一言で云えば、とても先見性のある会社だ。1996年、ISPとして創業した当時の社名はCymitar Network Systemsだった。その後、1998年、ホスティングも手がけるようになって現社名RackSpaceに変更した。創業者のRichard Yoo氏は時代を読んでいた。これからは単なる企業アプリケーションのホスティングだけではなく、映像や音楽などのストリーミングが重要となる。そして2002年、社内のグループをスピンアウトさせたのがServerBeach (現Peer1傘下)だ。時代は彼の読みどおりに推移し、2005年、YouTube が登場した。この設立2年に満たない急成長スタートアップをGoogleが$1.65B(1,650億円)で買収した話はあまりに有名だが、ServerBeachがビデオホスティングを担当していたことは知られていない。つまり、この時代からRackSpaceはオブジェクトストレージの重要性を認識して、開発を進めていたのである。AWS(Amazon Web Services)が登場した2006年、同社も初期の実験クラウドサービスMossoをスタートさせた。ここで使われていたのがCloud Filesだ。そして時代が進み、2010年7月19日、NASA Amesと共にOpenStackをスタートさせた。この発表後、すぐに社内の精鋭エンジニアが集められSwiftの開発が始まった。このチームのPTL(Project Technical Lead)がJohn Dickinson氏である。


=SwiftStackとは何か=
SwiftStackの創業は2011年。創業者はCEOのJoe Arnold氏を中心にCOOのAnders Tjernlund氏、アーキテクトのDarrell Bishop氏の3人だ。2012年6月、RackSpaceから待望のJohn Dickinson氏がやってきた。年の若いJohnの肩書きはDirector of Technologyだが、実質はCTO、そしてSwiftを熟知した同社の表看板である。彼らの製品はSwiftを使い易くし、広めることである。Swift自体はいじらない。それはOpenStackの仕事だからだ。SwiftStackはWebインターフェースでSwiftノードのプロビジョニングや運用、管理機能を提供し、必要があればトレーニングやサポートも提供する。開発した製品の主なコンポーネントは2つ。前述のようにSwiftのストレージは複数のObject Server(以下、ノード)から構成される。それらにインストールするのがSwiftStack Runtime(下図右)、もうひとつはこれらノードのRunetimeを制御するSwiftStack Controller(下図左)だ。まず、出来れば占有できるサーバーにこのControllerをインストールし、次にObject ServerのノードにはRed Hat/CentOS/Ubuntuのどれかを用意してSwiftStackのコマンドセットをダウンロードする。これを実行すれば、そのノードには、自動的に最新版のSwiftとSwiftStack Runetimeのインストールが始まる。
インストールが済んで、使い出して解る最大の特徴は、パーフェクトなコンソール機能である。OpenStack自身にもダッシュボードはあるが、これはOpenStack全体を見るためのものだ。正確なストレージノードの運用管理には詳細な情報が欠かせない。マルチノード構成の利用状況(アクセス/負荷)、障害対策のためのアラートやトラブル対応、各種システム統計、キャパシティープランニング用レポートなど、これら全てがリアルタイムでビジュアル表示される。これらの情報はストレージノード側にインストールされたRuntimeから送られたものだ。各ノードにはMonitoring Agentが搭載され、これがノード側の詳細情報を収集してコントローラに送り出す。またノードにはLDAPと連携した認証や負荷分散のためのLoad Blancerも搭載されている。SwiftStackのコンソールは、通常オンプレミスとして利用されるが、必要があれば、Firewallの外側で彼らがホスティングすることも可能だ。ノードにはWebベースのDrag & Drop機能もある。これを使えばDropBoxGoogle Driveのように簡単にファイル管理が出来る。

以上見てきたように、SwiftStackを利用すれば、Swiftを使いこなし、プライベートなクラウドストレージの完全で容易な構築と運用が出来る。現代はWebアプリケーションが全盛の時代だ。そしてクラウドの普及と相まって、そのコンテンツを保存するオブジェクトストレージの需要は高い。狙いはエンタープライズ市場だ。