Yahoo! JAPANにおけるApache Cassandraへの取り組み
-
Upload
yahoo -
Category
Technology
-
view
4.719 -
download
1
Transcript of Yahoo! JAPANにおけるApache Cassandraへの取り組み
自己紹介
• 鄭 中翔(てい ちゅうしょう) • 2013年新卒入社 – 社内向けプラットフォームの運用担当
• Cassandra歴1年5ヶ月 • twitter: @zx_zheng
2 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
発表内容
• KVSチームの紹介 • Yahoo! JAPANでのCassandra利用 • 運用のはなし • 学んだこと • まとめ
3 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
KVSチームの紹介
• ≒ Cassandraチーム
• Dev 3人, Ops は1人相当
• Yahoo! JAPANのサービスにCassandraを提供
5 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Why Cassandra
• 入社したらあった • 汎用的に使えるNoSQLのプラットフォームがなかった – 特定の目的に特化した分散データベース – 汎用的には使いづらい – 運用コスト、初期導入コストが高い
新しいNoSQLのプラットフォームが求められた 9
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Why Cassandra
• NoSQLプラットフォームに対する要求 – パフォーマンス – スケーラビリティ – 高い可用性 – 運用のしやすさ、導入のしやすさ
10 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
✔ 高いパフォーマンス ✔ 優れたスケーラビリティ ✔ SPOFが存在しない
11
Why Cassandra
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Yahoo! JAPANでのCassandra利用
12 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• httpインターフェース • サービス共有環境 • サービス専用環境
13
提供形態
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
運用環境 その1 2013年5月~ httpインターフェース提供開始
WebAPI
thrift
http etc..
Cassandra
最近1.1.5→1.2.15へのバージョンアップを実施 14
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
httpインターフェース
15 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• httpインターフェースを用意した理由 – CQL
• CQL2 は機能が不十分だった • CQL3 は beta だった(Ver. 1.1)
– Thrift • 実装コストが高い • サービスに使ってもらう際の障壁になる可能性がある
✔ httpインターフェース 簡単に使える!
httpインターフェース
✔ Cassandraに直接接続する選択肢も提供 16
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
• httpインターフェースの課題 – Cassandraの機能追加への対応コスト – パフォーマンスの低下
• Cassandraが使いやすくなった – CQL3 – 様々なドライバ
運用している環境 その2
Cassandra
2014年8月~ Cassandra共有環境 提供開始
Thrift, CQL3 etc…
17 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
運用している環境 その3
大規模サービス向けに専用環境も提供
etc…
Cassandra
なんとか
18
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Cassandra
Thrift, CQL3
Thrift, CQL3
運用中の環境
Cassandra version 1.2.15, 2.0.5, 2.0.10
Production clusters 9
Production nodes > 200"
Cluster size 6 ~ 40+"
Total read / write of peak" 75kqps / 30kqps
Data size about 1TB 19
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
0
1
2
3
4
5
6
7
8
9
10
2013/11月 2014/11月
クラスタ数
0
50
100
150
200
250
2013/11月 2014/11月
ノード数
5倍 9倍
0
20000
40000
60000
80000
100000
120000
2013/11月 2014/11月
リクエスト数/秒
20倍
© Aflo 20 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Hardware
• CPU – 8cores ~ 12cores
• Memory – 24GB or 64GB
• Disk – SAS 300GB * 4
• RAID 0 or RAID 10 – そろそろSSDも…
21 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Configuration
• Replication factor = 3 • Consistency level – 基本はQUORUM – サービスによって異なる
• vnode – 一部のクラスタで有効 – 40台クラスタでnum_tokens = 32
22 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Operations
• 監視 – Nagios – Graphite + Grafana
24 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Grafana
• イケてるUI • 導入が非常に容易 • 頻繁な機能追加
25 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Operations
• repair & compaction – cronで定期的に実施
• OpsCenter – 社内環境と相性(?)が合わず現在未使用 L – 導入に向けて再検証中
• 障害対応 – 独自Webツールから
26 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
障害対応ツール nodetoolコマンドの一部を実行可能 デモ
27 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Operations
• 定期的にチェックする項目 – リクエスト数 – Read/Write latency – Java heap使用率
• 1.1.5では時間経過とともに上昇し性能劣化 • 1.2系以降では安定しているように見える
– pending tasks – timeout数 – Disk busy – クライアントとのコネクション数
28 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
とある日の共有クラスタにおける クライアントとのコネクション数
Cassandraの再起動を実施
29 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
クライアントのバグでコネクション数が激増
注意していること
• 新サービスの利用開始時 – コネクション数が異常に増えていないか – リクエスト数が異常に増えていないか
• 99percentile latencyが悪化してないか – GC – Disk Busy – サービスごとの利用状態
30 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
nodetool cleanup is 大事
32 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
nodetool cleanup is 大事
nodetool cleanup … cleanup [keyspace][table] Triggers the immediate cleanup of keys no longer belonging to this node. This has roughly the same effect on a node that a major compaction does in terms of a temporary increase in disk space usage and an increase in disk I/O. Optionally takes a list of table names.
ノードの増減などによりtoken rangeに変更があった時に担当範囲外になったデータをcleanupによって削除します
33
✔
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
nodetool cleanupをしないとどうなりますか?
無駄なデータがノードに残り続けます。
34
nodetool cleanup is 大事
Q
A
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
無駄なデータがノードに残り続けて 最悪の場合削除したデータが復活します。
35
nodetool cleanup is 大事
A
nodetool cleanupをしないとどうなりますか?
無駄なデータがノードに残り続けます。
Q
A
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
前に削除したデータの一部が復活してるけど何かしました?
KVSチーム(ぼく達)
なにもしてませんが調べてみます
サービス担当者
• repairはちゃんと実行していたので当初原因不明 • 後にcleanupをしなかったことが原因だと判明
36
nodetool cleanup is 大事
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
37
nodetool cleanup is 大事
データ復活の順番 :データ
1. データが保存されている(RF=3) Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
38
nodetool cleanup is 大事
2. データを持っているノードをはずす
:データ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
39
nodetool cleanup is 大事
3. token range 変更によりデータも移動
:データ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
40
nodetool cleanup is 大事
4. はずしたノードを戻すと → になる 本来は を削除するためにcleanupを実施
:ゴミデータ
:データ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
41
nodetool cleanup is 大事
5. データ に削除リクエスト 担当範囲になっているノードのみに届く
delete
:ゴミデータ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
42
nodetool cleanup is 大事
6. しばらくするとデータが担当ノードから 実際に削除される は残ったままだが参照はできない
:データJ
:ゴミデータ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
43
nodetool cleanup is 大事
7. データを持っていたノードを再びはずす
:データJ
:ゴミデータ
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
44
nodetool cleanup is 大事
8. token range 変更 → に昇格しデータを参照可能になる
:データL
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
45
nodetool cleanup is 大事
9. repairにより全ノードにデータ復活
:データLLL
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ノードの増減時にcleanupをしないと忘れた頃に削除したデータが復活する
ことがあります
46
nodetool cleanup is 大事
Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
cleanupしましょう ちゃんとしているとは思いますが…
47 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
まとめ
• Yahoo! JAPANにおけるApache Cassandraの利用は爆速で拡大しています
• cleanupはちゃんとやりましょう • 運用は“わかっていれば”結構楽です – 普段の運用業務だけなら1,2人で回っています
49 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
今後の予定
• Cassadra2.1系の導入 • SSD検証、本番投入 • 1.2系→2.0系へのバージョンアップ • 今後も利用は拡大していきます – 大きい案件が複数進行中 – データ量が一気に増える予感
• DataStaxへの要望 – PHPのドライバをDataStaxで出してほしいなぁ
50 Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止