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
  • 在相对较低的工作负载期间运行(该工具会给 系统)。
  • 至少每七天运行一次,以消除与 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/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% 以上,我们建议您 添加更多磁盘空间以减少使用百分比。

Cassandra 会自动执行以下操作来 自己的磁盘利用率:

  • 令牌过期时删除身份验证令牌。但也可能是 需要几周的时间来释放令牌使用的磁盘空间,具体取决于您的 配置。如果自动删除不足以维护 没有足够的磁盘空间,请与支持团队联系,了解如何手动删除令牌以恢复 空间。
  • 数据压缩。我们建议将键空间的压缩策略更改为 LeveledCompactionStrategy, 可提供比默认磁盘更好的磁盘利用率策略 SizeTieredCompactionStrategy。请参阅 <ph type="x-smartling-placeholder"></ph> 分层压缩策略中所述。

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