软件版本
- Ceph Version
OCTOPUS, v15.2.4
- Rook Version
v1.4.x
- Kubernetes Version
v1.18.8
硬件需求
CPU MDS MDS服务对CPU敏感,它会动态地重分布它们的负载;建议:4+;
MON MON只简单地维护着集群运行图的副本,因此对CPU不敏感,如果后期不运行计算任务;建议:1+;
OSD OSD运行着RADOS服务、用CRUSH计算数据存放位置、复制数据、维护它自己的集群运行图副本,因此OSD需要一定的处理能力;建议:2+;
RAM MDS MDS内存利用率取决于其缓存配置为消耗多少内存,可通过mds_cache_memory参数调整,建议:1G+;
OSD 使用BlueStore作为后端时,OSD需要3-5G内存,可通过osd_memory_target参数调整,建议:4G+; ** MON/MGR** For smalle clusters: 1-2G, 建议:2G+; For large clusters:5-10G,建议:10G+; 也可以通过参数mon_osd_cache_size和rocksdb_cache_size进行调优。
Storage Disk Driver 考虑到每GB性价比,容量建议:1TB+;
同时,单个驱动器容量越大,其对应的OSD所需内存就越大,特别是在重均衡、回填、恢复期间。根据经验,1TB的存储空 间大约需要1GB内存(建议每个OSD每TB配置2GB内存)。Ceph在写入数据时,必须先写入日志才会回应确认了写动作;而 btrfs文件系统能同时写入日志数据和对象数据,xfs和ext4却不能。
所以建议:在单独的硬盘运行操作系统、 OSD数据和OSD日志。同时OSD磁盘需要大于5G以上,否则运行OSD Pod时将产生错误: Unable to use device 4.00 GB /dev/vdb, LVs would be smaller than 5GB
性能提升
-
日志存储建议SSD磁盘,但是需要评估SSD磁盘的性能和做好SSD磁盘的规划;
-
提升CephFS文件系统性能的一种常用方法是从CephFS文件内容里分离出元数据;
Ceph提供了默认的metadata存储池来存储CephFS元数据,所以不需要给CephFS元数据创建存储池,但是可以给它创建 一个仅指向某主机SSD的CRUSH 运行图。
注意事项
-
不顾分区而在单个硬盘上运行多个OSD,这样不明智!
-
不顾分区而在运行了OSD的硬盘上同时运行MON或MDS也不明智!
-
如果每台主机运行多个OSD ,需保证内核的最小版本需求,参考:https://docs.ceph.com/en/latest/start/os-recommendations
-
OSD数量较多(>20)时,主机会派生出大量线程,尤其是在恢复和重均衡期间。很多Linux内核默认的最大线程数较小(如 32k个),如果遇到了这类问题,可以把kernel.pid_max值调高些。理论最大值是4194303。
例如把下列这行加入/etc/sysctl.conf文件中:kernel.pid_max = 4194303
Network 建议每台机器最少两个千兆网卡,分别用于公网(前端)和集群网络(后端);建议服务器应配置底板管理控制器(Baseboard Management Controller, BMC),管理和部署工具也应该大规模使用BMC。建议配置:
- OSD Network
2x 10GB Ethernet NICs
- Client Network
2x 1GB Ethernet NICs
- Mgmt. Network
2x 1GB Ethernet NICs
故障域 故障域指任何导致不能访问一个或多个OSD的故障,可以是主机上停止的进程、硬盘故障、操作系统崩溃、有问题的网卡、 损坏的电源、断网、断电等等。规划硬件需求时,要在多个需求间寻求平衡点,努力减少故障域带来的成本削减、隔离每个 潜在故障域增加的成本。
部署规划 基于K8S Cluster的部署规划进行。
CPU、Memory、Storage生产环境上请根据需要进行进行调整,此处给出的配置是测试配置(因为内存有限)。
节点规划
说明:建议采用浏览器查看。
- K8S Master Component
kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、etcd、docker、flanel、keepalived、haproxy/nginx
- K8S Node Component
kubelet、kube-proxy、docker、flannel、node-exporter
- MON
3+, 奇数个;
- OSD
3+;
- MGR
2+;
- MDS
2+;
**
网络拓扑**
注意事项
- 生产中建议OS、日志、数据分别使用不同的磁盘;
- 生产中建议MDS与MON分开部署,MGR与MON部署在一起;
- MDS建议只有一个Active,其它的处于Standby,不要使用Snapshot;
- 避免向上调整max_mds,因为这会导致多个MDS守护进程同时处于活动状态;
- 生产中建议OSD网络、Mgmt.网络、Client网络分开,并提供网络冗余(bound, team);
- 生成中硬件配置及网络规划参考:https://docs.ceph.com/en/latest/start/hardware-recommendations 操作系统版本 Linux 内核
- Ceph RBD
- 4.14.x
- 4.9.x
- Ceph FS Client
- FUSE Client,the most accessible and the easiest to upgrade to the * version of Ceph used by the storage cluster。
- Kernel Client,better performance, 建议4.x+。 系统平台 OS: CentOS Linux release 7.8.2003 (Core), Kernel: 4.19.x(本文使用版本:4.19.12-1.el7.elrepo.x86_64)
注意事项
- 默认内核带的Ceph客户端较老,不建议使用Kernel自带的Ceph Client;
- 默认内核btrfs版本较老,不建议使用btrfs来支持OSD,要升级到推荐的内核,或者改用xfs。