セットアップ方法 Cassandra Cluster 複数のノード上で

⚡ スマートサマリー

Cassandra Cluster 複数のノードをグループ化することで、データが分散され、単一のマシンにすべてのデータが保持されることがなくなります。このページでは、クラスタの構成要素、パーティショナーとトークンリング、前提条件、ノードを結合するための構成設定、および結果の検証方法について説明します。

  • 🧩 Cluster 構造: ノードはデータセンターを形成し、データセンターはクラスターを形成して、単一のデータベースとして機能する。
  • 🎯 パーティショナーの役割: パーティションキーのハッシュ値からトークンが生成され、そのトークンによってどのノードにその行が格納されるかが決定される。
  • 🌱 シードノード: シードとは、新しいノードが最初に情報交換を行う接点であり、マスターではありません。
  • ⚙️ キー設定: cluster_name、seeds、listen_address、およびrpc_addressは、cassandra.yaml内で一貫して設定する必要があります。
  • 🚀 起動順序: まずシードノードを1つずつ起動し、その後残りのノードを参加させます。
  • 検証: nodetool statusコマンドを実行すると、すべてのノードがUNとして表示され、所有権はほぼ均等になるはずです。

  Cassandra Cluster 複数のノード上で

何ですか Cassandra Cluster?

A Cassandra クラスターは全体のシェルの1つです Cassandra データベース。 の Cassandra クラスターは多数の異なるストレージユニット層で構成されており、各層は他の層を含んでいる。

などの大きな組織 AmazonFacebookなどは膨大な量のデータを管理する必要があります。そのため、これらの組織は膨大な量のデータを単一のマシンに保存することはできません。このような場合に、次のようなデータベースを使用します。 Cassandra 分散アーキテクチャを採用。

これらの組織は、その膨大な量のデータを複数のノードに保存します。これらのノードは互いに通信します。この目的のために、 Cassandra クラスターが確立されます。

  • Cluster 基本的にはノードのグループであり、ノード同士が容易に通信できるようにするものです。
  • コーディネーターノードとは、クライアントからのリクエストを受信し、そのクライアントに代わってレプリカと通信を行うノードです。どのノードでも、どのリクエストに対してもコーディネーターとして機能できます。

パーティショナー

パーティショナーは、クラスタ上でデータをどのように分散するかを決定します。パーティショナーはハッシュ関数を使用してクラスタ上でデータを分散します。ハッシュを計算するにはパーティションキーが必要です。このハッシュは トークン。 データはこのトークンに基づいて配布されます。

デフォルトのパーティショナーは Murmur3Partitioner で、固定範囲に均等に分散されたトークンを生成します。各ノードはその範囲の 1 つ以上の範囲を所有し、範囲の集合が トークンリング割り当ては値ではなくハッシュによって行われるため、ノードを追加してもデータセット全体が再編成されるのではなく、そのノードが引き継ぐ範囲のみが移動します。

の前提条件 Cassandra Cluster

クラスターのセットアップには次の要件があります。

  1. ノードとして機能する、物理マシンまたは仮想マシンを複数用意する必要があります。
  2. ノードはネットワーク上で相互に通信できる必要があります。ノード間の通信にはポート7000、TLSが有効になっている場合はポート7001、クライアント接続にはポート9042が開放されている必要があります。
  3. 各ノードにLinuxをインストールする必要があります。これはプラットフォームです。 Cassandra テスト済みで、サポートされているプラ​​ットフォームです。
  4. Apache Cassandra すべてのノードに同じバージョンをインストールする必要があります。異なるバージョンが混在していると、スキーマ合意を完了できません。
  5. サポートされている JDK 各マシンにインストールし、JAVA_HOMEを設定する必要があります。
  6. 時計はNTPと同期させる必要があります。 Cassandra 競合する書き込みはタイムスタンプによって解決されるため、クロックのずれによって誤った結果が静かに発生する。

最後の要件は最も見落とされがちなもので、起動失敗ではなくデータの問題を引き起こします。

.

インストールする方法 Cassandra Cluster Linuxの場合

Cassandra クラスターに参加する前に、各マシンにインストールする必要があります。以下のスクリーンショットは、このチュートリアルが作成された当時は一般的な方法であった DataStax Enterprise グラフィカルインストーラーのものです。このインストーラーは現在コミュニティ向けには配布されていないため、まず現在の方法を示し、ウィザードは参考として後述します。

現在の方法: インストール Apache Cassandra パッケージまたはバイナリtarballをすべてのノードに同じように配置し、各ノードが単独で起動することを確認してから、ノード同士を結合しようと試みてください。

tar -xzf apache-cassandra-x.y.z-bin.tar.gz -C /opt/
export CASSANDRA_HOME=/opt/apache-cassandra-x.y.z
$CASSANDRA_HOME/bin/cassandra -f

単一ノードが正常に起動したら、そのノードを停止し、データディレクトリをクリアしてから、以下のクラスタ構成セクションに進んでください。

ステップ1) 実行する Cassandra エンタープライズ版のセットアップ。 Linux ターミナルを開き、セットアップを実行してください。次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

このページには必要な情報が記載されていません。に関する情報を提供するだけです Cassandra バージョン。したがって、このページを通過して次へボタンを押してください。

ステップ2) 使用許諾契約に同意してください。「次へ」ボタンを押すと、次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

このページには、 Cassandra インストールが開始されます。その下にライセンスに関する質問が表示されます。「使用許諾契約に同意します」のチェックボックスをオンにして、「次へ」ボタンを押してください。

ステップ3) Builderをインストールして「次へ」をクリックしてください。「次へ」ボタンを押すと、次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

このページでは、インストール オプションについて尋ねます。

  1. まず、インストールディレクトリを尋ねられます。 デフォルトでは、ホーム ディレクトリにインストールされます。
  2. 次に、インストールの種類を尋ねられるので、「Simple Install」を選択します。
  3. 次にアップデートシステムについて聞かれるので「いいえ」にチェックを入れます。
  4. 次に、デフォルトのインターフェースを選択するよう求められます。ローカルホストにインストールするか、IPアドレスを選択するかの2つのオプションがあります。インストール先としてIPアドレスを選択してください。
  5. 次のボタンを押します。

ステップ4) ノードを設定し、「次へ」をクリックしてください。「次へ」ボタンを押すと、次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

このページではノードのセットアップについて尋ねます。

  1. まず、ノードタイプを選択します。Cassandra ノード'。
  2. 次に、「リング名」にクラスター名を入力します。 Cluster 名前は同じクラスター内のすべてのノードで同じである必要があります。
  3. 次に、シードを選択します。シードとは、他の非シードノードが起動時に接続するノードのことです。
  4. この情報を入力したら、「次へ」ボタンを押してください。

ステップ5) 監視エージェントをインストールします。次へボタンを押すと、次のページが表示されます。このページでは、エージェントをインストールするIPアドレスを入力するよう求められます。

  1. このエージェントは、すべてのノードを1か所で監視できる監視コンソールに必要です。
  2. この情報を入力したら、「次へ」ボタンを押してください。

インストールを開始する Cassandra Cluster Linuxの場合

ステップ6) インストールを開始するには「次へ」を押してください。「次へ」ボタンを押すと、次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

これでセットアップをインストールする準備が整いました。 次へボタンを押してください。

ステップ7) インストール処理が完了するまでお待ちください。次へボタンを押すと、次のページが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

セットアップが開始されます。

ステップ8) 「完了」ボタンをクリックしてください。インストールが完了すると、次のページが表示されます。同じページに、デフォルトで表示されるオプションにチェックマークが表示されます。

インストールを開始する Cassandra Cluster Linuxの場合

ノードを参加させるためのcassandra.yamlの設定

インストールだけではクラスターは作成されません。ノードは、cassandra.yaml ファイル内の 4 つの設定が一致したときに初めて互いを認識しますが、ほとんどのクラスター設定で問題が発生するのはこのファイルの設定ミスです。

cluster_name: 'Guru99 Cluster'
seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
      - seeds: "192.168.1.10,192.168.1.11"
listen_address: 192.168.1.10
rpc_address: 0.0.0.0
broadcast_rpc_address: 192.168.1.10
endpoint_snitch: GossipingPropertyFileSnitch
  • クラスター名 すべてのノードで一致している必要があります。不一致は、ノードが参加を拒否する最も一般的な原因です。
  • シーズ 起動ノードが通信する連絡先を一覧表示します。データセンターごとに2~3個のシードノードがあれば十分です。すべてのノードをシードノードにすると、自動ブートストラップが妨げられます。ping.
  • listen_address これは、他のノードがこのノードにアクセスするために使用するアドレスです。ルーティング可能な実際のアドレスである必要があり、localhostであってはなりません。
  • エンドポイントスニッチ 伝える Cassandra ラックとデータセンターのレイアウト。ゴッシpingPropertyFileSnitchが一般的に使用され、値はcassandra-rackdc.propertiesで設定されます。

データが存在する後にスニッチ名やクラスタ名を変更するには追加の手順が必要となるため、両方とも最初のノードが起動する前に決定しておく必要があります。

起動 Cassandra Node

インストールした後 Cassandra 各ノードでサーバーを起動し、以下の手順に従ってください。起動順序が重要です。まずシードノードを1つずつ起動し、各ノードが起動状態になったことを確認してから次のノードを起動してください。複数のノードを同時に起動すると、トークン範囲の競合が発生する可能性があります。

ステップ1) に行きます Cassandra インストールディレクトリに移動してサーバーを起動します。

bin/cassandra -f

起動 Cassandra Node

このコマンドを実行すると、 Cassandra サーバーが起動します。以下はスクリーンショットです。 Cassandra サーバーを起動しています。

起動 Cassandra Node

約1分後にはサーバーが起動します。各ノードサーバーを1つずつ起動してください。すべてのノードサーバーを起動したら、 Cassandra クラスターは使用可能です。

ステップ2) いずれかのノードからリングを確認することで、すべてのノードが参加していることを確認してください。

nodetool status
nodetool describecluster

すべてのノードはステータスとともに表示される必要があります UNつまり、稼働中かつ正常状態であり、「Owns」列にはほぼ均等な割合が表示されるはずです。describecluster の出力に単一のスキーマ バージョンが表示されていれば、すべてのノードがスキーマに同意していることが確認できます。

ほとんどの障害は3つの症状で説明できます。ノードがまったく表示されない場合は、通常、cluster_nameが一致していないか、ポート7000がブロックされています。ノードが停止している場合は、 UJ参加中のノードは、まだデータストリーミング中で、大規模クラスター上で時間が必要なだけです。所有権が極端に不均等な場合は、ノードが間違ったラックまたはデータセンターに配置されたなど、スニッチの設定ミスを示唆しています。

リングが正常な場合、各キースペースのレプリケーション設定によって、データがリング全体にどのように拡散されるかが決定されます。 Cassandra キースペース チュートリアルと Cassandra 建築 壊す。

よくあるご質問

3は、標準的なレプリケーション係数である3に相当します。これにより、1つのノードがメンテナンスや障害で停止している間も、クォーラムの読み取りと書き込みが継続されます。

いいえ。シードノードは起動時と情報伝達時の連絡点としてのみ機能します。他のノードと同様にデータを保存するため、シードノードが失われても稼働中のクラスタには影響しません。

同じバージョンをインストールし、既存のシードを指定して起動します。トークン範囲をストリーミングすることで自動的にブートストラップされます。その後、他のノードでnodetool cleanupを実行してください。

データ量、レプリケーション係数、スループット目標に基づいて、AIは妥当な初期ノード数を生成します。圧縮と修復のオーバーヘッドはワークロードによって異なるため、負荷テストで検証してください。

はい。cassandra.yaml と一緒に system.log を提供すれば、通常は原因がすぐに判明します。最も多い原因は、クラスタ名の不一致、ブロックされたポート、または listen_address が localhost のままになっていることです。