在 Debian 11 中安装和配置 Cassandra

本文将介绍如何在 Debian 11 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。

发布于

Cassandra 是一个分布式的 NoSQL 数据库,它可以提供高可用性、高扩展性和高性能的数据存储和查询服务。Cassandra 的数据模型基于列族,它可以支持灵活的数据结构和复杂的查询。Cassandra 还提供了一致性调节、数据复制、故障恢复等高级功能,使其适用于大规模的数据处理场景。

本文将介绍如何在 Debian 11 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。本文假设您已经拥有了一台 Debian 11 的服务器,并且可以通过 SSH 连接到该服务器。

先决条件

在安装和配置 Cassandra 之前,您需要满足以下的先决条件:

  • 您的服务器至少需要 4 GB 的内存,8 GB 以上是推荐的。
  • 您的服务器需要有足够的磁盘空间,至少 50 GB,以存储 Cassandra 的数据和日志文件。
  • 您的服务器需要安装 Java 8 或更高版本,Cassandra 需要 Java 环境来运行。
  • 您的服务器需要安装 apt-transport-https 和 gnupg 包,以支持 HTTPS 的软件源和数字签名的验证。
  • 您需要使用 root 用户或具有 sudo 权限的用户来执行安装和配置的命令。

安装 Java

首先,您需要检查您的服务器是否已经安装了 Java,并且是 8 或更高的版本。您可以通过以下命令来查看 Java 的版本:

java -version

如果您的服务器没有安装 Java,或者安装的版本低于 8,您可以通过以下命令来安装 OpenJDK 11,这是一个开源的 Java 实现:

sudo apt update
sudo apt install openjdk-11-jdk

安装完成后,您可以再次使用 java -version 命令来验证 Java 的版本。

添加 Cassandra 的软件源

接下来,您需要添加 Cassandra 的软件源,以便从官方的仓库中下载和安装 Cassandra。您可以通过以下命令来添加 Cassandra 的软件源:

echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee /etc/apt/sources.list.d/cassandra.list

这个命令会将 Cassandra 的软件源的地址写入到 /etc/apt/sources.list.d/cassandra.list 文件中,这个文件会被 apt 工具读取。这里我们使用的是 311x 版本,这是 Cassandra 3.11 的最新的维护版本。您也可以根据您的需要选择其他的版本,比如 40x 版本,这是 Cassandra 4.0 的最新的稳定版本。

然后,您需要导入 Cassandra 的公钥,以便验证 Cassandra 的软件包的数字签名。您可以通过以下命令来导入 Cassandra 的公钥:

curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -

这个命令会从 Cassandra 的官方网站下载公钥,并且使用 apt-key 工具将其添加到 apt 的信任列表中。

最后,您需要更新 apt 的软件源缓存,以便获取 Cassandra 的软件包的信息。您可以通过以下命令来更新 apt 的软件源缓存:

sudo apt update

安装 Cassandra

现在,您可以开始安装 Cassandra 了。您可以通过以下命令来安装 Cassandra:

sudo apt install cassandra

这个命令会从 Cassandra 的软件源中下载和安装 Cassandra 的软件包,以及其依赖的软件包。安装完成后,Cassandra 会自动启动,并且注册为一个系统服务,您可以使用 systemctl 命令来管理 Cassandra 的服务。

配置 Cassandra

在安装 Cassandra 之后,您可能需要对 Cassandra 进行一些配置,以适应您的实际需求。Cassandra 的配置文件位于 /etc/cassandra/cassandra.yaml,您可以使用任意的文本编辑器来修改这个文件。以下是一些常见的配置选项:

  • cluster_name:这个选项指定了 Cassandra 的集群的名称,您需要确保集群中的所有节点使用相同的名称,否则会导致节点之间无法通信。默认的名称是 Test Cluster,您可以根据您的需要修改为其他的名称。
  • listen_address:这个选项指定了 Cassandra 的监听地址,即 Cassandra 接受其他节点的连接请求的地址。默认的地址是 localhost,这意味着 Cassandra 只能在本地访问,不适合分布式的场景。您可以修改为您的服务器的实际的 IP 地址,或者使用 auto 来让 Cassandra 自动检测您的服务器的 IP 地址。
  • rpc_address:这个选项指定了 Cassandra 的远程过程调用(RPC)的地址,即 Cassandra 接受客户端的连接请求的地址。默认的地址是 localhost,这意味着 Cassandra 只能在本地访问,不适合远程的场景。您可以修改为您的服务器的实际的 IP 地址,或者使用 0.0.0.0 来让 Cassandra 接受任意的 IP 地址的连接请求。
  • seeds:这个选项指定了 Cassandra 的种子节点的地址,即 Cassandra 在启动时用来发现其他节点的地址。默认的地址是 127.0.0.1,这意味着 Cassandra 只能发现本地的节点,不适合分布式的场景。您可以修改为您的集群中的一个或多个节点的 IP 地址,用逗号分隔。种子节点的作用是帮助新加入的节点找到集群中的其他节点,因此您不需要将所有的节点都列为种子节点,一般来说,每个数据中心的 2-3 个节点就足够了。
  • authenticator:这个选项指定了 Cassandra 的认证器,即 Cassandra 用来验证用户身份的组件。默认的认证器是 AllowAllAuthenticator,这意味着 Cassandra 不需要用户提供任何的用户名和密码,不适合安全的场景。您可以修改为 PasswordAuthenticator,这意味着 Cassandra 会要求用户提供用户名和密码,以增加安全性。
  • authorizer:这个选项指定了 Cassandra 的授权器,即 Cassandra 用来控制用户权限的组件。默认的授权器是 AllowAllAuthorizer,这意味着 Cassandra 不会对用户的操作进行任何的限制,不适合安全的场景。您可以修改为 CassandraAuthorizer,这意味着 Cassandra 会根据用户的角色来分配不同的权限,以增加安全性。

除了以上的配置选项,Cassandra 还有很多其他的配置选项,您可以根据您的需要进行修改。您可以参考 Cassandra 的官方文档 来了解更多的配置选项的含义和用法。

在修改了 Cassandra 的配置文件之后,您需要重启 Cassandra 的服务,以使配置生效。您可以通过以下命令来重启 Cassandra 的服务:

sudo systemctl restart cassandra

设置初始密码

如果您将 Cassandra 的认证器修改为 PasswordAuthenticator,那么您需要设置一个初始的密码,以便登录 Cassandra。Cassandra 提供了一个默认的超级用户,用户名是 cassandra,密码也是 cassandra。您可以使用这个用户来登录 Cassandra,并且修改其密码,以增加安全性。

您可以通过以下命令来登录 Cassandra:

cqlsh -u cassandra -p cassandra

这个命令会使用 cqlsh 工具来连接 Cassandra,并且提供默认的用户名和密码。如果连接成功,您会看到类似以下的输出:

Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.11 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cassandra@cqlsh>

然后,您可以通过以下命令来修改默认用户的密码:

ALTER USER cassandra WITH PASSWORD 'new_password';

这个命令会将默认用户的密码修改为 new_password,您可以根据您的需要选择一个强壮的密码。修改完成后,您会看到类似以下的输出:

cassandra@cqlsh> ALTER USER cassandra WITH PASSWORD 'new_password';
cassandra@cqlsh>

最后,您可以通过以下命令来退出 Cassandra:

exit

这个命令会断开 Cassandra 的连接,并且返回到命令行界面。

验证安装

在安装和配置 Cassandra 之后,您可以通过一些简单的操作来验证 Cassandra 是否正常工作。您可以通过以下命令来再次登录 Cassandra:

cqlsh -u cassandra -p new_password

这个命令会使用 cqlsh 工具来连接 Cassandra,并且提供修改后的用户名和密码。如果连接成功,您会看到类似以下的输出:

Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.11 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cassandra@cqlsh>

接下来,您可以通过以下命令来创建一个测试的键空间:

CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};

这个命令会创建一个名为 test 的键空间,并且指定了其复制策略为 SimpleStrategy,复制因子为 1。这意味着这个键空间的数据只会存储在一个节点上,不会进行数据复制。这适合测试的场景,但不适合生产的场景。创建完成后,您会看到类似以下的输出:

cassandra@cqlsh> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
cassandra@cqlsh>

然后,您可以通过以下命令来切换到测试的键空间:

USE test;

这个命令会将当前的操作上下文切换到 test 键空间,这样您就可以在这个键空间中创建和操作数据表了。切换完成后,您会看到类似以下的输出:

cassandra@cqlsh> USE test;
cassandra@cqlsh:test>

接下来,您可以通过以下命令来创建一个测试的数据表:

CREATE TABLE users (
  id int PRIMARY KEY,
  name text,
  email text
);

这个命令会创建一个名为 users 的数据表,并且指定了其列的名称和类型,以及主键的列。这个数据表用来存储用户的信息,包括用户的编号、姓名和邮箱。创建完成后,您会看到类似以下的输出:

cassandra@cqlsh:test> CREATE TABLE users (
               ...   id int PRIMARY KEY,
               ...   name text,
               ...   email text
               ... );
cassandra@cqlsh:test>

接下来,您可以通过以下命令来向测试的数据表中插入一些数据:

INSERT INTO users (id, name, email) VALUES (1, 'Alice', '[email protected]');
INSERT INTO users (id, name, email) VALUES (2, 'Bob', '[email protected]');
INSERT INTO users (id, name, email) VALUES (3, 'Charlie', '[email protected]');

这些命令会向 users 数据表中插入三条记录,分别表示三个不同的用户。插入完成后,您会看到类似以下的输出:

cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (1, 'Alice', '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (2, 'Bob', '[email protected]');
cassandra@cqlsh:test> INSERT INTO users (id, name, email) VALUES (3, 'Charlie', '[email protected]');
cassandra@cqlsh:test>

最后,您可以通过以下命令来查询测试的数据表中的数据:

SELECT * FROM users;

这个命令会从 users 数据表中查询所有的数据,并且以表格的形式显示出来。查询完成后,您会看到类似以下的输出:

cassandra@cqlsh:test> SELECT * FROM users;

 id | email             | name
----+-------------------+---------
  1 | [email protected] |   Alice
  2 |   [email protected] |     Bob
  3 | [email protected] | Charlie

(3 rows)
cassandra@cqlsh:test>

这样,您就完成了对 Cassandra 的安装和验证的过程,您可以看到 Cassandra 已经可以正常地存储和查询数据了。

Cassandra 的基本操作

在使用 Cassandra 的过程中,您可能需要了解一些 Cassandra 的基本操作,比如如何启动、停止、重启、加载配置、登录、退出等。以下是一些常用的 Cassandra 的基本操作的命令:

  • 启动 Cassandra 的服务:sudo systemctl start cassandra
  • 停止 Cassandra 的服务:sudo systemctl stop cassandra
  • 重启 Cassandra 的服务:sudo systemctl restart cassandra
  • 加载 Cassandra 的配置:sudo systemctl reload cassandra
  • 查看 Cassandra 的服务状态:sudo systemctl status cassandra
  • 登录 Cassandra:cqlsh -u username -p password
  • 退出 Cassandra:exit
  • 查看 Cassandra 的版本:nodetool version
  • 查看 Cassandra 的集群状态:nodetool status
  • 查看 Cassandra 的帮助信息:cqlsh --helpnodetool --help

结论

本文介绍了如何在 Debian 11 系统中安装和配置 Cassandra,以及如何使用 Cassandra 的基本操作。您可以根据本文的内容来在您的服务器上部署和使用 Cassandra,以享受 Cassandra 的高性能和高可用性的数据服务。如果您想了解更多关于 Cassandra 的信息,您可以参考 Cassandra 的官方网站Cassandra 的官方文档