如何在单节点 Ubuntu 22.04 集群上安装 Apache Cassandra NoSQL 数据库
本教程适用于这些操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 16.04(Xenial Xerus)
在此页
- 先决条件
- 第 1 步 - 安装 Java
- 第 2 步 - 安装 Apache Cassandra
- 第 3 步 - 检查 Cassandra 服务
- 第 4 步 - 配置 Cassandra
- 4.1 启用用户身份验证
- 4.1.1 - 添加管理员超级用户
- 4.2 - 编辑控制台配置文件
- 4.3 - 重命名集群
Apache Cassandra 是一个开源的 NoSQL 分布式数据库管理系统。 Cassandra 可以通过添加更多自动复制数据的节点来水平扩展。无需停机即可添加或删除节点。这些节点可以在逻辑上组织成一个集群或一个环,并跨多个数据中心设置,以提高高性能应用程序的速度和可靠性。
在本教程中,我们将学习如何在单节点 Ubuntu 22.04 集群上安装 Apache Cassandra。
先决条件
-
A Server running Ubuntu 22.04 with a minimum of 2GB of RAM.
-
A non-sudo user with root privileges.
-
Everything is updated.
$ 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
第一步是添加 Cassandras 官方存储库。
运行以下命令将存储库添加到系统存储库列表中。
$ 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。上面的命令使用
40x
代表Cassandra 4.0系列。将存储库密钥添加到系统受信任的存储库列表中。
$ 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 服务
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
命令验证状态。$ 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 Command shell 实用程序。使用默认用户
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. >
创建一个新的超级用户。将
[username]
和[yourpassword]
替换为您的凭据。> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;
注销外壳。
> exit
使用新的超级用户帐户重新登录。
$ cqlsh -u username -p yourpassword
从默认
cassandra
帐户中删除提升的权限。> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false; > REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;
授予超级用户帐户所有权限。
> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
注销外壳。
> exit
4.2 - 编辑控制台配置文件
如果要自定义 Cassandra Shell,可以通过编辑
cqlshrc
文件来实现。该文件的默认位置在~/.cassandra
目录中。如果你想从不同的目录加载它,你可以在运行时将参数--cqlshrc /customdirectory
传递给cqlsh
工具。 Cassandras 默认安装不包含该文件。因此,我们需要创建它。在
~/.cassandra
目录中创建cqlshrc
文件。我们不需要使用sudo
来执行~/.cassandra
目录中的任何功能。 Cassandra 要求此目录中的文件归本地帐户所有,不应从其他帐户或组访问。$ touch ~/.cassandra/cqlshrc
如果
~/.cassandra
目录不存在,则使用以下命令创建它。$ mkdir ~/.cassandra
打开文件进行编辑。
$ nano ~/.cassandra/cqlshrc
Cassandras Github 存储库提供了一个示例
cqlshrc
文件。您可以根据需要从那里复制任何或所有部分。所有设置都使用;;
进行注释。通过删除双分号取消注释,然后根据您的需要进行更改。我们将配置 shell 以使用超级用户凭据自动登录。将
[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 shell。
$ 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. >
注意:在
cqlshrc
文件中存储用户名和密码的方法将从 Cassandra 4.1 版本开始弃用。要了解更多信息,您可以阅读 Cassandras 站点上的条目。4.3 - 重命名集群
最后,我们将集群名称从 Test Cluster 重命名为您选择的名称。
登录到
cqlsh
终端。$ cqlsh
在以下命令中将
[clustername]
替换为您的新集群名称。> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
退出外壳。
> 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
登录到 shell 以查看新名称。
$ 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. >
结论
在本教程中,您学习了如何在 AlmaLinux 或 Rocky Linux 服务器上安装 Apache Cassandra。您还学习了如何添加用户身份验证和执行一些基本配置。要了解更多信息,请访问官方 Cassandra 文档。如果您有任何问题,请在下面的评论中发表。