「オブジェクトストレージ、プライベートで効果的な運用2態」

掲載者: CUPA総合アドバイザー 森 洋一

Web時代にオブジェクトストレージは欠かせない。AWS S3やGoogle Cloud Storage、Microsoft Azure Storageなどパブリックなものが有名だが、企業向けのプライベート利用には運用管理システムがポイントだ。そこで本項ではストレージと運用管理をセットで提供するSwiftStackとBashoについて解説する。

1) OpenStack Swiftを使いこなす、SwiftStack !

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

=念のため、Swiftとは=

念のため、Swiftについて纏めておこう。SwiftはAWS S3やRackSpace 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をラックや電源系統、できれば地理的に分離させて複製を置くもので、これによって障害対策を確実にする。

20140610_mori_1

=RackSpaceという会社=

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

=SwiftStackとは何か=

20140610_mori_2

SwiftStackの創業は2011年。創業者はCEOのJoe Amold氏を中心に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のインストールが始まる。

20140610_mori_3

インストールが済んで、使い始めて解る最大の特徴は、パーフェクトなコンソール機能である。OpenStack自身にもダッシュボードはあるが、これはOpenStack全体を見るためのものだ。正確なストレージノードの運用管理には詳細な情報が欠かせない。マルチノード構成の利用状況(アクセス/負荷)、障害対策のためのアラートやトラブル対応、各種システム統計、キャパシティープランニング用レポートなど、これら全てがリアルタイムでビジュアル表示される。これらの情報はストレージノード側にインストールされたRuntimeから送られたものだ。各ノードにはMonitoring Agentが搭載され、これがノード側の詳細情報を収集してコントローラに送り出す。またノードにはLDAPと連携した認証や負荷分散のためのLoad Blancerも搭載されている。SwiftStackのコンソールは、通常オンプレミスとして利用されるが、必要があれば、Firewallの外側で彼らがホスティングすることも可能である。

20140610_mori_4

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

2) BashoのRiakとは何か?   

20140610_mori_5

次に取り上げるのは、風変わりな名前のスタートアップBasho Technologies。この名前は創業者のひとりが俳句に造詣が深く、それで芭蕉(Basho)にしたと聞く。ちなみにHaikuは今やそのまま英語としてで通じるほど人気は高い。クラウドの世界でも、Hero(ヒーロー)とHaiku(俳句)をもじったHerokuという社名のプロバイダがあるし、前Sun CEOだったJonathoan Shuwartz氏も英語の俳句を作っていた。さてBashoだが、2008年、同じボストンに本拠をもつAkamaiのエンジニア達が興した会社である。彼らが試みたのはAmazonが出したDynamoに関する論文の製品化だ。目指すはエンタープライズには欠かせない耐障害性と無停止運転である。

=4つのRiak製品=

20140610_mori_6

Bashoの開発したオブジェクトストレージがRiakである。Bashoの開発チームはRiakを分散環境に適合させて、その上で高信頼データベース化を追及した。彼らの製品は4つある。まず、元祖オープンソースのRiak。勿論、無償で利用でき、1クラスタ構成となる。ここで言うクラスタ(後述)とは1つのデータセンタと考えても良い。次に有償版のRiak Enterprise。これにはマルチクラスタ間(マルチデータセンタ間)のレプリケーション構築と24×7のサポートサービスが付いている。この異なるセンタ(クラスタ)間でのレプリケーションは高可用性を追求するRaikの大きな特徴だ。さらに、AWS S3互換のRiakをベースとしたRiak CS(Cloud Storage)。これにも無償シングルクラスタ版と前述のマルチ機能(レプリケーション)でサポート付きの有償版(Riak CS Enterprise)がある。このRiak CSを利用すれば、S3で作られたアプリケーションの移行が出来るし、同じインターフェースのオンプレミスやクラウドアプリケーションを作ることも可能だ。CSはまた、マルチテナントでもあるため、プロバイダーや大企業での採用が多い。

=Riakの仕組み=

さて、基本となるRiakの仕組みを見ていこう。まずRiakは分散システムだと述べた。このランタイムは配備された幾つかのサーバーのErlang/OTP で稼動する。これらサーバーのひとつひとつをノードと言い、複数ノードからなるクラスタがRiakデータベースを構成する。クラスタ内では各ノードは平等なP2Pの関係にあり、新たにノードを参加されることも容易だ。蛇足だが、並列処理言語Erlangは開発元のエリクソン社のEricsson Languageが名前の由来だが、実際は、並列計算処理で重要な待ち行列理論の数学者Agner Erlangにちなんだものらしい。OTPはエリクソン社が電話交換機用に開発した分散環境のプラットフォームで、耐障害性や無停止運用に強い特性を持つ。Riakのデータ構造をもう少し詳しく見よう。Riakのデータ管理はKey-Value Store。個々のKey+Valueからなるデータはバケットに入れられ、分散環境の複数サーバー(クラスタ)のノードに保存される。バケットはKeyを分類するための名前空間で、Bucket/Keyからハッシュ関数で計算して、分散保存するノードを決める。実際の構造はもう少し細かく、各ノードは仮想ノード(vnode)に分割されて、ハッシュ値からvnodeが決められる。vnodeはさらに複数のPartitionに分けられており、分散をより確かなものにしている。次頁図のRingでは160bitのハッシュ空間をP=32個のPartitionで分け、同数のvnodeで配分している。この例では物理ノードは4つだ。

20140610_mori_7

=実際のI/Oと障害対策=

実際の読み書きはどうなるのだろうか。書き込み(Put)は、障害対策のため、異なる物理ノードの複数vnode(Default=3)に複製される。そして複製がW値(Default W=2)に達した時にアプリケーションに完了を返す。この例では3回の書き込み保存のうち2回が終われば成功だとみなす。読み込み(Get)も、事前に設定されているR値(Default=2)回の読み込みが出来るとアプリケーションにデータを戻す。このようにRiakは、データの自動複製、さらには障害vnodeの自動回避や自動復旧機能を用いながら、耐障害性について、完璧な対応をしている。また DRなど更なる障害対策のために、クラスター間でリプリケーションを行うことも可能である。下図はノードから見ることが出来るクラスター管理コンソールの画面例だ。ノードは親が無いP2Pなので、どのノードからも同じ画面が見れる。

20140610_mori_8

以上、見てきたようにRiakは耐障害性と運用の容易性にこだわった製品である。周知のように、AWSで提供される各種サービスは魅力的だが、一度それらを使って開発をすると、他システムへの移行は難しい。つまり、AWSは便利だがベンダロックインの側面もある。その意味でRiakおよびRiak CSの登場は、AWSの保守性をブレークスルーさせ、且つより高い信頼性をユーザにもたらす可能性を秘めている。Riakは既にFortune 50の25%に浸透していると聞く。