在 Fedora 中安装和配置 Cassandra

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

发布于

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

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

先决条件

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

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

安装 Java

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

java -version

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

sudo dnf update
sudo dnf install java-11-openjdk

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

下载 Cassandra 的二进制包

接下来,您需要下载 Cassandra 的二进制包,以便从本地安装 Cassandra。您可以通过以下命令来下载 Cassandra 的二进制包:

wget https://downloads.apache.org/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz

这个命令会从 Cassandra 的官方网站下载 Cassandra 3.11.11 版本的二进制包,并且保存为 apache-cassandra-3.11.11-bin.tar.gz 文件。您也可以根据您的需要选择其他的版本,比如 4.0.1 版本,这是 Cassandra 4.0 的最新的稳定版本。

然后,您需要解压 Cassandra 的二进制包,以便获取 Cassandra 的安装文件。您可以通过以下命令来解压 Cassandra 的二进制包:

tar xzf apache-cassandra-3.11.11-bin.tar.gz

这个命令会将 Cassandra 的二进制包解压到 apache-cassandra-3.11.11 目录中,这个目录包含了 Cassandra 的所有的安装文件。

安装 Cassandra

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

sudo mv apache-cassandra-3.11.11 /opt/cassandra

这个命令会将 Cassandra 的安装文件移动到 /opt/cassandra 目录中,这个目录是 Cassandra 的安装目录。您也可以根据您的需要选择其他的目录,但是您需要确保您有足够的权限来访问这个目录。

然后,您需要创建一个 Cassandra 的用户和组,以便运行 Cassandra 的服务。您可以通过以下命令来创建 Cassandra 的用户和组:

sudo groupadd cassandra
sudo useradd -g cassandra -d /opt/cassandra cassandra

这些命令会创建一个名为 cassandra 的用户和组,并且指定了其主目录为 /opt/cassandra。您也可以根据您的需要选择其他的名称和目录,但是您需要确保这个用户和组有足够的权限来访问 Cassandra 的安装目录。

接下来,您需要修改 Cassandra 的安装目录的所有者和权限,以便 Cassandra 的用户和组可以正常地访问和操作 Cassandra 的安装文件。您可以通过以下命令来修改 Cassandra 的安装目录的所有者和权限:

sudo chown -R cassandra:cassandra /opt/cassandra
sudo chmod -R 755 /opt/cassandra

这些命令会将 Cassandra 的安装目录的所有者和组修改为 cassandra,并且赋予其可读、可写、可执行的权限。

最后,您需要创建一个 Cassandra 的服务文件,以便使用 systemctl 命令来管理 Cassandra 的服务。您可以通过以下命令来创建 Cassandra 的服务文件:

sudo vim /etc/systemd/system/cassandra.service

这个命令会使用 vim 编辑器来创建一个名为 /etc/systemd/system/cassandra.service 的文件,这个文件是 Cassandra 的服务文件。您也可以使用其他的编辑器来创建这个文件,但是您需要确保这个文件的内容如下:

[Unit]
Description=Apache Cassandra
After=network.target

[Service]
Type=forking
User=cassandra
Group=cassandra
Environment="CASSANDRA_HOME=/opt/cassandra"
Environment="CASSANDRA_CONF=/opt/cassandra/conf"
Environment="CASSANDRA_PID_FILE=/var/run/cassandra/cassandra.pid"
ExecStart=/opt/cassandra/bin/cassandra -p /var/run/cassandra/cassandra.pid
ExecStop=/opt/cassandra/bin/stop-server
Restart=always

[Install]
WantedBy=multi-user.target

这个文件定义了 Cassandra 的服务的描述、依赖、类型、用户、组、环境变量、启动命令、停止命令、重启策略等信息。您需要根据您的实际情况修改这些信息,比如您的 Cassandra 的安装目录、配置目录、进程文件等。

在创建了 Cassandra 的服务文件之后,您需要重新加载 systemd 的配置,以便识别 Cassandra 的服务。您可以通过以下命令来重新加载 systemd 的配置:

sudo systemctl daemon-reload

这个命令会让 systemd 重新读取 /etc/systemd/system 目录中的所有的服务文件,包括 Cassandra 的服务文件。

配置 Cassandra

在安装 Cassandra 之后,您可能需要对 Cassandra 进行一些配置,以适应您的实际需求。Cassandra 的配置文件位于 /opt/cassandra/conf/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

结论

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