首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头/库伯内特斯+刚尼康/芹菜-多名工人对复制品?

码头/库伯内特斯+刚尼康/芹菜-多名工人对复制品?
EN

Stack Overflow用户
提问于 2018-07-31 09:36:25
回答 2查看 14.2K关注 0票数 76

我想知道如何正确的方法来部署一个容器式Django应用程序,使用枪支和芹菜。

具体来说,这些过程中的每一个都有一个垂直缩放的内置方式,使用workers作为火奴制,concurrency用于芹菜。然后是使用replicas进行缩放的Kubernetes方法。

还存在这样的概念,即设置工作人员等于CPU的某些功能。古尼坎建议

每个核心2-4名工人

但是,我不明白这在K8s上是什么意思,其中CPU是一个可分的共享资源--除非我使用resoureceQuotas。

我想了解什么是最佳实践。我可以想到三种选择:

  • 是否有单身工人为炮眼和芹菜同时使用1,并使用复制品进行刻度?(横向缩放)
  • 有枪角和芹菜运行在一个单一的副本部署与内部缩放(垂直缩放)。这将意味着分别设置相当高的工人和并发值。
  • 一种介于1到2之间的混合方法,在这里,我们以较小的值运行枪支和芹菜&并发(例如2),然后使用K8s部署副本进行横向扩展。

在这方面有一些问题,但没有一个能给出一个深入的/深思熟虑的答案。如果有人能分享他们的经验。

注意:我们对Gunicorn使用默认的worker_class sync

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 09:02:15

这些技术并不像最初看上去的那样相似。它们处理应用程序堆栈的不同部分,实际上是互补的。

Gunicorn是用来扩展web请求并发性的,而芹菜应该被看作是一个工作队列。我们很快就会到库伯奈特斯的。

古尼坎

Web请求并发性主要受到网络I/O或"I/O绑定“的限制。这些类型的任务可以使用线程提供的协作调度进行缩放。如果您发现请求并发性限制了您的应用程序,那么增加gunicorn工作线程很可能是开始的地方。

芹菜

繁重的提升任务,例如压缩图像,运行一些ML algo,都是"CPU绑定“任务。他们不能像更多的CPU那样从线程中获益。这些任务应该由芹菜工人进行卸载和并行处理。

库伯内斯

Kubernetes派上用场的方法是提供开箱即用的横向可伸缩性和容错能力。

在架构上,我会使用两个单独的k8s部署来表示应用程序的不同规模关注点。一次部署Django应用程序,另一次部署芹菜工人。这允许您独立地扩展请求吞吐量与处理能力。

我运行芹菜工人固定在一个单一核心的每个容器(-c 1),这大大简化了调试,并坚持Docker的“一个过程,每个容器”的口号。它还为您提供了可预见性的额外好处,因为您可以通过增加副本数量来在每核基础上扩展处理能力。

缩放Django应用程序部署是您需要DYOR为您的特定应用程序找到最佳设置的地方。同样,坚持使用--workers 1,这样每个容器都有一个进程,但是您应该尝试使用--threads,以找到最佳的解决方案。同样,只需更改副本数量,就可以将水平缩放留给Kubernetes。

这肯定是我在做类似项目时不得不考虑的事情。

票数 41
EN

Stack Overflow用户

发布于 2018-08-15 08:23:49

我们使用Django和芹菜运行Kubernetes kluster,并实现了第一个方法。正因为如此,我对这种权衡的一些想法,以及为什么我们选择这种方法。

在我看来,Kubernetes是关于水平缩放副本的(称为部署)。在这方面,最有意义的做法是尽可能保持部署的单一用途,并随着需求的增加而增加部署(以及耗尽的情况下)。因此,LoadBalancer管理到Gunicorn部署的通信量,Redis队列管理给芹菜工人的任务。这确保了底层的码头容器是简单的和小的,我们可以单独(和自动地)按我们认为合适的比例来扩展它们。

至于您对每个部署需要多少workers/concurrency的想法,这实际上取决于运行Kubernetes的底层硬件,需要进行实验才能正确。

例如,我们在Amazon上运行我们的集群,并试验了不同的EC2实例类型和workers,以平衡性能和成本。每个实例拥有的CPU越多,需要的实例就越少,每个实例可以部署的workers也就越多。但我们发现,部署更小的实例在我们的情况下更便宜。我们现在部署多个m4.大型实例,每个部署有3个工作人员。

有趣的一点是:gunicorn和亚马逊负载平衡器结合在一起,我们的性能真的很差,因此我们转而使用uwsgi,提高了很大的性能。但原则是一样的。

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51610189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档