狠狠撸

狠狠撸Share a Scribd company logo
Rapid Rebalance
Aerospike v3.8.3
2016/08/02
Aerospike Meetup #4 in Tokyo
上原 誠
Web系企業で
AerospikeとかCassandraとかクラウドとかHadoopとかやってました
今日は日本のコミュニティ代表
上原 誠 (@pioho07)
ポケモントレーナーレベル:12
チーム:赤
マイグレーションのつらたん(??ω?`)
運用上必ずある”静的なコンフィグ変更”、”ASバージョンアップ”、”ノードメンテナ
ンス”で必ずマイグレーションは走ります
? マイグレーション中はレプリケーションファクタがマイナス1
? マイグレーションの時間が長い(3TBくらいだと20h超え)
? クラスタ内のノード全台にバージョンアップする場合、マイグレーション終了を
待つ必要があるので、所要時間は↑掛けるノード数(5台ノードクラスタだと1週間)
? マイグレーション速度のスレッド調整は手動
? マイグレーション中の負荷がサービスに若干影響出ることも
マイグレーションについては
今回説明しないのでこの辺見てね
Rapid Rebalance in v3.8.3 in June.
搁补辫颈诲っていい响じゃないか!
Intro
リンク切れやノード再起動のような、クラスタ構成の変更後に、
パーティションのリバランスや同期を行うプロセスをマイグ
レーションと言います。3.8.3から、このマイグレーションは、
従来のものに比べて、40倍の速度で行うことができるようにな
りました。システム運用チームは、アップグレードや静的設定
の変更等を非常に短時間で行うことができるようになります。
また、マイグレーション動作時のレイテンシへの影響を小さく
することができるようになりました。
Intro
? マイグレーションはリンク障害、ノードリスタート時のリバ
ランスと同期プロセス
? EEのv3.8.3ではこのマイグレーションが40倍速くなった
※新規ノード追加とかフォーマットされたノード追加、また多
分ノード削除時もRapid対象外。
つまりメンテナンスや障害によるプロセスのリスタートやネッ
トワークの瞬断のような一時的な状況をRapid Rebalanceは想定
している。
要約
High-Level Design
移行データの受信側から送信側にパーティション内のデータの
メタデータをdigestの順番で送信し、送信側では、自分側のパー
ティション内のデータと比較し、どのデータを送るのかの判断
をします。この判断には、conflict resolution(競合回避)を使
い、送信側が勝ったデータのみを受信側に送信します。
High-Level Design
? 受信側から送信側にパーティションのメタデータを送る。
? 送信側でデータを比較し送る必要があるデータを判断し送る。
この判断にはgenerationかlast-update-timeのいずれかを使っ
て判定する。
要約
Challenges
3つあります。
①マイグレーションはfabric層の上で動作し、これは、メッセー
ジの順番を変える可能性があります。そのため、メタデータを
順番通りに送ることは難題で、今回、シーケンス番号を付加す
ることにしました。送信側が一つ前のシーケンス番号をackした
場合のみ、受信側から次の番号のものを送り、送信側は最終番
号を管理することになっています。もし、小さな番号を受け
取った場合、ackを返しますが、処理は行いません。これにより、
メッセージは順番通りに到着することになります。タイムアウ
トや再送信の場合、メッセージは、順番通り、かつ、一回しか
処理されません。
Challenges
②受信側から送信側にメタデータを送る際に、一つ一つのレ
コードのメタデータを送ると非常に遅くなるため、このメタ
データを128KBの固まり(以下、バッチ)にして送ることにし
ました。
Challenges
③いつでも、このメタデータを送る方法が速い訳ではありませ
ん。送信側のデータが非常に少ない場合、受信側のメタデータ
を送ることの方が、送信側の全てのデータをそのまま送ること
よりもコストがかかる可能性もあります。そこで、平均として、
メタデータの1つのバッチで、1つのみのレコードを送るような
パーティションには、このRRを適用しない(従来と同じによう
に、すべてのデータを送る)ことにしました。
Challneges
? ①メタデータを順番通り送るためシーケンス番号を付加しま
した。送信側が1つ前のackを確認してから次のバッチを受け
取る。最終番号を管理してる。もし若い番号を受け取っても
処理しない。
? ②メタデータをレコード単位ではなく128KB単位(バッチ)で送
る
? ③データ量によってはメタデータのやりとりのコストが大き
くなるので、RRを使わず従来の方法で送る場合もある
要約
Implementation
① 送信側から受信側に、開始メッセージ(RRをサポートしている
こととそのパーティション内のデータ数を含む)を送る。
② 受信側は、(Challenge③)を考慮して、RRを使うか否かのackを返
します。
③ 受信側がRRを利用する場合、メタデータのバッチを生成するた
めのproducerとconsumerのスレッドを立てます。
④ producerスレッドは、対象のパーティション内のデータをス
キャンし、メタデータ?バッチを作成し、キューに入れます。
Implementation
⑤ consumerスレッドは、キューからバッチを取りだし、シーケンス番
号を付けて、送信側に送ります。consumerは、受信側からackが返って
くるまでは、次のバッチの処理を開始しません。
⑥ 並行して、送信側は、受信側がRRをサポートしているかを含んだ開
始メッセージを受け取り、マイグレーションのためのデータのスキャン
を開始します。RRがサポートされている場合、メタデータ?キューを
ブロックします(ここちょっと詳細不明、1つづつ処理する為?でも
キューでしょ?)。
⑦ 送信側が受信側からのバッチを受け取った後、それをローカルの
キューに入れ、受信側にackを返します。
⑧. 送信側では、バッチの内容を調べ、受信側に送るデータの判断をし
ます。
Implementation
? ①~⑧あとでお読みください。。要約
Conclusion
運用者にとり、RRを利用することで、サーバのアップグレード
や静的設定の変更等の際のマイグレーションを日単位から分単
位に短縮することが可能になります。
Conclusion
? 運用者はハッピーになるでしょう要約
検証環境
? Aerospike Server Spec
Aerospike Server x3, Replication Factor 2
OS CentOS6,
m3.xlarge,
SSD 100GB x3, IOPS 3000
SSD Capacity 900GB(HWM 50%)
MEM Capacity 42GB(HWM 60%)
Before Binary:aerospike-server-community-3.6.3-el6
After Binary:aerospike-server-enterprise-3.8.4-el6
検証環境
? Client
Java Client Library 3.2.4
? Aerospike Management Console 3.6.9
aerospike-amc-enterprise-3.6.9-el6.x86_64.rpm
旧バージョンで試す
※データやスペックなど環境によって結果は変わります。あしからず。
一例として参考にしてもらえればと。
./run_benchmarks -h xxx.xxx.xxx.xxx -p 3000 -n test -k 100000000 -l 30 -s 1 -o
S:1500 -w RU,0 -z 16
約1億件のデータでレプリ込で300GBの容量
1レコード1500byteでちょっとでかい。。
Let’s Try!
プロセスのリスタート実施
12時間くらいかかった。。
SSD本数とかIOPSとか低めにしてたのもあるかと
? 1台プロセスをリスタート。10:54
? 1時間15分くらいしてノードイン、12:16にクラスタイン
Versionup to v3.8.4
Versionup to v3.8.4
? 1台プロセスをリスタート。10:54
? 1時間15分くらいしてノードイン、12:16にクラスタイン
versionup to v3.8.4
? 1台プロセスをリスタート。10:54
? 1時間15分くらいしてノードイン、12:16にクラスタイン
新バージョンで試す
※データやスペックなど環境によって結果は変わります。あしからず。
一例として参考にしてもらえればと。
Let’s Try!
バージョンアップ後、プロセスのリスタート実施(データはそのまま同じ)。
ノードのクラスタイン確認。02:42:26
Let’s Try!
バージョンアップ後同じデータに対してプロセスのリスタート実施
Mean of Partitions log
absent: Number of partitions not owned by this node
sync: Number of non-master partitions owned by this node
actual: Number of master partitions owned by this node
actual + sync + absent = 4096 partitions for the namespace
マイグレーション完了确认。02:43:39
1分13秒
40倍どころじゃないけど
600倍近い??
READ/WRITEしながらマイグレーション
してなかった、、(??ω?`)
WRITE: 20000TPSくらい
READ: 2000TPSくらい
5分プロセス落としてから起動する
ノードクラスタイン确认。03:01:32
マイグレーション完了确认。03:17:39
16分07秒
44倍!
ほう!!
サーバー側負荷こんな感じ
No Migration
Migration
※ちなみにノードのクラスタアウトもテストしましたがRRのような速度は出ていません。
正確な値を出す時間はありませんでしたがRR適用外確定です。そりゃそうだね。
まさかのドキュメント通り早い
今回の定常的に数万レベルのWRTEされてる
状態もAerospikeのワークロードケースとして
ベターじゃないかな
Rapid Rebalanceの処理フローを絵
にしてますが、この感性は日本人
にはないなぁ??
はい、地味な機能ですよね。
地味だけれども運用する人にとったら
これはうれしい
私は運用してたらほんとうれしい
Rapid Rebalance so good!
But this is the Enterprise Edition functionality.
Mr. Braian
Please also add in a Community Edition.
Thankyou very match
今日はこれを言いに来ました
ご清聴ありがとうございました
Ad

Recommended

組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
?
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
?
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
?
マネージャーやコンポーネントのコンポジット化
マネージャーやコンポーネントのコンポジット化
openrtm
?
Software forwarding path
Software forwarding path
Tomofumi Hayashi
?
some topic of ffmpeg
some topic of ffmpeg
Tetsuyuki Kobayashi
?
Aerospike deep dive migration
Aerospike deep dive migration
Makoto Uehara
?
Streaming tuning test
Streaming tuning test
Makoto Uehara
?
Aerospike 02 監視
Aerospike 02 監視
Makoto Uehara
?
NoSQL in Real-time Architectures
NoSQL in Real-time Architectures
Ronen Botzer
?
Aerospike Architecture
Aerospike Architecture
Peter Milne
?
Aws st 20130522-piop_sbench
Aws st 20130522-piop_sbench
Makoto Uehara
?
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
Takayuki Enomoto
?
Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)
Sayyaparaju Sunil
?
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
Makoto Uehara
?
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
Makoto Uehara
?
Introduction to Redis - LA Hacker News
Introduction to Redis - LA Hacker News
Michael Parker
?
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Masaki Toyoshima
?
狈补尘别苍辞诲别贬础导入背景と运用状况
狈补尘别苍辞诲别贬础导入背景と运用状况
Makoto Uehara
?
ansible 社内お勉強会資料
ansible 社内お勉強会資料
Makoto Uehara
?
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
?
サービスを成长させる為の开発について
サービスを成长させる為の开発について
tatsuya mazaki
?
闯补惫补辞苍别报告会
闯补惫补辞苍别报告会
Munenori Hirakawa
?
いままで使ってきた携帯电话
いままで使ってきた携帯电话
Ippei Ogiwara
?
贬补诲辞辞辫の绍介
贬补诲辞辞辫の绍介
bigt23
?
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
?
AutoScaling & SpotInstance Handson
AutoScaling & SpotInstance Handson
Makoto Uehara
?
aerospike on aws
aerospike on aws
Makoto Uehara
?

More Related Content

Viewers also liked (20)

Aerospike 02 監視
Aerospike 02 監視
Makoto Uehara
?
NoSQL in Real-time Architectures
NoSQL in Real-time Architectures
Ronen Botzer
?
Aerospike Architecture
Aerospike Architecture
Peter Milne
?
Aws st 20130522-piop_sbench
Aws st 20130522-piop_sbench
Makoto Uehara
?
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
Takayuki Enomoto
?
Aerospike & GCE (LSPE Talk)
Aerospike & GCE (LSPE Talk)
Sayyaparaju Sunil
?
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
Makoto Uehara
?
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
Makoto Uehara
?
Introduction to Redis - LA Hacker News
Introduction to Redis - LA Hacker News
Michael Parker
?
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Masaki Toyoshima
?
狈补尘别苍辞诲别贬础导入背景と运用状况
狈补尘别苍辞诲别贬础导入背景と运用状况
Makoto Uehara
?
ansible 社内お勉強会資料
ansible 社内お勉強会資料
Makoto Uehara
?
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
?
サービスを成长させる為の开発について
サービスを成长させる為の开発について
tatsuya mazaki
?
闯补惫补辞苍别报告会
闯补惫补辞苍别报告会
Munenori Hirakawa
?
いままで使ってきた携帯电话
いままで使ってきた携帯电话
Ippei Ogiwara
?
贬补诲辞辞辫の绍介
贬补诲辞辞辫の绍介
bigt23
?
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
?
NoSQL in Real-time Architectures
NoSQL in Real-time Architectures
Ronen Botzer
?
Aerospike Architecture
Aerospike Architecture
Peter Milne
?
Aws st 20130522-piop_sbench
Aws st 20130522-piop_sbench
Makoto Uehara
?
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
AWSと色の話 - JAWS-UG中央線 第5回勉強会 LT
Takayuki Enomoto
?
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
とある碍痴厂を础耻迟辞蝉肠补濒颈苍驳してみる
Makoto Uehara
?
Aerospike xdr (Cross Datacenter Replication)
Aerospike xdr (Cross Datacenter Replication)
Makoto Uehara
?
Introduction to Redis - LA Hacker News
Introduction to Redis - LA Hacker News
Michael Parker
?
狈补尘别苍辞诲别贬础导入背景と运用状况
狈补尘别苍辞诲别贬础导入背景と运用状况
Makoto Uehara
?
ansible 社内お勉強会資料
ansible 社内お勉強会資料
Makoto Uehara
?
20131209_buildinsidermeetup
20131209_buildinsidermeetup
kumake
?
サービスを成长させる為の开発について
サービスを成长させる為の开発について
tatsuya mazaki
?
いままで使ってきた携帯电话
いままで使ってきた携帯电话
Ippei Ogiwara
?
贬补诲辞辞辫の绍介
贬补诲辞辞辫の绍介
bigt23
?
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
?

More from Makoto Uehara (6)

AutoScaling & SpotInstance Handson
AutoScaling & SpotInstance Handson
Makoto Uehara
?
aerospike on aws
aerospike on aws
Makoto Uehara
?
20170803 bigdataevent
20170803 bigdataevent
Makoto Uehara
?
Ecs words
Ecs words
Makoto Uehara
?
Gcpug tokyo february 2016
Gcpug tokyo february 2016
Makoto Uehara
?
Aws st 20130617-auto_scaling
Aws st 20130617-auto_scaling
Makoto Uehara
?
Ad

Aerospike Rapid Rebalance