本部分介绍了 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 设置来修改为日志文件分配的空间量。
- 修改
/opt/apigee/customer/application/cassandra.properties
以设置以下属性。如果该文件不存在,请创建一个:conf_logback_maxfilesize=20MB # max file size conf_logback_maxbackupindex=50 # max open files
- 使用以下命令重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
磁盘空间维护
您应该定期监控 Cassandra 磁盘利用率,以确保每个磁盘至少有 50% 是免费的。如果磁盘利用率升到超过 50%,建议您添加更多磁盘空间以减少正在使用的百分比。
Cassandra 会自动执行以下操作以减少其自己的磁盘利用率:
- 令牌过期时删除身份验证令牌。但是,可能需要几周时间才能释放令牌使用的磁盘空间,具体取决于您的配置。如果自动删除不足以维持足够的磁盘空间,请与支持团队联系,了解如何手动删除令牌以恢复空间。
关于数据压缩的注意事项:从适用于 Private Cloud 4.51.00 的 Edge 开始,新安装的 Apigee Cassandra 将使用 分层压缩策略创建键空间。
对于已经升级到 Private Cloud 4.51.00 的旧版私有云 Edge,安装操作将继续保留之前的压缩策略。如果现有压缩策略为 SizeTieredCompactionStrategy,我们建议更改为 LeveledCompactionStrategy,以提供更好的磁盘利用率。
注意:Cassandra 执行数据压缩时,可能需要大量的 CPU 周期和内存。但是,压缩完成后,资源利用率应恢复正常。
您可以在每个节点上运行 'Nodetool compactionstats'
命令以检查压缩是否正在运行。compactionstats
的输出会通知您是否有待处理的压缩要执行以及预计完成时间。