Apache Cassandra 维护任务

本部分介绍了 Cassandra 的定期维护任务。

抗熵维护

Apache Cassandra 环形节点需要定期维护,以确保所有节点的一致性。如需执行此维护,请使用以下命令:

apigee-service apigee-cassandra apigee_repair -pr

Apigee 建议在运行此命令时执行以下操作:

  • 在每个 Cassandra 节点(跨所有区域或数据中心)上运行。
  • 一次在一个节点上运行,以确保环中所有节点的一致性。 在多个节点上同时运行修复作业可能会影响 Cassandra 的运行状况。

    如需检查节点上的修复作业是否已成功完成,请在节点的 system.log 文件中查找包含最新修复会话的 UUID 和“会话已成功完成”字样的条目。 以下是日志条目示例:

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • 在工作负载相对较低的时段运行(该工具会给系统带来大量负载)。
  • 至少每 7 天运行一次,以消除与 Cassandra 的“遗忘删除”相关的问题。
  • 在不同天数的不同节点上运行,或者安排在每个节点上运行之间间隔几个小时。
  • 使用 -pr 选项(分区器范围)仅指定节点的主分区器范围。

如果您为 Cassandra 启用了 JMX 身份验证,则在调用 nodetool 时必须包含用户名和密码。例如:

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

您还可以运行以下命令来检查 apigee_repair: 支持的选项

apigee-service apigee-cassandra apigee_repair -h

注意apigee_repair 是 Cassandra 的 nodetool 修复程序的封装容器,它会在执行 Cassandra 修复之前执行额外的检查。

如需了解详情,请参阅以下资源:

日志文件维护

Cassandra 日志存储在每个节点的 /opt/apigee/var/log/apigee-cassandra 目录中。默认情况下,最多可以创建 50 个日志文件,每个日志文件的大小上限为 20 MB;达到此上限后,系统会在创建较新的日志时删除较旧的日志。

如果您发现 Cassandra 日志文件占用过多空间,可以通过修改 log4j 设置来修改为日志文件分配的空间量。

  1. 修改 /opt/apigee/customer/application/cassandra.properties 以设置以下属性。如果该文件不存在,请创建一个:
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. 使用以下命令重启 Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

磁盘空间维护

您应定期监控 Cassandra 磁盘利用率,确保每个磁盘至少有 50% 的可用空间。如果磁盘利用率攀升至 50% 以上,我们建议您增加磁盘可用空间,以降低使用百分比。

Cassandra 会自动执行以下操作来减少自身的磁盘使用率:

  • 在令牌过期时删除身份验证令牌。不过,释放令牌占用的磁盘空间可能需要几周时间,具体取决于您的配置。如果自动删除功能不足以维持足够的磁盘空间,请与支持团队联系,了解如何手动删除令牌以释放空间。
  • 数据压缩注意事项:从 Edge for Private Cloud 4.51.00 开始,新安装的 Apigee Cassandra 将使用 分层压缩策略创建键空间。

    已升级到 Private Cloud 4.51.00 的旧版 Edge for Private Cloud 安装将继续保留之前的压缩策略。如果现有压缩策略为 SizeTieredCompactionStrategy,我们建议改用 LeveledCompactionStrategy,以提高磁盘利用率。

注意:Cassandra 执行数据压缩时,可能会占用大量 CPU 周期和内存。但是,压缩完成后,资源利用率应该会恢复正常。 您可以在每个节点上运行 'Nodetool compactionstats' 命令,以检查是否正在运行压缩。compactionstats 的输出会告知您是否有待执行的压缩操作以及预计完成时间。