生产环境部署建议
环境要求
下面的表格列举了性能测试环境和生产环境的系统及硬件要求,您也可以参考容量规划章节,根据您的集群实际容量规划来精确订制部署方案。
注意
由于 DataNode 使用了 Linux 内核的 Punch Hole 功能,因此需要根据 DataNode 的文件系统,选择对应的内核版本
文件系统 | 内核版本要求 |
---|---|
XFS | >=2.6.38 |
ext4 | >=3.0 |
Btrfs | >=3.7 |
tmpfs(5) | >=3.5 |
gfs2(5) | >=4.16 |
为了加快元数据读取速度,元数据都缓存在内存中,而 DataNode 数据主要占用磁盘资源,如果希望最大化利用节点资源,可以采用 DataNode 和 MetaNode 在同一节点混合部署的方式。
容量规划
首先你要预估集群在未来相当长的一段时间内,最高预期文件数量和存储容量。
其次你还要对目前拥有的机器资源有清晰地了解。知道每台机器的内存大小、CPU核心数、磁盘容量。
如果您对以上数据了解清楚了,可以通过第二小节给出的经验参考值来看看自己的当前环境属于哪一种规模,能承载怎样的文件体量,或者需要针对当前文件体验需求应该准备多少资源,以防止频繁扩充机器资源。
文件总数量 | 文件总储量 | 集群总内存 | 集群总磁盘空间 |
---|---|---|---|
10亿 | 10PB | 2048 GB | 10PB |
提示
大文件占比越高,MetaNode 压力会越大。
当然,如果您觉得目前的资源足够使用,不需要一次性满足容量增长需求,那么可以及时关注 MetaNode/DataNode 的容量预警信息。
推荐
当内存或者磁盘即将使用完时,动态增加 MetaNode/DataNode 进行容量的调整。也就是说,如果发现磁盘空间不够了,可以增加磁盘或者增加 DataNode,如果发现全部 MetaNode 内存过满,可以增加 MetaNode 来缓解内存压力。
多机房部署
如果你希望集群需要支持机房容错性,可以部署跨机房的 CubeFS 集群。
同时需要注意一下几点:
- 由于机房之间的通信延迟高于单机房,所以如果对于高可用的要求大于低延迟,可以选择跨机房部署方案。
- 如果对性能要求更高,则建议单机房部署集群。
配置方案:在 DataNode/MetaNode 配置文件中修改 zoneName 参数,指定为所在机房名称,然后启动 DataNode/MetaNode 进程,则该机房会随着 DataNode/MetaNode 的注册而被 Master 存储并记录。
创建单机房 volume:
$ cfs-cli volume create {name} --zone-name={zone}
提示
为了防止单机房 volume 初始化失败,请保证单个机房的 DataNode/MetaNode 不少于3。
创建跨机房volume:
$ cfs-cli volume create {name} --cross-zone=true