关于Rook的日益普及,我想谈一谈它的陷阱以及即将到来的问题。
关于我:Ceph的锤版管理经验,电报是
t.me/ceph_ru社区的创始人。
为了避免毫无根据,我将参考Habr接受的有关ceph问题的帖子(根据评分来判断)。 我在这些帖子中也遇到了大多数问题。 链接到帖子末尾使用的材料。
在有关Rook的帖子中,我们提到ceph是有原因的-Rook本质上是用kubernetes包装的ceph,这意味着它继承了所有问题。 我们将从头孢问题开始。
简化集群管理
Rook的优点之一是通过kuberentes管理ceph的便利。
但是,ceph包含1000多个用于调整的参数,同时通过rook,我们只能编辑其中的一小部分。
发光的例子
> ceph守护进程mon.a config show | wc -l
1401
Rook的定位是安装和更新ceph的便捷方式在没有Rook的情况下安装ceph并没有问题-Ansible剧本是在30分钟内编写的,但是在更新问题方面存在很多问题。
引用克罗克的帖子示例:从悍马升级为宝石后,暗恋可调参数的错误操作
> Ceph OSD美眉秀可调参数
{
...
“ Straw_calc_version”:1,
“ Allowed_bucket_algs”:22,
“个人资料”:“未知”,
Optimal_tunables:0,
...
}
但是即使在次要版本中也存在问题。
示例:12.2.6更新使群集运行状况良好并有条件损坏了PG
ceph.com/releases/v12-2-8-released不更新,等待和测试? 但是我们也使用Rook来方便更新。
Rook中灾难恢复集群的复杂性
示例:OSD在其脚下崩溃错误信息。 您怀疑问题出在配置中的一个参数中,您想更改特定守护程序的配置,但是您不能更改,因为您有kubernetes和DaemonSet。
别无选择。 ceph告诉osd.num注入函数不起作用-OSD位于。
调试复杂度
对于某些设置和性能测试,必须直接连接到osd守护程序套接字。 就Rook而言,您首先需要找到合适的容器,然后进入它,找到缺少的用于调试调整的容器,并且非常烦恼。
依次提高OSD的难度
示例:OSD落在OOM上,重新平衡开始,然后下一个跌落。
解决方案:一次提升一个OSD,等待它完全包含在集群中,然后提升下一个。 (Ceph的报告中有更多内容。灾难的解剖。)
在裸机安装的情况下,这是手动完成的,对于Rook和节点上的一个OSD而言,没有特殊问题,如果节点上的OSD> 1,则会出现连续提升的问题。
当然,它们是可以解决的,但是为了简化起见,我们选择了Rook,但是却变得复杂了。
为ceph恶魔选择限制的难度
对于裸机ceph安装,可以很容易地计算每个群集的必要资源-有公式,也有研究。 当使用弱CPU时,您仍然必须进行一系列性能测试以找出Numa是什么,但它仍然比Rook中的简单。
对于Rook,除了可以计算的内存限制外,还存在设置CPU限制的问题。
然后您必须进行性能测试。 在低估限制的情况下,您会得到一个较慢的集群,在设置为unlim的情况下,您将获得有效的CPU使用率和重新平衡,这将严重影响kubernetes中的应用程序。
网络问题v1
对于ceph,建议使用2x10gb网络。 一个用于客户流量,另一个用于办公室流量ceph(重新平衡)。 如果您在裸机上使用ceph,则此隔离很容易配置,如果您与Rook一起使用,则通过网络隔离将为您带来问题,因为远离每个群集配置,您都可以将两个不同的网络馈送到pod。
网络问题v2
如果您拒绝共享网络,则通过重新平衡,ceph流量将阻塞整个通道,并且您在kubernetes中的应用程序将变慢或崩溃。 您可以降低ceph的重新平衡率,但是由于长时间的重新平衡,您会增加第二个节点从磁盘或OOM上的群集掉出的风险,并且已经保证了群集上的只读权限。
长时间的重新平衡-长时间制动
从Ceph帖子中引用。 灾难解剖。测试集群性能:
4 KB的写操作需要1毫秒,在1个流中每秒执行1000次操作。
大小(对象大小)为4 MB的操作需要22毫秒,性能为45个操作/秒。
因此,当三个域之一发生故障时,群集将处于降级状态一段时间,并且一半的热对象将根据不同的版本进行扩散,然后一半的写操作将从强制恢复开始。
强制恢复时间大约是计算得出的-在降级对象中进行写操作。
首先,我们在22毫秒内读取4 MB,然后写入22毫秒,然后在1毫秒内写入4 KB数据本身。 当标准性能为1 ms时,对SSD上降级的对象执行一次写入操作总共需要45 ms,这会使性能下降45倍。
我们拥有降级对象的百分比越多,效果越差。
事实证明,重新平衡速率对于群集的正确运行至关重要。
ceph的服务器特定设置
ceph可能需要特定的主机调整。
例如:sysctl设置和相同的JumboFrame,其中的某些设置会对您的有效负载产生负面影响。
对白嘴鸦的真正需求仍存在疑问
如果您在云中,则可以从云提供商处获得存储,这更加方便。
如果您在服务器上,则无需kubernetes,ceph管理将更加方便。
您是否在一些低成本主机中租用服务器? 然后,您会发现网络带来很多乐趣,包括其延迟和带宽,这显然会对ceph产生负面影响。
总计: kuberentes的引入和存储库的引入是不同的任务,具有不同的介绍和不同的解决方案选项-混合它们,然后为此目的进行危险的权衡。 即使在设计阶段,将这些解决方案组合起来也将非常困难,并且仍然需要一段时间。
二手文献清单:
1号帖子但是您说Ceph ...但是他很好吗?
发布#2 Ceph。 灾难解剖