0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

夏も終わったし、Ubuntu20.04にDSE6.8でクラスター組もうか

Last updated at Posted at 2022-08-30

注意

主にApache Cassandraの商用パッケージDatastax Enterpriseという前提で進め、オープンソースのものと異なる場合があります。
当記事のテーマはアーキテクチャーガイドを参考して分散DBであるCassandraではCRUDはどう動くのか解説していきます。
もしよろしければTwitterもフォローしていただけると。。。
My Twitter Account

今回のトピック

今回はDSE6.8(2022年8月30日時点最新ver)のインストールから実際クラスターを構築することまで解説しています。
当記事の進め方は以下の通りです。
  • DSE6.8のインストール
  • Cassandra.yamlファイルの書き方
  • クラスターの構築

DSE6.8のインストール

まず初めにDSE6.8をインストールしていきます。
公式のインストールガイドに沿って進めていくだけっちゃだけですが、1つトラブルになりそうなところがあるので書いてきます。
私の環境ではUbuntu20.04を使用し進めていきます。
OracleやCentOSの方はそれぞれインストールガイドが準備されていますのでそちらに沿ってください。
多くは変わらないと思います。 Debian系列のインストールガイド まず初めにDSEを入れるためにはJavaを入れる必要があります。
Javaが入っていないことを確認
java -version

APTライブラリのインデックス更新
sudo apt-get update<br>

JDKを導入
sudo apt-get install openjdk-8-jdk

Javaが入っていることを確認
java -version<br>

では続いて本格的にDSE6.8を入れていきます。

ライブラリであるlibaio1を導入。Linux Kernelの非同期I/Oシステムコールを呼び出せる
sudo apt-get install libaio1

DSEのリポジトリファイルを追加する。
echo "deb https://debian.datastax.com/enterprise/ stable main" | sudo tee -a /etc/apt/sources.list.d/datastax.sources.list

リポジトリのキーを追加する
curl -L https://debian.datastax.com/debian/repo_key | sudo apt-key add -

APTライブラリのインデックス更新
sudo apt-get update

DSE6.8インストール
sudo apt-get install dse-full

これでインストール完了。
一回sudo service dse startしても起動はできる
ここまではコピペしたらOK

cassandra.yamlを編集してみよう

この状態でsudo service dse startしても再起動はできる。
できるが、、、そうじゃない。
安定運用するまではまだまだぁ。ということでcassandra.yamlを編集する。
これでDSE Clusterは構成の99%が決まってくる
変える必要がある部分は下記の部分。
  • Cluster name
  • num_token
  • initial_token
  • listen address
  • native transport address
  • seeds
  • endpoint snitch
逆にこの部分さえ変えれば安定運用が可能。
しかもエンタープライズ向けだと選択肢はおのずと限られてくる。

cluster name

clusterの名前を決めるところ
自分の会社では(多分どこも??)1サービス=1クラスターとしている
ここは好きな名前を付けてもらったらOK

num_token

ここでVirtual nodeの数を変更することができる。
これで1ノードにVirtual nodeを8つ割り当てパーティションキーを割り振ることができる。 今は128になってると思うけど、これ実は非推奨で8がいいらしい。
中のことまでは分かってないけど、多すぎると効率的な分配が難しいとのこと

initial_token

ここはシングルノード構成の時に使う設定
コメントアウトしておきましょう
Good Night

listen address

他ノードとつながるときに使用されるノードのことです。
ifconfigで出したプライベートIP v4で大丈夫です。

native_transport_address

cqlshとか使う時に接続されるアドレス
listen_addressでOK

seeds

最初に接続しに行くノードを指定することができます。
基本複数指定するのですが、すべてのノードを指定することは公式でやめてくれと出ています。

endpoint snitch

snitchとは各ノードがどこにあってどのラックにあるか指定する。
これによってCassandraの高可用性を担保することができる
GossipingPropertyFileSnitch 一択
cassandra-rackdc.propertiesファイル内のローカル・ノードのラックとデータ・センターを読み取り、これらの値をゴシップで他のノードに伝搬


Clusterを構成する

これでcassandra.yamlを適応させるために再起動してみると、、、
よし、、sudo service dse restartするぞ、、、
とすると、できない人がいると思います。自分はできなかった
cassandraのエラーコードはsystem.logに書かれるので見てみると
org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name Test Cluster != configured name XXX Cluster
まぁ用は/var/lib/cassandra/data/systemの中のデータと不整合が起きてるわけです
なのでもう
Good Bye
sudo rm -rf /var/lib/cassandra/data/system/*

この状態でrestartするとできます。これによって無事cassandra.yamlを適応することができました。

今からノードを追加していきましょう。
ノードの追加と言っても基本上の手順でOK

listen_addressとnative_transport_addressだけ変えてください。
seedsは3代構成なら1つでいいと思うのでnode1のものだけでいいと思う。6台ならseedsが3つでもいいかも
これで完成。また来週。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?