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