Cassandraクラスタ管理-オフライン正常ノード


テストの前の問題:


テストcassandraクラスタはvnodesを使用していますが、vnodesが使用されているかどうかをどのように判断しますか?主にあなたのcassandraを見ています.ymlプロファイルにあります.デフォルト(3.x)は空で、システムは自動的に生成されます.空の表示にはvirtual nodesを使用し、デフォルトで開き、vnodesを使用し、ノードを削除すると独自にデータが等化され、人為的な介入が必要になります.

テストデータ生成


kevin_という名前のtestのKeySpace


kevin_という名前のtestのKeySpaceは、ネットワークトポロジ(SimpleStrategy)を使用してクラスタ内の3つのコピーを作成し、commit logを書き込みます.
cassandra@cqlsh> create keyspace kevin_test with replication = {'class':'SimpleStrategy','replication_factor':3} and durable_writes = true;

テーブルの作成

CREATE TABLE t_users (
  user_id text PRIMARY KEY,
  first_name text,
  last_name text,
  emails set
);

データの一括挿入

BEGIN BATCH
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('0', 'kevin0', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('1', 'kevin1', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('2', 'kevin2', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('3', 'kevin3', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('4', 'kevin4', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('5', 'kevin5', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('6', 'kevin6', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('7', 'kevin7', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('8', 'kevin8', 'kang', {'[email protected]', '[email protected]'});
INSERT INTO t_users (user_id, first_name, last_name, emails) VALUES('9', 'kevin9', 'kang', {'[email protected]', '[email protected]'});
APPLY BATCH;

検証:

cassandra@cqlsh:kevin_test> SELECT * from t_users; 

 user_id | emails                          | first_name | last_name
---------+---------------------------------+------------+-----------
       6 | {'[email protected]', '[email protected]'} |     kevin6 |      kang
       7 | {'[email protected]', '[email protected]'} |     kevin7 |      kang
       9 | {'[email protected]', '[email protected]'} |     kevin9 |      kang
       4 | {'[email protected]', '[email protected]'} |     kevin4 |      kang
       3 | {'[email protected]', '[email protected]'} |     kevin3 |      kang
       5 | {'[email protected]', '[email protected]'} |     kevin5 |      kang
       0 | {'[email protected]', '[email protected]'} |     kevin0 |      kang
       8 | {'[email protected]', '[email protected]'} |     kevin8 |      kang
       2 | {'[email protected]', '[email protected]'} |     kevin2 |      kang
       1 | {'[email protected]', '[email protected]'} |     kevin1 |      kang

t_の表示usersテーブルのプロパティ:

[root@kubm-03 ~]# nodetool  cfstats kevin_test.t_users
Total number of tables: 41
----------------
Keyspace : kevin_test
        Read Count: 0
        Read Latency: NaN ms
        Write Count: 6
        Write Latency: 0.116 ms
        Pending Flushes: 0
                Table: t_users
                Number of partitions (estimate): 5
                Memtable cell count: 6
                Memtable data size: 828

以上の表の情報は、後期テスト中にデータが失われたかどうかを確認できます.

クラスタノード情報

[root@kubm-03 ~]# nodetool  status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns    Host ID                               Rack
UN  172.20.101.164  56.64 MiB  256          ?       dcbbad83-fe7c-4580-ade7-aa763b8d2c40  rack1
UN  172.20.101.165  55.44 MiB  256          ?       cefe8a3b-918f-463b-8c7d-faab0b9351f9  rack1
UN  172.20.101.166  73.96 MiB  256          ?       88e16e35-50dd-4ee3-aa1a-f10a8c61a3eb  rack1
UN  172.20.101.167  55.43 MiB  256          ?       8808aaf7-690c-4f0c-be9b-ce655c1464d4  rack1
UN  172.20.101.160  54.4 MiB   256          ?       57cc39fc-e47b-4c96-b9b0-b004f2b79242  rack1
UN  172.20.101.157  56.05 MiB  256          ?       091ff0dc-415b-48a7-b4ce-e70c84bbfafc  rack1

通常のクラスタノードをオフラインにする


ノードの動作状態は正常で、クラスタノードの数を圧縮するために使用され、今回のオフライン:172.2.0.101.165.
削除するマシン(172.0.101.165)で実行:nodetool decommissionまたはnodetool removenode
nodetool statusでクラスタ状態を表示できます.ノードデータの復元が完了すると、オフラインノードがクラスタリストから消えます.

サービスステータスの表示:


[root@kubm-03 ~]#/etc/init.d/cassandra status
● cassandra.service - LSB: distributed storage system for structured data
   Loaded: loaded (/etc/rc.d/init.d/cassandra; bad; vendor preset: disabled)
   Active: active (running) since Tue 2019-07-09 11:29:25 CST; 2 days ago
Jul 09 11:29:25 kubm-03 cassandra[8495]: Starting Cassandra: OK
Jul 09 11:29:25 kubm-03 systemd[1]: Started LSB: distributed storage system for structured data.

ノードがクラスタに自動的に参加できるかどうかをテストします。


/etc/init.d/cassandra restart
INFO  [main] 2019-07-11 16:44:49,765 StorageService.java:639 - CQL supported versions: 3.4.4 (default: 3.4.4)
INFO  [main] 2019-07-11 16:44:49,765 StorageService.java:641 - Native protocol supported versions: 3/v3, 4/v4, 5/v5-beta (default: 4/v4)
INFO  [main] 2019-07-11 16:44:49,816 IndexSummaryManager.java:80 - Initializing index summary manager with a memory pool size of 198 MB and a resize interval of 60 minutes
This node was decommissioned and will not rejoin the ring unless cassandra.override_decommission=true has been set, or all existing data is removed and the node is bootstrapped again
Fatal configuration error; unable to start server.  See log for stacktrace.
ERROR [main] 2019-07-11 16:44:49,823 CassandraDaemon.java:749 - Fatal configuration error

# 
org.apache.cassandra.exceptions.ConfigurationException: This node was decommissioned and will not rejoin the ring unless cassandra.override_decommission=true has been set, or all existing data is removed and the node is bootstrapped again

#プロンプトノードはすでに退役しており、クラスタにアクセスできません.クラスタ構成cassandraの変更に参加したい場合は.override_decommission=trueまたは現在のノード上のすべてのデータを削除してサービスを再起動します.