Cassandraのラック構成 メモ

## 1.ラック(rack)の説明

・データセンタ内でノードを論理的にグループ化したもの
・NetworkTopologyStrategyの場合
　・Cassandraは、レプリカを異なるラックのノードに配置しようとする。 
　・耐障害性の向上に役立つ

## 2.例1

RAC1:2ノード、RAC2:2ノード、RAC3:2ノード の構成の場合

※環境は、ディストリビューション、バージョン = DSE 5.0.15をベースに記載
※GossipingPropertyFileSnitch利用

```
# nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns    Host ID                               Rack
UN  10.0.2.121  217.08 KB  256          ?       c83d76b9-65af-4207-b18d-42eaf829067a  RAC1
UN  10.0.2.122  52.05 KB   256          ?       1d5729d3-43ea-4a1d-9af5-edba4e9542dd  RAC1
UN  10.0.2.123  148.42 KB  256          ?       ad542a12-a585-4821-80f9-f80c9e77922d  RAC2
UN  10.0.2.124  192.33 KB  256          ?       d875644a-46f4-4c3e-a597-0f9291e25bcf  RAC2
UN  10.0.2.125  184.16 KB  256          ?       48dc9ff3-5af7-47b2-ae2a-a4eeae9783a3  RAC3
UN  10.0.2.126  117.46 KB  256          ?       bc853588-c7e1-4d61-b02c-020e83034d50  RAC3

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
# 
```

### NetworkTopologyStrategy で replication factor=3 の場合

・NetworkTopologyStrategyのキースペースでは、レプリカを異なるラックのノードに配置しようとする。
・このラック構成でreplication factor=3の場合、レプリカの各ノードへの配置は以下の8パターン

|RAC1 (10.0.2.121)|RAC1 (10.0.2.122)|RAC2 (10.0.2.123)|RAC2 (10.0.2.124)|RAC3 (10.0.2.125)|RAC3 (10.0.2.126)|
|---|---|---|---|---|---|
|○||○||○||
|○||○|||○|
|○|||○|○||
|○|||○||○|
||○|○||○||
||○|○|||○|
||○||○|○||
||○||○||○|

・例えば、Quorum(Local Quorum)なら、1つのラックが全滅してもアクセス可能

### SimpleStrategy で replication factor=3 の構成の場合

・SimpleStrategyのキースペースでは、ラック構成に関係なくレプリカを配置する。
・このラック構成でreplication factor=3の場合、レプリカの各ノードへの配置は以下の20パターン

|RAC1 (10.0.2.121)|RAC1 (10.0.2.122)|RAC2 (10.0.2.123)|RAC2 (10.0.2.124)|RAC3 (10.0.2.125)|RAC3 (10.0.2.126)|
|---|---|---|---|---|---|
|○|○|○||||
|○|○||○|||
|○|○|||○||
|○|○||||○|
|○||○|○|||
|○||○||○||
|○||○|||○|
|○|||○|○||
|○|||○||○|
|○||||○|○|
||○|○|○|||
||○|○||○||
||○|○|||○|
||○||○|○||
||○||○||○|
||○|||○|○|
|||○|○|○||
|||○|○||○|
|||○||○|○|
||||○|○|○|

## 3.例2

RAC1:2ノード、RAC2:1ノード、RAC3:3ノード の場合

※環境は、ディストリビューション、バージョン = DSE 5.0.15をベースに記載
※GossipingPropertyFileSnitch利用

```
# nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens       Owns    Host ID                               Rack
UN  10.0.2.121  143.41 KB  256          ?       7f3c4750-b62f-4316-aee0-40a76df65a1c  RAC1
UN  10.0.2.122  191.33 KB  256          ?       a3253a3a-02b4-4690-8354-f1abebf44224  RAC1
UN  10.0.2.123  99.46 KB   256          ?       bbe6a270-0b12-4513-a8a2-10403854204c  RAC2
UN  10.0.2.124  92.72 KB   256          ?       92293582-5d34-4002-bddc-94c1a9ac57c0  RAC3
UN  10.0.2.125  200.07 KB  256          ?       5960b61e-66c7-43a5-b15e-51e896a5085b  RAC3
UN  10.0.2.126  151.53 KB  256          ?       3e92cde4-9a59-4642-89a8-ef2e12a62d64  RAC3

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
# 
```

### NetworkTopologyStrategy で replication factor=3 の場合

・このラック構成でreplication factor=3の場合、レプリカの各ノードへの配置は以下の6パターン
・RAC2所属のノードは10.0.2.123のみなので、10.0.2.123には必ずレプリカを配置することになる。

|RAC1 (10.0.2.121)|RAC1 (10.0.2.122)|RAC2 (10.0.2.123)|RAC3 (10.0.2.124)|RAC3 (10.0.2.125)|RAC3 (10.0.2.126)|
|---|---|---|---|---|---|
|○||○|○|||
|○||○||○||
|○||○|||○|
||○|○|○|||
||○|○||○||
||○|○|||○|