0. はじめに
本ページのコマンドの結果表示は、DSEディストリビューションのもの (バージョンはいろいろ混在)
1. nodetool status
クラスタの状態表示
キースペースを指定して実行した場合、Owns列に利用可能なトークン範囲の割合を表示
・トークン範囲の割合は、各ノードが所有するトークンの割合とレプリケーション係数を乗算した値
・そのキースペースのreplication factorが、2ならクラスタ内の%の合計は約200%、3なら約300%になるはず....。
( 実行例 : DSE 5.1.17 )
# nodetool status test01
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.0.2.131 722.14 KiB 256 70.8% 3f1d4bd5-e99f-4251-8a8a-d5c23a2d2fa9 RAC1
UN 10.0.2.121 659.79 KiB 256 76.7% a2541bd4-8d08-41ae-abf0-b22d4cae5716 RAC1
UN 10.0.2.122 662.59 KiB 256 75.8% 244dc6ed-45a1-47df-a89c-0ee2dc3f4a38 RAC1
UN 10.0.2.123 714.68 KiB 256 76.6% 9490e3e8-16af-4d5a-9e31-0e480c613ad8 RAC1
#
( キースペースを指定しないで実行した場合 )
以前のバージョン(例えば、DSE4.8.x)ではOwn列は ? 表示になっていたが、最近のバージョン(少なくとも5.1.17以降)では、パーセンテージが表示される。いずれにせよ、DATASTAXのドキュメントの記載にあるとおり、この欄の数字に意味を求めるのであれば、nodetool satus実行時に対象のキースペースを指定する必要がある。
「重要: クラスターに、レプリケーション・ストラテジまたはレプリケーション係数の異なるキースペースがある場合、有意な所有権情報を得るには、nodetool status実行時にキースペースを指定してください。」( https://docs.datastax.com/ja/dse/5.1/dse-admin/datastax_enterprise/tools/nodetool/toolsStatus.html ) )
( 実行例 : DSE 4.8.16 )
# nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
UN 10.0.2.121 479.96 KB 256 ? e52df442-eebb-490a-8787-372d4e2705c2 RAC1
UN 10.0.2.122 433.09 KB 256 ? b1ccdf1e-a6ee-4f71-95c3-b3b5bd0f3e81 RAC1
UN 10.0.2.123 488.47 KB 256 ? a4cfeb3a-1fa2-4f99-ac8b-e14e2aa44ec4 RAC1
Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
#
2. nodetool ring
nodetool statusに似ているが、ノードのステータスをトークン範囲別に表示
( 実行例 : DSE 5.1.17 )
# nodetool ring test01
Datacenter: DC1
==========
Address Rack Status State Load Owns Token
9218035512596006795
10.0.2.121 RAC1 Up Normal 659.79 KiB 76.72% -9222728930267421097
10.0.2.131 RAC1 Up Normal 722.14 KiB 70.85% -9180151874169604866
10.0.2.131 RAC1 Up Normal 722.14 KiB 70.85% -9162853831163961080
10.0.2.122 RAC1 Up Normal 662.59 KiB 75.79% -9129890199084435875
10.0.2.131 RAC1 Up Normal 722.14 KiB 70.85% -9125736719015339102
10.0.2.131 RAC1 Up Normal 722.14 KiB 70.85% -9113235406061065294
10.0.2.122 RAC1 Up Normal 662.59 KiB 75.79% -9113100503939633554
:
(略)
:
10.0.2.121 RAC1 Up Normal 659.79 KiB 76.72% 9218035512596006795
Warning: "nodetool ring" is used to output all the tokens of a node.
To view status related info of a node use "nodetool status" instead.
nodetoolコマンドとは関係ない余談だけど、cqlshのtoken関数と、nodetool ring (あるいは後述のnodetool describering)の結果を組み合わせることで、手動でトークン範囲でページング分割したクエリを実行可能
cqlsh> select * from test01.customer where token(id) <= -9222728930267421097;
id | age | firstname | lastname
------+-----+-----------+----------
4317 | 17 | aaaaa | bbbbb
3356 | 26 | aaaaa | bbbbb
:
(略)
:
cqlsh> select * from test01.customer where token(id) > -9222728930267421097 and token(id) <= -9129890199084435875;
id | age | firstname | lastname
------+-----+-----------+----------
3372 | 27 | aaaaa | bbbbb
1584 | 26 | aaaaa | bbbbb
:
(略)
:
cqlsh> select * from test01.customer where token(id) > 9218035512596006795;
id | age | firstname | lastname
------+-----+-----------+----------
5504 | 17 | aaaaa | bbbbb
3476 | 42 | aaaaa | bbbbb
:
(略)
:
3. nodetool describering
キースペースのパーティション範囲(トークン値)を表示 ( トークン値ではsortされてない )
( 実行例 : DSE 5.1.17 )
# nodetool describering test01
Schema Version:3e44afb3-428b-3c44-a053-6363a2a78403
Keyspace: test01
TokenRange:
TokenRange(start_token:-7067710157254911858, end_token:-7027724543442860409, endpoints:[10.0.2.122, 10.0.2.121, 10.0.2.123], rpc_endpoints:[10.0.2.122, 10.0.2.121, 10.0.2.123], endpoint_details:[EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1)])
TokenRange(start_token:-4032970123352172154, end_token:-3949095354840399141, endpoints:[10.0.2.123, 10.0.2.121, 10.0.2.122], rpc_endpoints:[10.0.2.123, 10.0.2.121, 10.0.2.122], endpoint_details:[EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1)])
TokenRange(start_token:1245622280671050746, end_token:1265745285746323744, endpoints:[10.0.2.121, 10.0.2.122, 10.0.2.123], rpc_endpoints:[10.0.2.121, 10.0.2.122, 10.0.2.123], endpoint_details:[EndpointDetails(host:10.0.2.121, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.122, datacenter:DC1, rack:RAC1), EndpointDetails(host:10.0.2.123, datacenter:DC1, rack:RAC1)])
:
(略)
:
余談だけど、トークン値の結果はsortされてないので、EXCELでsortしたくなるかもしれないけど、その場合、EXCELでは15桁を超える数値を取り扱えないので、文字列として取り扱うようにしないといけない....。