2016-05-17 13 views
6

各DCにRF-3を持つ2つのデータセンター(各DCに6つのノードを持つ)を持つ12ノードクラスタがあります。既存のcassandraクラスタに複数のノードを追加する最良の方法

各DCに3つのノード(合計6ノード)を追加することで、クラスタの容量を増やす予定です。 一度に複数のノードを追加する最良の方法は何ですか(また、2分の差があるかもしれません)。

  1. auto_bootstrap:偽 - 利用auto_bootstrap:偽&はその後、「再構築nodetool」データがexisitngノードからこの新しいノードにストリーミング取得するために実行するすべてのノードを起動し、すべての新しいノード上で(これは、ノードを開始するための迅速なプロセスがあるとして) 。
  2. このようにすれば、この時点でこのノードにトークン範囲が割り当てられているため(新規ノード)、このノードにストリーム配信されたデータはありません。リクエストの失敗/ CLの問題/その他の問題の読み取り

    OR

    <オール開始=「2」>
  3. auto_bootstrap:真 - 使用auto_bootstrap:真、その後、我々が持っているように(これは私が推測する時間がかかる場合がありますストリーミング処理が終了するまで待機し、一度に1つのノードを開始次のノードを起動する前に各ノードで約600 GB以上の巨大なデータ)。 このようにすれば、次の新しいノードを追加する前に、ノードでストリーム処理が完了するまで待つ必要があります。

一度に複数のノードを追加することをお勧めします。

PS:私たちはc * -2.0.3を使用しています。

ありがとうございます。

答えて

2

それぞれがネットワーク上のストリーミングデータに依存するため、クラスタがどのように分散されているか、現在データがどこにあるかによって大きく異なります。

単一DCクラスタがあり、すべてのノード間の遅延が最小の場合は、auto_bootstrap: trueの新しいノードを起動すると問題はありません。また、データのコピーがローカルデータセンターに複製されている場合(新しいノードに参加する場合)、これも推奨される方法です。

一方、複数のDCについては、auto_bootstrap: falseを設定し、nodetool rebuildを使用してより多くの成功を見出しました。この理由は、nodetool rebuildを使用して、データセンタをデータのソースとして指定できるためです。このパスを使用すると、特定のDCへのストリーミングを含めることができます(さらに重要なことに、ではなく、他のDCへの)。上記と同様に、新しいデータセンターを構築していてデータがまだ完全に複製されていない場合はを入力し、nodetool rebuildを使用して別のDCのデータをストリームする必要があります。

どのように読み取り要求が処理されるのですか?

どちらのシナリオでも、データが実際に存在するかどうかにかかわらず、クラスタに参加するときに新しいノードのトークン範囲が計算されます。したがって、CL ONEの新しいノードに読取り要求を送信する場合は、にする必要があります(RF> 1と仮定して)セカンダリ・レプリカを含むノードにルーティングする必要があります。あなたがCL QUORUM(RF = 3)で質問した場合、でなければなりません。もちろん、スラックを取り除いているノードはストリーミング活動によって克服されず、要求を処理することもできないと仮定します。これは「2分ルール」が存在する大きな理由です。

結論は、新しいノードが完全にストリーミングされる前にクエリが失敗する可能性が高いということです。クエリーの成功の可能性は、クラスタのサイズとともに増加します(ノードの数が増えるほどスケーラビリティが増し、ストリーミングの責任はそれだけありません)。基本的に、3つのノードから4つのノードに移動する場合、障害が発生する可能性があります。 30ノードから31ノードに移動している場合、アプリはおそらく何かを気付かないでしょう。

新しいノードは他のデータセンターのノードからもデータを取得しようとしますか?

クエリでローカル整合性レベルが使用されていない場合のみ。

+0

私が尋ねたように、 'auto_bootstrap:false'という読み込み要求がどのように処理されるのでしょうか? この新しいノードに移動するのは、この新しいノードにはトークン範囲が割り当てられているだけです(新しいノード)が、このノードにデータが流れ込まず、読み取り要求の失敗/ CL問題/その他の問題が発生します。 ? 返信ありがとうございます* – techpyaasa

+0

@techpyaasa編集済みです。 – Aaron

+0

返信いただきありがとうございます。 ご迷惑をおかけしている可能性があります。「少なくとも1つのデータコピーがローカルの データセンター(新しいノードに参加するデータセンター)にレプリケートされている場合は、この方法もお勧めです。 新しいノードは他のデータセンター内のノードからもデータを取得しようとしますか(他のデータセンターが所属するノード以外) DCのノードにすべてのデータがあるとすれば、それはなぜですか? または、新しいノードを追加するときに、クラスタが完全な状態であり、修復を必要としないことが必要ですか? これは理由でしょうか? – techpyaasa

関連する問題