- LABO
SDSとownCloudを使ってAzure上にオンラインストレージを作ってみる

社内外とのデータのやり取りが増えている昨今、オンラインストレージを自前で構築したいという企業が増えてきています。DropboxやGoogle Drive等々オンラインストレージサービスは多々ありますが、そのバックエンドでは従来型ストレージではなく、IzumoFSのように汎用サーバを束ねたSDS型のストレージが稼働していると言われており、今回、IzumoFSとオープンソースのオンラインストレージ構築用アプリケーションであるownCloudを組み合わせて、可用性や拡張性が高いオンラインストレージを構築できるか実験してみました。今回の実験はマイクロソフトのAzure上にVMを用意して行っています。
システム構成

IzumoFSサーバ4台とownCloudサーバ1台を用意しました。仮想マシンのスペックはそれぞれ「Standard DS3 v2 (4 vcpus, 14GB)」であり、OSはCentOS 7.2を利用しています。
構築
VMの作成とインストール事前準備
5台分のVMの作成とIzumoFS用VMにパーティション設定などIzumoFSインストールの事前準備を行います。
作業時間:約40分

IzumoFSクラスタを3台構成で構築
今回は容量がすぐ足りなくなるように、実効容量を10GBになるようにしています。
作業時間:約10分

IzumoFSクラスタ上にNFS共有フォルダを作成
IzumoFSの管理画面で、プロトコルとしてNFSを選択して共有フォルダを作成するだけで、特別なゲートウェイなしにNFSを使うことができます。
作業時間:約1分

ownCloud用サーバにIzumoFSのNFS共有フォルダをマウントします。
作業時間:約1分
$ sudo yum install nfs-utils
$ sudo mkdir /mnt/shared_folder
$ sudo chmod 777 /mnt/shared_folder
$ sudo mount -t nfs <IzumoFSノード IPアドレス>:/izumofs-owncloud /mnt/shared_folder
ownCloudサーバを構築
- Apache httpd のインストール
- PHPのインストール
- MariaDBサーバーのインストール
- ownCloudのインストール
- ownCloud 用のユーザーとデータベースを MariaDB に登録
作業時間:約10分
ownCloudのデータフォルダとしてIzumoFS共有フォルダを指定
作業時間:約1分


ownCloudを使ってみる
Web画面からのファイルアップロード
600MBのファイルのアップロードが5分程度かかりましたが、クライアント側ネットワークがボトルネックになっている可能性があり、Azure上のownCloudサーバと同じローカルネットワーク内にWindowsクライアントをたてて、再度確認。600MBのファイルが数秒でアップロードが完了しました!

Desktop appでファイルアップロード
600MBのファイルのアップロード(データ同期)がWeb画面同様に5分程度で完了。Azure上のクライアントからアップロード(データ同期)すると、数秒で完了!


IzumoFSに分散保存されてます。

容量を拡張してみる
IzumoFSノード(IzumoFSがインストールされているサーバ)をストレージに追加することでownCloudを停止せずに容量の拡張を行ってみます。
ストレージの容量が足りず、ファイルがアップロードできません。

IzumoFS側からみても、容量に余裕がありません。

実効容量は10GBですが、10GB以上のファイルが保存されています。これはIzumoFSの重複排除機能によって重複するブロックが排除されているためです。

IzumoFSノードを1台追加して容量を拡張します。IzumoFS管理画面で、追加するノードのIPアドレスをリストから選択、または指定することで簡単にノード追加を行うことができます。

4台構成になり、容量が拡張されファイルのアップロードができるようになりました!

さいごに
IzumoFSとownCloudとの組み合わせでおよそ1時間程度でオンラインストレージが構築できました。容量の拡張もサービス停止なしで行うことができ、オンラインストレージサービスに近い可用性と拡張性を自前のサーバ上で実現できそうです。
IzumoFS側は複数台構成で、高い可用性が保証されていますが、今回、システム構成図に示した通り、ownCloud側サーバが1台構成の単一障害点となっています。owncloudサーバを増やすことで、全体としての可用性の向上は期待できます。ただし、この場合はサーバ台数が増えることでハードウェアコストも増えますし、IzumoFSと別々に可用性の維持等の保守を行う必要があるため、運用が煩雑になってしまうリスクがあります。
これらの問題を解決するアイデアとして、次回はサーバ台数を減らし、構成をシンプルにすることにより運用コストを減らすと同時にownCloudの冗長化を実現する、IzumoFSとownCloudを同じサーバに同居させるハイパーコンバージド構成でオンラインストレージを構築してみたいと思います。
※ この記事は実験を目的としており、動作を保証するものではありません。
※ IzumoFSは、IzumoBASEの登録商標です。
※ その他記載の会社名および商品名は、各社の商標または登録商標です。