如何在CentOS 8上安装Apache Cassandra NoSQL数据库

Apache Cassandra是一个开源的高性能NoSQL数据库管理系统,没有单点故障。 Apache Cassandra使用集群模型,而不是MySQL / PostgreSQL中的表模型。 Cassandra适用于无法承受丢失数据的应用程序。数据会自动复制到多个节点以实现容错功能。故障节点可以自动更换,而无需停机。

Apache Cassandra非常适合那些寻求可伸缩性,高可用性和高性能的用户。

本教程显示了如何在CentOS 8上安装Apache Cassandra。

要求条件

  • 运行带有至少2 GB RAM的CentOS 8的服务器。
  • 在系统上已经设置了root密码。

引言

在开始之前,我们建议您将服务器更新到最新的稳定版本。您可以使用以下命令更新服务器:

dnf update

服务器更新后,重新启动并应用您的更改。

安装Java

要使用Apache Cassandra,您需要在系统上安装OpenJDK 8和Python2。您可以使用以下命令安装OpenJDK 8和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)

安装Apache Cassandra

默认情况下,Apache Cassandra不能与CentOS 8默认存储库一起使用。因此,您需要为其创建存储库。您可以创建一个新的存储库文件/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

保存并关闭文件,然后使用以下命令安装Apache Cassandra:

dnf install dsc20

安装完成后,您可以继续执行下一步

创建Cassandra Systemd单位文件

默认情况下,Apache Cassandra软件包无法生成自己的服务文件。因此,有必要创建一个systemd服务文件来管理Cassandra服务。您可以使用以下命令创建它。

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...

测试Apache Cassandra安装

现在,Apache Cassandra已安装并在服务器上运行。您可以使用以下命令检查它是否正在运行:

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

配置Apache Cassandra

默认情况下,Cassandra配置为仅接受来自本地主机的连接。

您还可以通过Cassandra查询语言登录到Cassandra。要访问CQL Shell,请执行以下命令:

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> 

在上面的输出中,您可以看到Cassandra集群的名称是“ Test Cluster”。您可以更改此默认群集名称。

为此,请使用以下命令登录到CQL Shell:

cqlsh

接下来,运行以下命令,将群集名称更改为“ HowtoForge Cluster”,如下所示。

cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';

然后使用以下命令退出shell:

cqlsh>exit;

接下来,您还需要编辑cassandra.yaml配置文件以定义新的集群名称。

nano /etc/cassandra/default.conf/cassandra.yaml

更改以下行:

cluster_name: 'HowtoForge Cluster'

完成后,保存并关闭文件。然后,使用以下命令清除系统缓存:

nodetool flush system

最后,重新启动Apache Cassandra服务以应用新配置。

systemctl restart cassandra

现在,使用以下命令登录到CQL Shell:

cqlsh

您可以看到群集名称已更改为“ HowtoForge Cluster”。

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> 

结论

恭喜你! Apache Cassandra已在CentOS 8上成功安装和配置。如有任何疑问,请随时与我们联系。

Sidebar