Last active
December 17, 2015 00:49
-
-
Save y-oda-oni-juba/5524170 to your computer and use it in GitHub Desktop.
クラスタ管理ツール調査(Cassandra)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
クラスタ管理ツール調査 | |
====================== | |
調査対象 | |
-------- | |
- Cassandra 1.2.4 | |
- 同 nodetool | |
- DataStax OpsCenter | |
調査結果 | |
-------- | |
提供機能 | |
~~~~~~~~ | |
============================= ==== ==== | |
ライフサイクル 提供 補足 | |
============================= ==== ==== | |
クラスタの設定 有 - GUIツール有(OpsCenter) | |
- もしくは 設定ファイルを事前に別途配布 | |
クラスタの起動 有 - 全ノードを順次起動 | |
- 前回起動時と設定が異なる場合、起動できない | |
- GUIツール有(OptsCenter) | |
クラスタの停止 有 - ノードごとにコマンドで停止実施 | |
- GUIツール有(OpsCenter) | |
- 停止だけではレンジの移譲は実施されない | |
クラスタの状態確認 有 - nodetool ring など | |
- ver1.2 から仮想ノードに対応したので、1物理ノードに | |
複数の仮想ノード存在 | |
============================= ==== ==== | |
ノード追加 有 - 動的追加可能。追加時自動的に負荷分散実施。 | |
- initial_token 未指定時、最も負荷が高いレンジを分割 | |
- GUIツール有(OpsCenter) | |
ノード削除 有 - 動的削除可能。 いくつかの削除方法あり: | |
+ decommision: 生きているノードに対して発行され、 | |
担当しているレンジのデータを他ノードに安全に移譲して | |
からノード削除 | |
+ removetoken: 死んでいるノードについて、 (その | |
ノードが担当していた)トークンを削除 | |
+ drain:あるノードを一時的に read-only にする | |
- GUIツール有(OpsCenter) | |
ノード移動 有 - 動的移動可能 | |
- GUIツール有(OpsCenter) | |
リバランス 有 - ノード移動を順次手動で実施することでリバランス | |
- vnode利用時は shuffle により仮想ノード再配置によりリバランス | |
- OpsCenter有償版では自動リバランス有り | |
============================= ==== ==== | |
スナップショットの採取 有 - ノード単位での snapshot。全ノードについてsnapshotを | |
実行することで、クラスタ全体での snapshot がとれる。 | |
- GUIツール有(OpsCenter) | |
スナップショットからの復元 有 - ファイルコピーによる手動操作。ノード単位でのrestore | |
- GUIツール有(OpsCenter) | |
============================= ==== ==== | |
ログ収集 有 log4j, JMX compliant, GUI有 | |
ログ監視 有 log4j, JMX compliant, GUI有 | |
============================= ==== ==== | |
状態確認可能項目 | |
~~~~~~~~~~~~~~~~ | |
+ ノード個別の情報 | |
nodetool info などによりノード個別の情報を取得 | |
================ ==== | |
項目 補足 | |
================ ==== | |
token | |
gossip 動作状況 | |
load disk 使用量 | |
generation ノード世代番号 | |
uptime | |
memory usage | |
rack/datacenter | |
例外 発生数 | |
================ ==== | |
+ リング情報 | |
nodetool ring などにより、クラスタの token ring 情報を取得 | |
=============== ==== | |
項目 補足 | |
=============== ==== | |
host | |
dataceter/rack | |
load | |
status up/down | |
state normal/boot/leaving/left/moving | |
token | |
=============== ==== | |
+ column family情報 | |
nodetool cfstats などにより、クラスタが保持する column familyの統計情報を | |
column familyごとに取得 | |
===================== ==== | |
項目 補足 | |
===================== ==== | |
SSTable 使用量 | |
memtable 使用量 | |
key cache 利用状況 | |
read/write 数 | |
read/write レイテンシ | |
pending 数 | |
row サイズ統計情報 | |
===================== ==== | |
column family 全体での統計情報も取得できる | |
===================== ==== | |
項目 補足 | |
===================== ==== | |
read/write 数 | |
read/write レイテンシ | |
pending 数 | |
===================== ==== | |
+ スレッド情報 | |
nodetool tpstats などにより、ステージとスレッド状態毎のスレッド数統計情報を取得 | |
======================= ==== | |
項目 補足 | |
======================= ==== | |
ステージ ReadStage, RequestResponseStage, MutationStage, | |
ReadRepairStage, ReplicateOnWriteStage, GossipStage, | |
AntiEntropyStage, MigrationStage, MemtablePostFlusher, | |
StreamStage, FlushWriter, MiscStage, AntiEntropySessions, | |
InternalResponseStage, HintedHandoff | |
スレッド状態 active/pending/completed/blocked/all time blocked | |
ドロップリクエスト数 RANGE_SLICE、READ_REPAIR, BINARY, READ, MUTATION, | |
REQUEST_RESPONSE | |
======================= ==== | |
+ 通信状況 | |
nodetool netstats などにより、ネットワーク通信状況を取得 | |
================= ==== | |
項目 補足 | |
================= ==== | |
ストリーミング状況 bootstrap/repair/move/decommission | |
リクエスト数 active/pending/completed | |
================= ==== | |
その他 | |
~~~~~~ | |
+ OpsCenter Enterpise Ed. | |
- アラート メール通知 | |
- 自動リバランス | |
- ソフトウェア更新通知 | |
etc... | |
+ パフォーマンスチューニングのためのストレスツール有り | |
- cassandra-stress(無償) | |
まとめ&感想 | |
~~~~~~~~~~~ | |
+ OpsCenter とセットで考えると、管理系は充実している | |
+ クラスタ全体のメンテナンス機能は Cassandra自体では提供していない。 | |
このあたりは OpsCenter で補完している | |
+ クラスタ構成の変更はオンラインで実施する。(例えば、ある時点のクラスタのスナップショットを | |
それとは異なる構成のクラスタに読み込ませる といったことは想定していない) | |
+ リバランスのための道具が標準でも用意されている | |
+ 監視機能が標準的なフレームワークに乗っかっているので既存の監視システムへの統合には便利かも | |
+ 各種 streaming などアプリからは見えない部分の負荷も確認できる | |
+ とにかく online | |
+ jubavisor/ctl 相当の機能 | |
→ Cassandra 自体では提供されていない。が、DataStax OpsCenter によって提供される | |
(無償版でも利用可能)。ノードの追加/削除/リバランス/監視機能が統合されている分 | |
OpsCenterのほうが高機能 | |
+ 管理ツールの導入に関して | |
→ OpsCenterの場合、別途 agent の導入が必要。ただし、DataStaxが配布している | |
Cassandraのディストリビューション(rpm or deb)を利用すれば、Cassandra本体と | |
まとめて導入される | |
+ Jubaに何が必要か? (個人的見解) | |
- 【共通】各ノードの負荷を監視できる機能、ストレステストが欲しい | |
- 【分散】jubavisor/ctl はあったほうがよさげ | |
- 【分散】クラスタ構成変更/リバランスのための機能がほしい | |
- 【分散】クラスタ自体はオンラインのままでノードをメンテナンスできる仕組みが欲しい |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment