単一ノードのUbuntu 22.04クラスターにApache Cassandra NoSQLデータベースをインストールする方法
単一ノードのUbuntu 22.04クラスターにApache Cassandra NoSQLデータベースをインストールする方法
このチュートリアルはこれらのOSバージョンのために存在します
- Ubuntu 22.04 (ジャミー・ジェリーフィッシュ)
- Ubuntu 20.04 (フォーカルフォッサ)
- Ubuntu 16.04 (ゼニアル・ゼクス)
このページで
- 前提条件
- ステップ1 - Javaをインストールする
- ステップ2 - Apache Cassandraをインストールする
- ステップ3 - カサンドラスサービスをチェック
ステップ4 - Cassandraを構成する
- 4.1 ユーザー認証を有効にする
- 4.1.1 - 管理者スーパーユーザーを追加する
- 4.2 - コンソール設定ファイルを編集する
- 4.3 - クラスターの名前を変更する
Apache CassandraはオープンソースのNoSQL分散データベース管理システムです。Cassandraは、データを自動的に複製するノードを追加することで横方向にスケールさせることができます。ノードはダウンタイムなしで追加または削除できます。ノードは論理的にクラスターまたはリングとして整理し、複数のデータセンターに設定することで、高性能アプリケーションの速度と信頼性を向上させることができます。
このチュートリアルでは、シングルノードのUbuntu 22.04クラスターにApache Cassandraをインストールする方法を学びます。
前提条件
最低2GBのRAMを搭載したUbuntu 22.04を実行しているサーバー。
ルート権限を持つ非sudoユーザー。
すべてが更新されています。
sudo apt update && sudo apt upgrade
ステップ1 - Javaをインストールする
Apache Cassandraは機能するためにJava 8またはJava 11を必要とします。Cassandraの最新バージョンはJava 11の完全なサポートを含んでおり、これを使用します。
sudo apt install openjdk-11-jdk
Javaのインストールを確認してください。
java -version
openjdk 11.0.15 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
ステップ2 - Apache Cassandraをインストールする
最初のステップは、Cassandraの公式リポジトリを追加することです。
次のコマンドを実行して、リポジトリをシステムのリポジトリリストに追加します。
echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
このチュートリアルを書いている時点で、Cassandraの最新バージョンは4.0.5です。上記のコマンドは、Cassandraの4.0シリーズを表すために40xを使用しています。
リポジトリキーをシステムの信頼されたリポジトリリストに追加します。
wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo tee /etc/apt/trusted.gpg.d/cassandra.asc
システムのリポジトリリストを更新します。
sudo apt update
カサンドラをインストールする。
sudo apt install cassandra
ステップ3 - カサンドラサービスをチェック
Cassandra は自動的にサービスデーモンを作成し、起動します。サービスのステータスを確認してください。
sudo systemctl status cassandra
次の出力を得るべきです。
? cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Mon 2022-07-25 11:40:42 UTC; 12min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 48 (limit: 2241)
Memory: 1.3G
CPU: 38.219s
CGroup: /system.slice/cassandra.service
??4602 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseNUMA ->
Jul 25 11:40:42 cassandra systemd[1]: Starting LSB: distributed storage system for structured data...
Jul 25 11:40:42 cassandra systemd[1]: Started LSB: distributed storage system for structured data.
ノードツールコマンドを使用してステータスを確認することもできます。
nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 69.08 KiB 16 100.0% 6690243a-950d-4d64-9463-aa722f8064d4 rack1
ステップ4 - Cassandraを構成する
Cassandraの設定ファイルのデフォルトの場所は/etc/cassandraです。ログとデータディレクトリのデフォルトの場所は/var/log/cassandraと/var/lib/cassandraです。
ヒープサイズなどのJVMレベルの設定は、/etc/cassandra/cassandra-env.shファイルを介して設定できます。追加のJVMコマンドライン引数をJVM_OPTS変数に渡すことができます。引数は、Cassandraが起動するときに渡されます。
4.1 ユーザー認証を有効にする
ユーザー認証を有効にするための最初のステップは、/etc/cassandra/cassandra.yaml ファイルのバックアップを取ることです。
sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
cassandra.yamlファイルを編集するために開いてください。
sudo nano /etc/cassandra/cassandra.yaml
このファイルで次のパラメータを見つけてください。
...
authenticator: AllowAllAuthenticator
...
authorizer: AllowAllAuthorizer
...
roles_validity_in_ms: 2000
...
permissions_validity_in_ms: 2000
...
下記のようにパラメータの値を変更してください。
...
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
...
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
...
roles_validity_in_ms: 0
...
permissions_validity_in_ms: 0
. . .
必要に応じて他の設定を構成できます。コメントアウトされている場合は、コメントを解除してください。
完了したら、Ctrl + X を押してファイルを保存し、プロンプトが表示されたらYを入力します。
変更された設定を有効にするためにCassandraを再起動します。
sudo systemctl restart cassandra
4.1.1 - 管理者スーパーユーザーを追加する
認証を有効にしたので、ユーザーを作成する必要があります。そのために、Cassandraコマンドシェルユーティリティを使用します。デフォルトユーザーcassandraの資格情報でログインしてください。
cqlsh -u cassandra -p cassandra
あなたは次のシェルを手に入れるでしょう。
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cassandra@cqlsh>
新しいスーパーユーザーを作成します。[username] と [yourpassword] をあなたの認証情報に置き換えてください。
cassandra@cqlsh> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
シェルからログアウトします。
cassandra@cqlsh> exit
新しいスーパーユーザーアカウントで再度ログインしてください。
cqlsh -u username -p yourpassword
デフォルトの cassandra アカウントから昇格した権限を削除してください。
username@cqlsh> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
username@cqlsh> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
スーパーユーザーアカウントにすべての権限を付与します。
username@cqlsh> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
シェルからログアウトします。
username@cqlsh> exit
4.2 - コンソール設定ファイルを編集する
Cassandraシェルをカスタマイズしたい場合は、cqlshrcファイルを編集することで可能です。ファイルのデフォルトの場所は~/.cassandraディレクトリにあります。別のディレクトリから読み込む場合は、cqlshツールを実行する際に--cqlshrc /customdirectoryという引数を渡すことができます。Cassandraのデフォルトインストールにはそのファイルは含まれていません。したがって、私たちはそれを作成する必要があります。
「~/.cassandra」ディレクトリにcqlshrcファイルを作成します。「~/.cassandra」ディレクトリ内の機能を実行するのにsudoを使用する必要はありません。Cassandraは、このディレクトリ内のファイルがローカルアカウントによって所有され、他のアカウントやグループからアクセスできないことを要求します。
touch ~/.cassandra/cqlshrc
~/.cassandra ディレクトリが存在しない場合は、以下のコマンドを使用して作成してください。
mkdir ~/.cassandra
ファイルを編集のために開いてください。
nano ~/.cassandra/cqlshrc
カサンドラのGithubリポジトリには、サンプルのcqlshrcファイルがあります。ニーズに応じて、そこからセクションをコピーすることができます。すべての設定は;;を使ってコメントされています。二重セミコロンを削除してコメントを解除し、ニーズに応じて変更を加えてください。
シェルを設定してスーパーユーザーの資格情報で自動的にログインするようにします。[username]と[password]を前のステップで作成した資格情報に置き換えてください。
....
[authentication]
;; If Cassandra has auth enabled, fill out these options
username = [username]
password = [password]
....
変更したいその他の設定を編集します。完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。
cqlshrcファイルのアクセス権を更新します。これにより、他のユーザーグループがファイルにアクセスできなくなります。
chmod 600 ~/.cassandra/cqlshrc
新しい変更を使ってCassandraシェルにログインします。
cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
navjot@cqlsh>
注: ユーザー名とパスワードを cqlshrc ファイルに保存する方法は、Cassandra の 4.1 バージョンから非推奨になります。詳しくは、Cassandra のサイトの項目をお読みください。
4.3 - クラスターの名前を変更する
最後に、クラスタ名をテストクラスタからあなたが選んだ名前に変更します。
cqlshターミナルにログインします。
cqlsh
以下のコマンドで[clustername]を新しいクラスタ名に置き換えてください。
username@cqlsh> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
シェルを終了します。
username@cqlsh> exit
/etc/cassandra/cassandra.yamlファイルを編集のために開きます。
sudo nano /etc/cassandra/cassandra.yaml
cluster_nameという変数の値を、お好きな名前に置き換えてください。
...
The name of the cluster. This is mainly used to prevent machines in
one logical cluster from joining another.
cluster_name: '[new_name]'
...
完了したら、Ctrl + X を押してファイルを保存し、プロンプトが表示されたらYを入力します。
Cassandraシステムキャッシュをクリアしてください。
nodetool flush system
カサンドラを再起動してください。
sudo systemctl restart cassandra
シェルにログインして新しい名前を確認してください。
cqlsh
Connected to howtoforge at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.5 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
navjot@cqlsh>
結論
このチュートリアルでは、AlmaLinuxまたはRocky LinuxサーバーにApache Cassandraをインストールする方法について学びました。また、ユーザー認証を追加し、いくつかの基本的な設定を行う方法についても学びました。詳しくは、公式のCassandraドキュメントをご覧ください。質問がある場合は、下のコメントに投稿してください。