Apache Cassandraは、単一障害点のないオープンソースの高性能NoSQLデータベース管理システムです。 Apache Cassandraは、MySQL/PostgreSQLで見られるテーブルモデルの代わりにクラスターモデルを使用します。 Cassandraは、データを失う余裕のないアプリケーションに適しています。データは、フォールトトレランスのために複数のノードに自動的に複製されます。障害が発生したノードは、ダウンタイムなしで自動的に置き換えることができます。
スケーラビリティ、高可用性、および高性能を求めている場合は、ApacheCassandraが最適です。
このチュートリアルでは、CentOS8にApacheCassandraをインストールする方法を紹介します。
- 2GB以上のRAMを搭載したCentOS8を実行しているサーバー。
- rootパスワードがシステムに設定されています。
開始する前に、サーバーを最新の安定バージョンに更新することをお勧めします。次のコマンドでサーバーを更新できます:
dnf update
サーバーが更新されたら、サーバーを再起動して変更を適用します。
Javaのインストール
Apache Cassandraでは、OpenJDK8とPython2がシステムにインストールされている必要があります。次のコマンドを使用して、OpenJDK8とPython2をインストールできます。
dnf install java-1.8.0-openjdk-devel python2
両方のパッケージがインストールされたら、次のコマンドを使用してJavaのバージョンを確認できます。
java -version
次の出力が表示されます。
openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
ApacheCassandraをインストールする
デフォルトでは、ApacheCassandraはCentOS8のデフォルトリポジトリでは使用できません。したがって、そのためのリポジトリを作成する必要があります。以下に示すように、新しいリポジトリファイル/etc/yum.repos.d/cassandra.repoを作成できます。
nano /etc/yum.repos.d/cassandra.repo
次の行を追加します:
[cassandra] name = DataStax Repo for Apache Cassandra baseurl = http://rpm.datastax.com/community enabled = 1 gpgcheck = 0
ファイルを保存して閉じてから、次のコマンドを使用してApacheCassandraをインストールします。
dnf install dsc20
インストールが完了したら、次のステップに進むことができます
CassandraのSystemdユニットファイルを作成する
デフォルトでは、ApacheCassandraパッケージはそれ自体のサービスファイルを生成できません。したがって、Cassandraサービスを管理するためにsystemdサービスファイルを作成する必要があります。次のコマンドで作成できます:
nano /etc/systemd/system/cassandra.service
次の行を追加します:
[Unit] Description=Apache Cassandra After=network.target [Service] PIDFile=/var/run/cassandra/cassandra.pid User=cassandra Group=cassandra ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid Restart=always [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。次に、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、Cassandraサービスを開始し、次のコマンドを使用してシステムの再起動後に開始できるようにします。
systemctl start cassandra
systemctl enable cassandra
次のコマンドを使用して、Cassandraサービスのステータスを確認することもできます。
systemctl status cassandra
次の出力が表示されます。
? cassandra.service - Apache Loaded: loaded (/etc/systemd/system/cassandra.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2019-12-07 01:25:26 EST; 1min 51s ago Main PID: 1888 (java) Tasks: 53 (limit: 25044) Memory: 272.7M CGroup: /system.slice/cassandra.service ??1888 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:Threa> Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,054 Writing [email protected](10104/101040 serialized/live bytes, 259 ops) Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,118 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-4-Data.db > Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,124 Compacting [SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-> Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,169 Node localhost/127.0.0.1 state jump to normal Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,294 Compacted 4 sstables to [/var/lib/cassandra/data/system/local/system-local-jb-5,].> Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,322 Starting listening for CQL clients on localhost/127.0.0.1:9042... Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,376 Using TFramedTransport with a max frame size of 15728640 bytes. Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,378 Binding thrift service to localhost/127.0.0.1:9160 Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,391 Using synchronous/threadpool thrift server on localhost : 9160 Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,422 Listening for thrift clients...
これで、ApacheCassandraがサーバーにインストールされて実行されます。次のコマンドを使用して、実行されているかどうかを確認できます。
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 46.11 KB 256 100.0% 2a680007-8c30-4bde-9a3f-9fa212b96d11 rack1
ApacheCassandraを構成する
デフォルトでは、Cassandraはローカルホストからの接続のみを受け入れるように構成されています。
Cassandraクエリ言語を使用してCassandraにログインすることもできます。 CQLシェルにアクセスするには、次のコマンドを実行します。
cqlsh
次の出力が表示されます。
Connected to Test Cluster at localhost:9160. [cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0] Use HELP for help. cqlsh>にHELPを使用します
上記の出力では、Cassandraクラスターの名前が「TestCluster」であることがわかります。このデフォルトのクラスター名を変更することもできます。
これを行うには、次のコマンドを使用してCQLシェルにログインします。
cqlsh
次に、次のコマンドを実行して、以下に示すようにクラスター名を「HowtoForgeCluster」に変更します。
cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
次に、次のコマンドを使用してシェルを終了します。
cqlsh>exit;
次に、cassandra.yaml構成ファイルを編集して、新しいクラスター名を定義する必要もあります。
nano /etc/cassandra/default.conf/cassandra.yaml
次の行を変更します:
cluster_name: 'HowtoForge Cluster'
終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用してシステムキャッシュをクリアします。
nodetool flush system
最後に、Apache Cassandraサービスを再起動して、新しい構成を適用します。
systemctl restart cassandra
次に、次のコマンドを使用してCQLシェルにログインします。
cqlsh
クラスタ名が「HowtoForgeCluster」に変更されていることがわかります。
Connected to HowtoForge Cluster at localhost:9160. [cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0] Use HELP for help. cqlsh>にHELPを使用します
おめでとう! CentOS8にApacheCassandraを正常にインストールして構成しました。ご不明な点がございましたら、お気軽にお問い合わせください。