注意
主に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つでもいいかも
これで完成。また来週。