RiakCSの運用とか (1)
それは半年くらい前のある日のこと。
突然開発マネージャーに呼び出され
- マネージャ「1ファイルあたり1GiBくらい配信できるファイルサーバを作ってくれ。1ユーザさんあたり5GiBくらいまで使えるようにしたい。納期は2週間くらいで頼むよ。」
- 私「S3とか使っちゃダメなんですかね...(白目)」
- マネージャ「オンプレミスでよろしく。」
- 私「無茶言わないでくださいよぉ!」
- マネージャ「じゃあ、あとよろしく。」
みたいなことを言われ、2週間でファイル配信の仕組みを用意しなければならなくなったので、何がいいのかなー、glusterfsとかどうなんかなー、S3使いたかったなー、そういえばRiakCSってS3っぽいAPIを備えてるんだっけか、みたいなことを考えて、RiakCSを検証、導入することにしてみました。割とタイトなスケジュールでしたが、何とかできたので、構築から運用まで何回かにわけてざっくりとまとめてみます。
Riak, RiakCSとは
RiakはErlangで実装されたオープンソースの分散データベース。 いい感じにクラスタを組んでくれてデータを分散してくれる。 RiakCSはRiakをバックエンドに使っているオープンソースのクラウドストレージ(CSっていうのはクラウドストレージのこと)。 プライベートクラウドを作ることもできて、今回開発から挙っていた要件ともマッチしていた。
RiakCSを使った理由
- Riakの持つ高可用性・耐障害性を活かせる
- 大きなファイルを扱うことができる
- S3互換API、認証の仕組みがある
- 比較的簡単にキャパシティを増やせる
当時開発で使っていたRubyのFogがRiakCSをサポートしていたので、開発環境からの移行が比較的簡単にできたのは嬉しい。 (開発チームも納期に追われていたので切り替えが簡単にできたのは大きい。) ユーザさんのデータのロストは避けなければならないので、高可用性・耐障害性はもちろん嬉しい。 ノードを増やしてキャパシティを増やせるのも今風な感じがして好印象。クラスタに突っ込んだらいい感じにファイルを配置してくれる。
ドキュメント
クイックスタートガイド (公式)
Ore no homepage
運用周りの情報がかなりしっかりまとめられていて心強い。 わざわざ自分でまとめなおさなくてもいいんじゃないかっていう気がしてくるけど、自分で運用をはじめる上で困ったこともあるので。
Scaling and Operating Riak Best Practices (公式)
ベストプラクティス。運用するときはこうするといいよっていう推奨構成。ディスクについてとか、RAIDについてとかノードを追加するのはどのあたりがいいかとか。
こっちのブログ記事はほぼこのベストプラクティスに基づいていていい感じ。
riak-admin Command Line (公式)
Riakノードの管理に使うコマンドのドキュメント。このコマンドにはかなりお世話になるのでよく読んでおきたい。
ノード数について
- http://basho.co.jp/why-your-riak-cluster-should-have-at-least-five-nodes/
- http://basho.co.jp/why-your-riak-cluster-should-have-at-least-five-nodes-2/
最低5ノードを推奨している。最低3ノードでも動かせるけど、本運用をするならいくらクラスタが小さくても5ノードで始めた方がいい。 ノードは物理マシンの台数と思っている。当たり前の話だけど別の物理マシンにしないとダウンした場合に複数のノードが落ちて不安定になる。 少なくとも5台の物理マシンが用意できないならRiakCSを運用するのは難しい、と思っている。
とりあえず書きはじめということでいったんこの辺までで。次回は環境構築周りをまとめたいと思う。