運用が楽になる分散データベース Riak
-
Upload
takahiko-sato -
Category
Technology
-
view
20.693 -
download
5
description
Transcript of 運用が楽になる分散データベース Riak
運用が楽になる 分散データベース Riak
Bashoジャパン株式会社 Software Engineer
佐藤貴彦 2013/07/31 BPStudy#71
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
自己紹介 • 佐藤貴彦
• 2013年7月より Basho ジャパン株式会社
• 前職も製品ベンダーで、RDBMSや分散キャッシュ製品を中心とした、コンサルティングを担当
• インフラ大好き
• 著書(共著)
• 絵で見てわかるITインフラの仕組み
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Basho Technologies, Inc • 設立:2008年1月設立
• 本社:マサチューセッツ州ケンブリッジ
• 製品
• 分散データベース Riak
• 分散型クラウドストレージ RiakCS
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
オープンソース版
エンタープライズ版 ・複数クラスター間レプリケーション ・SNMP / JMXサポート ・Bashoのエンジニアによるサポート
Riak と Riak CS
分散型クラウドストレージ 分散データベース
+
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
理想のシステム
「どんな故障が起こっても
データを常に整合させつつ
サービスも止まることはない
システム」
は存在しません = CAP定理
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakの設計ポリシー • Amazon Dynamo論文をベースに設計された分散KVS
• 以下に重点を置いている
• 可用性(Availability)
• 耐障害性(Fault-tolerance)
• 運用の容易性(Operational simplicity)
• スケーラビリティ(Scalability)
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Dynamo 論文より • Dynamo: Amazon’s Highly Available Key-value Store
• 可用性第一:常に書き込みができること → 書き込み時ではなく、読み込み時に整合性チェック → 例:ECサイトで常にショッピングカートを動かしたい
• 一貫性の考え方:Eventual Consistency → AP優先だが、チューニング可能
• レイテンシの考え方: → 99.9パーセンタイルの応答を一定時間内に返す
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakは Erlang/OTP上で動作 • クラスタリングやノード間のメッセージングなどは、
Erlang/OTPにまかせている
• Erlang/OTPとは?
• 元々はエリクソン社が電話交換機プログラムのために開発。 「分散環境」「耐障害性」「無停止動作」を目的とした システムを構築できるように設計されている。
Riakを使ったシステムもこの恩恵を享受できる
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riak概要
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
RiakはRDBではなくKVS • Riakは永続性を持ったキーバリューストア
• Key と Value ペアで、データを Bucket に格納する
• バイナリで格納するため、文字列、画像、あらゆるデータを格納可能
11
Key Value
• ID: 0001 • Name: Basho • Product: Riak • Logo:
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
RiakのデータとRDBのデータ比較
12
RDBのデータ構造 Riakのデータ構造
Key/Value
Bucket
Key Value
Record(行)
Table (表)
PK
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakノードとは • 1つのRiakノードは、OSプロセス上は1つのErlangプロセス
• 1つの物理サーバーにつき、1Riakノードを起動
• GCを気にして複数プロセスに分けるといった必要はない
ノード1 ノード2
物理サーバー1 物理サーバー2
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
• データは Riak によって自動的に分散配置される
• ユーザーはデータがどこにあるかを意識する必要はない
データの自動分散配置
サーバー何台あっても���気にならないよ!
14
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
自動クラスタリング • クラスタの参加離脱(サーバーの追加削除)はコマンド
を実行すればあとは自動的に行われる
• すべてのサーバーは対等な関係(マスターレス)であり 単一障害点(SPOF)が無い
15
クラスタに 参加させて! 僕らは皆対等な
関係です!
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
データの自動再配置 • サーバー追加時などは自動でデータの再配置が行われる
16
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
• データの更新時は、異なるRiakノードに自動複製される
• デフォルト設定では3つのサーバーにデータを保存
• つまり2重障害(ディスク障害)でもデータが失われない
データの自動レプリケーション
1 2 3
更新
17
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
• アクセスできないサーバーへの問い合わせはスキップ
• 一時的に他のサーバーが受け持つ
故障ノードの自動回避
しばらく代理を引き受けます 更新
18
1 2 3
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
• 障害などで失われたデータの複製は自動復旧される
データの自動復旧
19
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
クラスタ間自動レプリケーション • 複数のRiakクラスタ間でデータのレプリケーション
• DRサイトの作成を実現
• Riak の Enterprise版でのみ提供
関東クラスタ 関西クラスタ(DRサイト)
20
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
つまり
もし夜中にノードが落ちたら? 夜はゆっくり寝て、翌朝対応!
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riak 詳細
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
仮想ノード(vnode) • Riakノードの内部はさらにvnodeと呼ばれる仮想ノード
• 実際のデータは、Keyから計算されたハッシュ値により処理されるvnodeが決定される
vnode
vnode
vnode
vnode
vnode
vnode
vnode
vnode
Riakノード(OSプロセス)
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
仮想ノード(vnode)のデータ • vnode内のデータはファイルシステム上に保存される
• vnodeと同じ数だけ各ノードに配置される
node1 node2 node3 node4
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
1つのパーティションを 1つのvnodeが担当
Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算
02 - 1 160
160bitのハッシュ空間を、P個の パーティション(範囲)に分解
vnode
この範囲のデータは 僕が担当します。
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
1つのパーティションを 1つのvnodeが担当
Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算
例)P=32 の場合���32個のパーティションを32個のvnodeで配分
160bitのハッシュ空間を、P個の パーティション(範囲)に分解
Ring
vnode
この範囲のデータは 僕が担当します。
02 - 1 160
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakにおける仮想ノードとRing hash(bucket/key) から160bitのハッシュ値を計算
vnode
この範囲のデータは 僕が担当します。
160bitのハッシュ空間を、P個の パーティション(範囲)に分解
Ring
1つのパーティションを 1つのvnodeが担当
node3
node2
node1
node4
02 - 1 160
例)P=32, 4ノードの場合���32個のパーティションを32個のvnodeで配分し、 4つのRiakノードで配分。
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakにおける正常時の挙動
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
書き込み(put)時の挙動 • Riakノードにデータがputされるとき、
N個の複製を生成する(default N=3)。
• 複製は隣接するvnodeに保存される。 (隣接するvnodeは必ず異なるRiakノード上にある) → 物理ノード障害に対応
• W個の保存に成功した時点でクライアントに応答を返す。(default W=2)
• すべてのノードの応答を待たない。これはレイテンシを短くするため。
RiakClient
node3
node2
node1
node4
put
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
読み込み(get)時の挙動 • Riakノードからデータをgetする
とき、R個のノードが応答を返した次点で、クライアントに返す(default R=2)
RiakClient
node3
node2
node1
node4
get
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
レプリカの整合性を保つ Quorum-based Protocol
• put/getや、put/putの競合が発生しても以下の条件を満たせば競合を解決できる
• W+R > N → put/getが競合しても、get側は必ず最新のオブジェクトを得られる
• W > N/2 → put/putが競合しても、衝突を知ることができる。
• Riakのデフォルト値は N=3, W=2, R=2
• あとはオブジェクトの時間を比較可能
RiakClient
node3
node2
node1
node4
RiakClient
put get
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
整合性を保てる例保てない例
• N=4, W=3, R=2 の場合 W+R > N , W > N/2 を満たす
• N=3, W=3, R=1 の場合 W+R > N , W > N/2 を満たす
put
get
put
get
old new
• N=3, W=2, R=1 の場合 W+R > N を満たしていない
put
get 古いデータを読んでしまうかも
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
オブジェクトの内部時計 Vector Clocks
• 競合が発生した場合、最新オブジェクトを得るには、どのオブジェクトが最新かを比較する必要がある → オブジェクトのバージョン管理
• 各オブジェクトは「誰」が「いつ」更新したを記録する、オブジェクトの世界における時計 Vector Clocks を持っている。
• オブジェクトの系譜をたどれる
RiakClient
node3
node2
node1
node4
RiakClient
過去 現在
put get
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
put時の競合の解決は? LWWとSiblings
• put/putの競合が起こった場合、Vector Clocks で新旧判断がつくなら、新しい方を残す。判断がつかない場合は?
• Last Write Wins → 後から処理された方を残す。
• Siblings Vector Clocksからは、新旧判断がつかないオブジェクトは、両方共残す。
RiakClient
node3
node2
node1
node4
RiakClient
事実はなかったことに…
put put
どちらも最新バージョン
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakにおける障害時の挙動
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
ノード障害時の書き込み挙動 Hinted Handoff
• ノード障害が発生して書き込みができない場合、一時的に次のノードに書き込みに行く。この動作を Handoff と呼ぶ。
• PUT,GET,DELETEリクエストは、フォールバックノードに転送。
put
RiakClient
node3
node2
node1
node4
フォールバックノードに レプリカが保存される
障害中・・・
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
ノード復旧時の書き込み挙動 Hinted Handoff
• 障害ノードが復帰した場合、フォールバックノードから、あずかっていたオブジェクトを受け取る。
node3
node2
node1
node4
復旧しました
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
障害から復旧しなかったら? Read Repair
• 保存データの部分消失があった場合 get時に気がつくことができる。
• 再度複製を生成。
• vnode間でオブジェクトの最新バージョンを維持しようとする。
node3
node2
node1
node4
RiakClient
get
レプリカ足りない…?
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
自動修復機能 Active Anti-Entropy
• データの複製が失われた状態を、実際にgetするまで気がつけないことは危険。
• AAE機能により定期的に自動修復
• vnode単位でデータのハッシュツリーを持っている。定期的にハッシュ値の比較を行うことで、データ複製間の不整合を検知し、Read Repairを行う。
node3
node2
node1
node4
このvnodeのハッシュだけ 一致しないぞ・・・?
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakデータアクセス
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riakのデータ問い合わせの種類 • Key/Valueの読み書き
• セカンダリインデックス(2i)によるタグ付け
• MapReduceによる分散処理(複雑なクエリ)
• 全文検索
41
get
tagA tagB
put
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
DEMO
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
RiakCS ちょっとだけ
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riak CS の特徴 • Riak CS は「分散」オブジェクトストレージ
• Riakをベースに作られており、Riakの持つ拡張性、可用性、耐障害性、運用容易性をそのまま受け継いでいる
• Amazon S3 互換のAPI(NFS、CIFSなどのAPIは持たない)
• Riak CS を使うことで、Amazon S3 互換のクラウドを構築できる
44
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riak 上に作られた Riak CS
45
1MB単位に分割してRiakへ
高可用性があって 拡張できる大きなストレージとして使えます
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
まとめ
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
まとめ
もし夜中にノードが落ちたら? ゆっくり寝て翌朝対応できる。 運用が楽になる分散データベース ���
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Use Cases / Customers
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Riak/Riak CS 適用業界の例 • 小売業(ECサイト)
• 医療
• 広告 / マーケティング
• モバイルサービス
• ゲーム
• メディア
• ソーシャルネットワーク
• 課金 / 支払い
• セキュリティ
• クラウドサービス
大量データの保存が必要な場合はもちろん、非常に高い可用性や耐障害性を求めて弊社製品を使って頂いております!
49
©2013 BASHO TECHNOLOGIES INC. ALL RIGHTS RESERVED.
Basho ユーザー
50