使用Kubernetes和Apache Cassandra的云原生应用和数据 – 第三部分

把你学到的东西提交到 Git 中

当我第一次将Apache Cassandra投入生产时,版本.8,有一种期望,即要将其投入生产,你需要准备好做一些工作。那时候我就爱上了Cassandra社区。我知道Cassandra适合我的使用情况,但我从不觉得自己是在孤军奋战,因为社区里有很多人通过电子邮件和聊天帮助我。最终,我发现自己和Patricio Echagüe、Nate McCall和Ed Capriolo(都是早期的提交者)坐在这个狭小的方形办公室里,让我的代码的最后一部分发挥作用,并排除故障。在某些时候,我们需要向Cassandra提交代码,以修复我们发现的问题。这样做可以保证为未来的用户编纂经验。我们都不在同一家公司工作,但我们对建立大规模的基础设施和前沿工程有着共同的热情。多年来,随着基础设施的发展,我们作为一个不断发展的社区,将经验的蜂巢式思维转化为代码。

当我们在做大规模的数据库操作和学习如何成为Cassandra DBA的时候,一个叫做Kubernetes的小项目开始获得牵引力,并吸引了部署应用程序的同类型工程师的注意。DevOps关注的是需要做什么,而网站可靠性工程(SRE)问的是如何用自动化和可观察性来完成它。现在,SRE正带着同样的问题来看待Cassandra,并强烈希望使用一个单一的控制平面。在Kubernetes中运行Cassandra。

将所有的东西结合起来

在过去的一年里,你可能听说过 “Cassandra和Kubernetes在一起就像花生酱和果冻”,这是一种有趣的说法,它们是非常合适的。说实话,当我说我喜欢花生酱和果冻三明治的时候,我并不是说我想做一个。我更喜欢已经做好的!基础设施也是如此。我能否得到一些预先组装好的、有理智的默认值和我需要的组件?这就是K8ssandra的精神和使命。除了这个响亮的名字之外,K8ssandra还不仅仅是一个工具的集合。它是一个来自我们社区用户的经验的集合,被打包并准备好供大家自由使用。

在Kubernetes中运行Cassandra,以及大多数有状态的系统,需要通过试验和错误或阅读文档来获得一系列知识。这是一个完美的时间,只想得到三明治!就像在那些早期,我们学到了关于部署Cassandra的新东西,并把它们提交到项目中,以帮助DBA们。K8ssandra项目是一个为在Kubernetes上用Apache Cassandra部署数据服务的SRE们提供知识的地方。

K8ssandra开箱

我相信你一定在YouTube上看到过这样的视频:有人打开某个新产品并描述盒子里的内容。在我们深入了解K8ssandra的细节时,这带来了一个很好的观点。这不是一个单一的可执行文件,也不是一个可以展开的tarball。这是要用helm[3]来部署的,它是Kubernetes的打包工具,可以使安装变得简单。使用K8ssandra的真正价值在于你拥有一个典型的运行中的Cassandra集群所需要的所有东西,并进行了配置和装箱,随时可以使用。因此,让我们打开盒子,看看里面有什么(图1)。

图 1: K8ssandra的引擎盖下

Apache Cassandra

节目中的明星,但以一种新的、更现代的方式出现。由于Cassandra的基本部署单位是节点,它很好地补充了Kubernetes所偏好的可组合性。Kubernetes中的有状态的工作负载可能是一个挑战,但数据库的Dynamo模型[4]允许我们在弹性、扩展、自愈的数据服务中做最基本的原点。值得注意的是,Cassandra项目社区已经接受了Kubernetes作为Cassandra的控制平面。预计在4.0[5]之后会有很多变化,会使在Kubernetes中运行的效率大大提高。同时,你会得到一些在Kubernetes环境中正常运行的东西,而且维护工作非常少。

cass-operator

衔接Kubernetes和Cassandra的最关键因素是操作者。在过去的两年里,Cassandra社区一直将大量的注意力集中在运营商上,作为适当的起点。如果有神奇的事情发生,那都是在运营商那里。它作为Kubernetes的控制平面和Cassandra集群所做的实际操作之间的转换层。最近,Apache Cassandra项目同意围绕一个名为cass-operator[6]的单一操作者进行聚集。来自Orange的CassKop[7]的一些伟大贡献将与DataStax运营商合并,最终版本将被合并到Apache项目中。这是实际生产知识进入代码的最好例子。为cass-operator作出贡献的社区成员每天都在Kubernetes中运行大量的Cassandra。

Cassandra Reaper

Reaper是一个帮助管理Cassandra集群中反熵修复这一关键维护任务的工具。Cassandra Reaper最初由Spotify创建,后来被The Last Pickle采用和维护,[8]现在是Apache Cassandra的一个子项目。如果你让一群Cassandra DBA坐下来谈谈他们的工作,他们很有可能会谈及运行修复。对于基于Dynamo的系统来说,这是一个重要的操作,因为它可以保持数据的一致性,尽管不可避免地会发生一些问题,如节点故障和网络分区。这就是你需要知道的全部内容,因为在K8ssandra中,Reaper会自动为你运行这些操作因为这是为SRE设计的,所以你可以期待一套很好的预建指标来验证一切都在顺利进行。

Cassandra Medusa

如果你没有办法备份和恢复你的数据,就不能说它在生产中是正确的。和Reaper一样,Medusa[9]现在是Apache Cassandra的一个子项目,通过Spotify和The Last Pickle。备份一个分布式系统需要一个与大多数DBA不同的方法。Medusa不仅帮助协调这些任务,而且还管理着静态数据的放置。最初的实施允许在云对象存储(S3桶)上存储和检索备份集,更多的选择正在进行中。最有趣的功能可能是恢复。不是为了恢复受损的数据库,而是为了在CI/CD管道中快速补充你的测试集群。我已经迫不及待地想知道SRE们使用这个工具的创造性方法的第一次会议讲座了。

指标收集和输出到普罗米修斯

在SRE的愿望清单中,最重要的是可观察性部分。与 “测量一切 “的口号相一致,K8ssandra预设了一个伟大的指标集合,这些指标需要在一个集群中得到落实。Cassandra有很多指标,对于一个新用户来说,这些指标可能会让人不知所措。我们不仅要策划最重要和最有用的指标,还要创建预建的Grafana仪表盘(图2)来帮助你理解它们。甚至还有人在讨论添加Jaeger追踪功能。你应该看到这个组件发生了很多事情,因为这是Kubernetes的一个巨大的领域,运营商在他们的收藏夹中添加。如果你对作为一个SRE的贡献感兴趣,这是一个很好的开始。

图2:用K8ssandra制作的Grafana仪表盘实例

让我们描绘一个令人敬畏的未来

这就是今天盒子里的东西,但现在是我们的社区围绕K8ssandra再次铺设道路的时候了。K8ssandra已经从Spotify、Apple、Instaclustr、Orange、New Relic、DataStax和许多其他工程组织的贡献中受益。当我们把Cassandra作为Kubernetes的默认数据平面时,我们将作为一个社区学到更多的东西。当我们做到这一点时,这些学习将被投入到K8ssandra的下一个版本中,并使其变得更加完善。

如果你准备好了,或者想了解更多关于如何参与,我们已经在K8ssandra.io[1]创建了第一站。在那里你可以得到关于如何开始的简单说明,或者如果你想与社区联系并成为项目的一部分。对于我认为将是一个令人兴奋的项目的早期阶段,因为我们作为一个社区一起向前迈进。有很多Cassandra在使用,也有很多Kubernetes。它们并不总是在一起,所以让我们把它作为一个聚集的地方,使之成为现实!”。

DataStax在不同的时间举办实践研讨会,所以请确保查看DataStax研讨会的eventbrite页面[10],了解任何可能适合你的近期活动,或者随时在DataStax/dev[11]尝试我们的免费实践学习方案。此外,DataStax将推出在Kubernetes中运行Cassandra的新认证。如果你有兴趣,你可以注册以获得这些证书的通知[12]。

如果你是一个想成为SRE的DBA,这是一个很好的开始。构建云原生应用[13]是未来的趋势,而Kubernetes上的数据是这个未来的关键部分。我期待着一起构建这个未来。

链接和文献

[1] k8ssandra.io

[2] helm.sh

[3] helm.sh

[4] en.wikipedia.org/wiki/Dynamo…

[5] cassandra.apache.org/blog/2020/0…

[6] github.com/datastax/ca…

[7] github.com/Orange-Open…

[8] cassandra-reaper.io

[9] github.com/thelastpick…

[10] www.eventbrite.co.uk/o/datastax-…

[11] www.datastax.com/dev/kuberne…

[12] www.datastax.com/dev/certifi…

[13] www.datastax.com/cloud-nativ…

The postCloud-native applications and data with Kubernetes and Apache Cassandra – Part 3appeared first onDevOps Conference.

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享