Apache Cassandra

出自 ArchWiki

Apache Cassandra 是一个 NoSQL 多主数据库,具有线性可扩展性且没有单点故障。

安装

安装 cassandraAUR 软件包。

配置

systemd 单元

日志记录到 journald

该软件包默认将日志记录到 /var/log/cassandra/system.log。要改为记录到 journald,您需要编辑该单元,并通过在 ExecStart 行中添加 -f 将服务设置为在前台运行,并将 Type 设置为 simple,因为该进程将不再派生。

这也可以使用 systemd drop-in 文件完成

/etc/systemd/system/cassandra.service.d/override.conf
[Service]
Type=simple
ExecStart=
ExecStart=/usr/bin/cassandra -p /run/cassandra/cassandra.pid -f

如果 Cassandra 正在运行,您将需要 drain,然后重启 Cassandra。

$ nodetool drain

cassandra.yaml

默认的 cassandra.yaml 中有大量文档。 当通过 cassandraAUR 软件包安装时,它位于 /etc/cassandra/cassandra.yaml

需要更改的基本配置项

设置集群的名称。 对于您打算在此集群中拥有的所有节点,这需要保持一致。

cluster_name: 'Test Cluster'

设置 Cassandra 将写入到的目录,下面是如果未设置将使用的默认值。 如果可能,请将其设置为仅用于存储 Cassandra 数据的磁盘

data_file_directories:
    - /var/lib/cassandra/data

对于第一个节点(种子节点),请确保在其种子中包含其 IP 地址,以及至少 1 个其他节点。 对于所有其他节点,请尝试在此集群中设置广泛的节点范围。 如果节点无法连接到此配置中列出的种子之一,则启动时将失败。

seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "192.168.1.53, 192.168.1.52"

根据 Cassandra 用于存储数据的磁盘类型 (ssdspinning) 设置此项

disk_optimization_strategy: ssd|spinning

这是 Cassandra 将侦听客户端连接的地址

listen_address: 192.168.1.51

这是此节点将通告自身的地址,确保您的客户端和节点都可以通过此地址访问此节点

broadcast_address: 192.168.1.51

这是用于 thrift 连接的地址,设置为 0.0.0.0 它将侦听所有接口,只要它为安全起见进行了防火墙保护,这就可以了

rpc_address: 0.0.0.0

故障排除

如果 Cassandra 无法作为服务运行,请尝试运行 Cassandra

$ cassandra

如果您收到以下错误

Improperly specified VM option 'ThreadPriorityPolicy=42'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Cassandra 在 Java 8 和 Cassandra 4.0.2 开始,也在 Java 11 上运行。 您将需要安装正确的Java 并使用 systemd drop-in 文件覆盖默认 JVM

/etc/systemd/system/cassandra.service.d/override.conf
[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk

如果此文件已存在,只需将 Environment 行添加到 [Service] 块中。