下記 URL の大雑把な意訳メモ
http://docs.basho.com/riak/latest/tutorials/System-Planning/
Backend
Riak で利用できるバックエンドストレージはそれぞれ長所と短所があります
どのバックエンドストレージが最適かは Choosing a Backend を参照してください
Capacity
Cuslter の Capacity を求めるには Cluster Capacity Planning を参照してください
Bitcask の Capacity を求めるには Bitcask Capacity Calculator を参照してください
Operating Systems
主流の Unix-like な OS を推奨します
Basho では、下記のディストリビューション用の Riak バイナリパッケージを提供します
- RedHat based: RHEL, CentOS, Fedora
- Debiab based: Debian, Ubuntu
- Solaris based: Sun Solaris, OpenSolaris
Software
Basho's Riak Packages を使用すれば、追加で必要となるソフトウェアはほとんどありません
もし Riak をソースからビルドする場合は、Erlang をインストールする必要があります
Erlang をインストールするには Installing Erlang を参照してください
Hardware
Riak はスケールアウトするように設計されています
より高いスペックのハードウェアを利用し、ノードを追加することでパフォーマンスが改善されます
推奨するハードウェア構成を下記に記載します
- Multi-core 64-bit CPU
- Minimum 4 GB RAM
- Multiple Fast Hard Disks (RAID and/or SSD)
- Fast Network (Gigabit +)
Riak は Erlang で実装されているため、マルチコアを利用した並列化によってパフォーマンスが改善します
Riak は 64-bit アーキテクチャ環境において、より効率的に処理されます
不十分な RAM はスワップを増加させ、パフォーマンスを劣化させます
メモリーとディスクの使い方に関する詳細な情報は Cluster Capacity Planning を参照してください
Riak の多くのオペレーションは I/O がボトルネックになるため、高速なディスクが重要となります
ディスクの構成を RAID0 にすることよって read/write のパフォーマンスを改善するでしょう
Riak はオペレーションやアルゴリズム (ring-state goosip, handoff ..etc) で大量のトラフィックが発生します
各ノード同士の接続と、Cluster とクライアントの接続の高速化によってパフォーマンスが改善します
Virtualization
ほとんどのデータストアのように、Riak も仮想サーバ上で動作させると遅くなります
仮想サーバは、環境によって I/O やネットワークの影響を強く受け、パフォーマンス劣化を引き起こします
クラウドや VPS 上で Riak を動作させる推奨環境を下記に記載します
- 最も大きい VM を選ぶ
- 同じ DC または同じリビジョンを選ぶ
よりよりハードウェアはよりよりパフォーマンスを発揮します
最も大きい VM であれば、他の VM とリソースを共有する可能性が低くなります
いくつかのホスティング業者は、VM の拠点を選択できます
同じ DC または同じリビジョンにすることで、ネットワーク遅延を減らし、パフォーマンスを高めます
Network Configuration / Load Balancing
Riak Cluster への負荷を分散するための、主要な方法を下記に記載します
- virtual IPs
- reverse-proxy
VIP (実装はどれでも良い) を使用することを推奨します
Riak Cluster の全てのノードがクライアントからのリクエストを処理できるメリットを失うため、VIP のように振る舞う VRRP の使用は推奨しません
下記に挙げるような HTTP インターフェースを持った reverse-proxy は問題なく使用できます
- haproxy
- squid
- vernish
- nginx
- lighttp
- Apache