我在生产环境中运行一个 10 节点的 Cassandra 集群。 99% 写; 1% 读取,0% 删除。节点有 32 GB RAM; C* 使用 8 GB 堆运行。每个节点都有一个用于提交日志的 SDD 和用于数据的 2x4 TB 旋转磁盘 (sstables)。该架构仅使用 key 缓存。 C* 版本为 2.1.2。
可以预见,集群将在不久后耗尽空闲磁盘空间。所以它的存储容量需要增加。客户端更喜欢增加磁盘大小而不是添加更多节点。因此,计划是将每个节点中的 2x4 TB 旋转磁盘替换为 3x6 TB 旋转磁盘。
- 这里有什么明显的陷阱/注意事项需要注意吗?像:
- C* 能否使用这种 RAM 处理每个节点高达 18 TB 的数据大小?
- 是否可以通过挂载一个新的(更大的)磁盘来增加磁盘大小,将所有 SS 表复制到其中,然后将其挂载到与原始(较小的)磁盘相同的挂载点(以替换它)?
最佳答案
我建议添加节点而不是增加当前节点的数据大小。添加节点将通过具有易于更换的小型节点来利用 Cassandra 的分布特性。
此外,对于旋转磁盘,集群中单个节点的推荐大小约为 1 TB。一旦高于该值,我只能想象性能会显着下降。
更不用说如果一个节点丢失了它的数据,恢复它需要很长时间,因为它必须从其他节点流式传输大量数据。
Can C* handle up to 18 TB data size per node with this amount of RAM?
这在很大程度上取决于您的工作量。
Is it feasible to increase the disk size by mounting a new (larger) disk, copy all SS tables to it, and then mount it on the same mount point as the original (smaller) disk (to replace it)?
我看不出为什么它不起作用。
关于cassandra - 在 Cassandra 节点上增加磁盘大小时要考虑什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509595/