私はCassandraクラスター(ec2インスタンスでデプロイされている)に、クラスターの各ノードのディスクスペースが不足するような状況があります。 Cassandraクラスタにインスタンスを追加すると、ディスク容量が増えますか?Cassandra Clusterのノード数を増やすとディスクスペースが増加しますか?
スペースが足りなくなったら、cassandraクラスタにインスタンスを追加して全体のディスク容量を減らすことができますか?
もしそうなら正しいですか?
私はCassandraクラスター(ec2インスタンスでデプロイされている)に、クラスターの各ノードのディスクスペースが不足するような状況があります。 Cassandraクラスタにインスタンスを追加すると、ディスク容量が増えますか?Cassandra Clusterのノード数を増やすとディスクスペースが増加しますか?
スペースが足りなくなったら、cassandraクラスタにインスタンスを追加して全体のディスク容量を減らすことができますか?
もしそうなら正しいですか?
つまり、スペースが足りなくなったら、cassandraクラスタに 個のインスタンスを追加して全体のディスク容量を減らすことができますか?
はい、はいです。
レプリケーションファクタ(RF)が3で、ノードあたり100GBの記憶域を持つ4ノードクラスタを考えてみます。データフットプリントの最初の完全なコピーが60GBであると仮定します。 4つのノードと3のRFで、各ノードはデータの3/4、つまり45GiBを処理します。
Address Load Owns Total
10.0.0.1 45.0 GiB 75.0% 100Gb
10.0.0.2 45.0 GiB 75.0% 100Gb
10.0.0.3 45.0 GiB 75.0% 100Gb
10.0.0.4 45.0 GiB 75.0% 100Gb
サイズ階層コンパクション(デフォルト)では、各ノードをディスク使用率の50%以下に保ちます。この設定はそれを可能にします。
ただし、アプリチームが一晩中大きな負荷をかけているとします。私たちは、明日の朝に来て、これを見つける:
Address Load Owns Total
10.0.0.1 70.0 GiB 75.0% 100Gb
10.0.0.2 70.0 GiB 75.0% 100Gb
10.0.0.3 70.0 GiB 75.0% 100Gb
10.0.0.4 70.0 GiB 75.0% 100Gb
基本的には、データの完全なコピーが93.3ジブに成長しました。ディスクあたりのデータ量を50%以下に戻すには、ノードを追加する必要があります。
しかし、いくつですか?
1つのノード(RFの3を維持)を追加すると、各ノードが3/5(データの60%)の55.98 GiBになります。閉じるが、それほどではない。
2つのノードを追加すると合計6個になります。つまり、各ノードは46.65 GiBの50%のデータを処理します。それはノードあたり50%以下に戻ってくるので、少なくとも2つのノードを追加する必要があります。
そうした後、クラスタは次のようになります。
Address Load Owns Total
10.0.0.1 46.65 GiB 50.0% 100Gb
10.0.0.2 46.65 GiB 50.0% 100Gb
10.0.0.3 46.65 GiB 50.0% 100Gb
10.0.0.4 46.65 GiB 50.0% 100Gb
10.0.0.5 46.65 GiB 50.0% 100Gb
10.0.0.6 46.65 GiB 50.0% 100Gb
注意、それは単に新しいノードでのブートストラップのみのノードにデータを移動します。 ではありません。既存ノードから削除します。そのためには、既存ノードごとにnodetool cleanup
を実行する必要があります。
クラスタにノードを追加してから、クラスタのバランスをとることができます。これにより、より多くのノードにデータが分散され、個々のノード上のデータ量が削減されます。これは、データが十分に分割されている場合に限ります。 同時に、TTL値とGC_graceを調べて、消費しているスペース量が本当に正当であることを確認してください。