加入收藏 | 设为首页 |

雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?

海外新闻 时间: 浏览:122 次

Kubernetes规划的初衷是运转无状况作业负载。这些一般选用微服务架构的作业负载,是轻量级,可水平扩展,遵从十二要素运用程序,能够处理环形断路和随机Monkey测验。

另一方面,Kafka本质上是一个分布式数据库。这意味着你有必要处理状况,它比微服务更重量级。Kubernetes支撑有状况的作业负载,但你有必要慎重对待它,正如Kelsey Hightower在最近的两条推文中指出的那样:

现在你应该在Kubernetes上运转Kafka吗?我的反诘是:没有它,Kafka会跑得更好吗?这便是为什么我要指出Kafka和Kubernetes之间的彼此弥补性以及你或许遇到的圈套。

一、运转时

让咱们先看一下根本的东西——运转时自身。

1、进程

Kafka brokers对CPU很友爱。TLS或许会引进一些开支。假如Kafka客户端运用加密,则需求更多CPU,但这不会影响brokers。

2、内存

Kafka brokers是内存耗费大户。JVM堆一般能够约束为4-5 GB,但由于Kafka很多运用页面缓存,因而还需求满足的体系内存。在Kubernetes中,能够相应地设置容器资源约束和恳求。

3、存储

容器中的存储是时刻短的——重启后数据将丢掉。能够对Kafka数据运用emptyDir卷,这将发生相同的作用:brokers的数据将在停机后丢掉。您的音讯在其他broker上作为副本仍是能够运用的。因而,从头发动后,失利的broker有必要得仿制一切的数据,这或许是一个耗时进程。

这便是你应该运用耐久存储的原因。运用XFS或e雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?xt4的非本地耐久性块存储更适宜。我正告你:不要运用NFS。NFS v3和v4都不会起作用。

简而言之,Kafka broker会由于NFS“愚笨重命名”问题而无法删去数据目录,自行停止。假如你依然不相信我,那么请仔细阅读这篇博文[1]。存储有必要对错本地的,以便Kubernetes在从头发动或从头定位时能够更灵敏地挑选另一个节点。

4、网络

与大多数分布式体系相同,Kafka功用在很大程度上取决于低网络推迟和高带宽。不要企图将一切署理放在同一节点上,由于这会下降可用性。

假如Kubernetes节点呈现毛病,那么整个Kafka集群都会呈现毛病。不要跨数据中心扩展Kafka集群。这相同适用于Kubernetes集群。不同的可用区域是一个很好的权衡。

二、装备

1、清单

Kubernetes网站包括一个十分好的教程[2],介绍怎么运用清单设置ZooKeeper。由于ZooKeeper是Kafka的一部分,因而能够经过这个了解哪些Kubernetes概念被运用在这里。一旦了解,您也能够对Kafka集群运用相同的概念。

1)Pod

Pod是Kubernetes中最小的可布置单元。它包括您的作业负载,它代表群会集的一个进程。一个Pod包括一个或多个容器。全体中的每个ZooKeeper服务器和Kafka集群中的每个Kafka broker都将在一个独自的Pod中运转。

2)StatefulSet

StatefulSet是一个Kubernetes目标,用于处理需求和谐的多个有状况作业负载。StatefulSets保证Pod的有序性和唯一性的。

3)Headless Services

服务经过逻辑称号将Pod与客户端别离。Kubernetes担任负载平衡。可是,关于ZooKeeper和Kafka等有状况作业负载,客户端有必要与特定实例进行通讯。这便是 Headless Services发挥作用的当地:作为客户端,依然能够取得逻辑称号,但不用直接拜访Pod。

4)耐久卷

如上所述,需求装备非本地旭日阳刚耐久块存储。

Yolean[3]供给了一套全面的清单,能够帮助您开始运用Kubernetes上的Kafka。

2、Helm Charts

Helm是Kubernetes的包办理器,相似yum,apt,Homebrew或Chocolatey等OS包办理器。它答应您装置Helm Charts中描绘的预界说软件包。

精心规划的Helm Charts能简化一切参数正确装备的杂乱使命,以便在Kubernetes上运转Kafka。有几张图表适用于Kafka的的可供挑选:一个是处于演进状况的官方图表[4],一个来自Confluent,另一个来自Bitnami,仅举几例。

3、Operators

由于Helm的一些约束,另一种东西变得十分盛行:Kubernetes Operators。Operators不只能够为Kubernetes打包软件,还能够为Kubernetes布置和办理一个软件。

点评很高的Operators名单中说到Kafka有两个,其间一个是Strimzi[5],Strimzi使得在几分钟内发动Kafka集群变得十分简单,简直不需求任何装备,它增加了一些美丽的功用,如群集间点对点TLS加密。Confluent还宣告行将推出新的Operator。

4、功用

运转功用测验以对Kafka装置进行基准测验十分重要。在您遇到费事之前,它会为您供给有关或许的瓶颈的当地。

走运的是,Kafka现已供给了两个功用测验东西:kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh。记住常常运用它们。作为参阅,能够运用Jay Kreps的博客成果[6],或许 Stphane Maarek在 Amazon MSK的谈论[7]。

三、运维

1、监控

可见性十分重要,不然您将不知道发生了什么。现在,有一种不错的东西能够用云原生方法监控目标。Prometheus和Grafana是两种盛行的东西。Prometheus能够直接从JMX导出器搜集一切Java进程(Kafka,ZooKeeper,Kafka Connect)的目标。增加cAdvisor目标可为供给有关Kubernetes资源运用情况的雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?其他信息。

Strimzi为Kafka供给了一个高雅的Graf雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?ana仪表板示例。它以十分直观的方法可视化要害目标,如未仿制的和离线分区。它经过资源运用和功用以及稳定性目标来弥补这些目标。因而,能够免费取得根本的Kafka集群监控!

材料来历:

https://strimzi.io/docs/master/#kafka_dashboard

能够经过客户端监控(顾客和生产者目标),运用Burrow滞后监控,运用Kafka Monitor[8]进行端到端监控,来完结这个使命。

2、日志记载

日志记载是另一个要害部分。保证Kafka装置中的一切容器都记载到规范输出(stdout)和规范过错输出(stderr),并保证Kubernetes集群将一切日志聚合到中心日志记载设备中如Elasticsearch中。

3、健康检查

Kubernetes运用活跃度和安排妥当勘探器来确认Pod是否健康。假如活跃度勘探失利,Kubernetes将停止容器并在相应设置重启战略时主动重启。假如准备安排妥当勘探失利,那么Kubernetes将经过服务从服务恳求中删去该Pod。这意味着在这种情况下不再需求人工干预,这是一大长处。

4、翻滚更新

StatefulSets支撑主动更新:翻滚更新战略将一次更新一个Kafka Pod。经过这种方法,能够完结零停机时刻,这是Kubernetes带来雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?的另一大优势。

5、扩展

扩展Kafka集群并非易事。可是,Kubernetes能够很简单地将Pod缩放到必定数量的副本,这意味着能够声明式地界说所需数量的Kafka brokers。困难的部分是在扩大或缩小之前从头分配部分。相同,Kubernetes能够帮助您完结这项使命。

6、办理

经过在Pod中翻开shell,能够运用现有的shell脚本完结Kafka群集的办理使命,例如创立主题和从头分配分区。这不是一个很好的解决计划。Strimzi支撑与另一个Operator办理主题。这还有改善的地步。

7、备份和复原

现在Kafka的可用性还取决于Kubernetes的可用性。假如Kubernetes群集呈现毛病,那么在最坏的情况下Kafka群集也会毛病。

墨菲规律雷火电竞官网app下载-在K8S上运转Kafka适宜吗?会遇到哪些圈套?告知咱们,这也会发生在你身上,你会丢掉数据。要下降此危险,请保证您具有备份主意。MirrorMaker是一种可选计划,另一种或许是使用S3进行衔接备份,如Zalando的博客文章[9]所述。

四、定论

关于中小型Kafka集群,我肯定会挑选Kubernetes,由于它供给了更大的灵敏性并简化了操作。假如您在推迟和/或吞吐量方面具有十分高的非功用性要求,则不同的布置选项或许更有利。

>>>>

参阅链接

  • [1]https://engineering.skybettingandgaming.com/2018/07/10/kafka-nfs/

  • [2]https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/

  • [3]https://github.com/Yolean/kubernetes-kafka

  • [4]https://github.com/helm/charts/tree/master/incubator/kafka

  • [5]https://strimzi.io/

  • [6]https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

  • [7]https://medium.com/@stephane.maarek/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8

  • [8]https://github.com/linkedin/kafka-monitor

  • [9]https://jobs.zalando.com/tech/blog/backing-up-kafka-zookeeper/

  • 原文链接:https://blog.usejournal.com/kafka-on-kubernetes-a-good-fit-95251da55837

译者丨姜俊厚

来历丨Docker订阅号(ID:dockerone)

dbaplus社群欢迎广阔技术人员投稿,投稿邮箱:editor@dbaplus.cn

>>>>