更新时间:2022-05-18 17:15:32
cassandra项目官方没有给我们提供一个中控的地方让我们获取集群的相关信息,但是由于cassandra是对等的,且集群种节点通过gossip可以拿到集群的整个视图,所以如果想要获取得到集群的整个视图信息也是可以通过单节点的nodetool工具获取得到我们将获取的信息做一下分类:
1.nodetool describecluster
显示集群的基本信息,包括:集群的名字(cassandra.yaml里面配置的)、Snitch类型、是否开启dynamicendpointsnitch、集群partitioner、schmema version,因为我们是通过gossip进行信息同步,可能会存在某些节点一时间与另外节点schema version不一致,可以通过这个命令判断。
eg:
Cluster Information:
Name: Test Cluster
Snitch: org.apache.cassandra.locator.SimpleSnitch
DynamicEndPointSnitch: enabled
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
ea63e099-37c5-3d7b-9ace-32f4c833653d: [127.0.0.1]
2../nodetool describering keyspace
打印出给定的keyspace以及与其相关的token ring信息,此处我的token_number设置为2,方便展示信息,如果我们希望想要知道某个keyspace与其相关的token信息,可以通过这个命令获取。
eg:
Schema Version:ea63e099-37c5-3d7b-9ace-32f4c833653d
TokenRange:
TokenRange(start_token:-7410294471124200252, end_token:2438009623152110684, endpoints:[127.0.0.1], rpc_endpoints:[127.0.0.1], endpoint_details:[EndpointDetails(host:127.0.0.1, datacenter:datacenter1, rack:rack1)])
TokenRange(start_token:2438009623152110684, end_token:-7410294471124200252, endpoints:[127.0.0.1], rpc_endpoints:[127.0.0.1], endpoint_details:[EndpointDetails(host:127.0.0.1, datacenter:datacenter1, rack:rack1)])
3.nodetool gossipinfo
显示集群的gossip信息,下面显示的是一个三节点的集群中,各个节点相关的gossip信息输出:
/192.168.0.250
generation:1578559963
heartbeat:289
STATUS:18:NORMAL,-1000610182680759021
LOAD:273:111238.0
SCHEMA:20:ea63e099-37c5-3d7b-9ace-32f4c833653d
DC:6:datacenter1
RACK:8:rack1
RELEASE_VERSION:4:3.11.4
RPC_ADDRESS:3:127.0.0.1
NET_VERSION:1:11
HOST_ID:2:012ed1eb-0dac-4562-9812-415a7b58e6d6
RPC_READY:32:true
TOKENS:17:<hidden>
/192.168.0.245
generation:1578560055
heartbeat:196
STATUS:58:NORMAL,-112189776392027338
LOAD:153:115665.0
SCHEMA:20:ea63e099-37c5-3d7b-9ace-32f4c833653d
DC:6:datacenter1
RACK:8:rack1
RELEASE_VERSION:4:3.11.4
RPC_ADDRESS:3:127.0.0.1
NET_VERSION:1:11
HOST_ID:2:0dbd4aca-7dd4-4833-b3db-c7d9dda0aef9
RPC_READY:68:true
TOKENS:57:<hidden>
/192.168.0.246
generation:1578559991
heartbeat:260
STATUS:56:NORMAL,-1045048566066926798
LOAD:213:91038.0
SCHEMA:18:ea63e099-37c5-3d7b-9ace-32f4c833653d
DC:6:datacenter1
RACK:8:rack1
RELEASE_VERSION:4:3.11.4
RPC_ADDRESS:3:127.0.0.1
NET_VERSION:1:11
HOST_ID:2:3ca695aa-edd2-435c-b9ee-89e143648351
RPC_READY:66:true
TOKENS:55:<hidden>
上述信息表示了集群种三个节点对应的相关gossip信息,就第一个节点解释下相关的信息意义:
我们可以看到的是接下来的模块都是string0:number0:string1,其中string0 的格式就是STATUS、LOAD、SCHEMA等等这些需要的状态字符串,number0是这些状态每个一次变更就加1的version版本号,我们主要介绍是string1的具体意义;但是不是说string0 和number0 不重要。
4.nodetool ring
展示集群的token ring环信息,由于我这里的vnode用了默认的256,所以只列部分数据:
Datacenter: datacenter1
==========
Address Rack Status State Load Owns Token
9171192753316195244
192.168.0.245 rack1 Up Normal 266.49 KiB 64.99% -9183757132875531958
192.168.0.250 rack1 Up Normal 242.16 KiB 70.75% -9159199665119898622
192.168.0.250 rack1 Up Normal 242.16 KiB 70.75% -9135911702874518408
192.168.0.250 rack1 Up Normal 242.16 KiB 70.75% -9120077450536389482
192.168.0.246 rack1 Up Normal 238.16 KiB 64.26% -9106101311114100850
192.168.0.246 rack1 Up Normal 238.16 KiB 64.26% -9069141338515824351