软件版本

  • 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。