当前位置: 首页 > 知识库问答 >
问题:

Docker:在同一个节点上有真正的负载平衡性能吗?

金理
2023-03-14

在此页面上,docker文档展示了一个由4个节点和8个web服务组成的集群示例。部署策略均匀地部署容器:我假设每个节点2个。还添加了负载平衡器服务。

如果我理解正确,您将有3个节点和2个Web应用容器,第四个节点有2个Web应用容器和一个负载均衡器容器。

在同一节点上进行负载平衡是否有真正的性能提升?

具有负载平衡器的节点在忙时是否会对自己进行负载平衡?

共有1个答案

沙星波
2023-03-14

在我看来,这取决于:

  1. 您的Web应用程序架构,
  2. 运行它的引擎,和
  3. 您的服务器容量(CPU、内存、IO带宽等)

例如,一个节点web应用程序是一个单线程应用程序,根据它的编写方式,它可能会或可能不会在运行它的机器上以最佳方式运行。例如,如果您有一个计算量大的应用程序,或者如果应用程序的某些部分执行阻塞IO(文件、http等)操作,那么您将很快达到单线程应用程序在单核上运行的极限。如果您的CPU有额外的内核,那么您的节点应用程序将不会使用它们,并且不会使用额外的电源。

在这种情况下,是的,运行应用程序的多个实例(“它们之间的负载平衡”)可以提供明显的改进,只要您的CPU和其他资源没有被任何一个实例耗尽。换句话说,如果应用程序的单个实例没有充分利用主机上可用的全部CPU容量,那么运行多个实例会有所帮助。

但是,如果您的web应用程序和运行它的引擎能够多线程并利用多个CPU核,那么运行它的多个实例不会增加任何价值,事实上可能会对服务器的性能产生不利影响。

您在构建应用程序和配置服务器时的最终目标应该是最佳利用所有可用资源:CPU、内存、磁盘和网络带宽。如果应用程序的单个实例可能会耗尽其中任何一个资源,那么启动其他实例没有任何好处。但是,如果单个实例无法使用所有资源(自然地,如Node的单线程性质,或通过设计,如当您的应用程序限制自己使用过多的内存或磁盘访问等),那么您可以通过运行多个实例来利用剩余的容量肩并肩。

 类似资料:
  • 什么是负载均衡器? 负载平衡改进了跨多个计算资源(如计算机、计算机群集、网络链路、中央处理器或磁盘驱动器)的工作负载分布 NodePort不是负载平衡器。(我知道一旦流量在集群内,kube proxy就会在pod之间进行负载平衡)我的意思是,最终用户点击http://NODEIP:30111(例如)访问应用程序的URL。即使POD之间的流量是负载平衡的,用户仍然会点击一个节点,即“节点”,它是K8

  • 在Kubernetes中创建负载平衡器类型的服务时,它是创建一个全新的外部负载平衡器,还是只为负载平衡器类型的第一个服务创建一个负载平衡器,并将该负载平衡器重新用于负载平衡器类型的所有后续服务? 这个问题特别重要,因为为每个服务构建一个单独的负载平衡器对我来说成本太高。 如果它特定于云提供商,我使用Azure,但我很想知道其他云提供商是否不同。

  • 问题内容: 在Docker 1.12集群模式下,如果我在同一个节点上运行多个同一个服务的任务并发布相同的端口,则可以在这些任务之间进行任何形式的负载平衡吗?或者,拥有更多服务实例而不是节点数量的目的是什么? 例如。 现在,如果我打开浏览器并访问http:// localhost /(多次刷新页面),所有连接似乎都由同一任务处理,就像这样做: PS:好的,我知道只有一个节点集群是没有意义的,但是如果

  • 我正在开发的应用程序作为kubernetes集群中的部署运行。为该部署创建的pod分布在集群中的各个节点上。我们的应用程序一次只能处理一个TCP连接,并将拒绝进一步的连接。目前,我们使用kube代理(Iptables模式)在各个节点的pod之间分配负载,但pod是以随机方式选择的,当其传递到繁忙的pod时,连接会断开。我可以在我的用例中使用Kube router的基于最小连接的负载平衡算法吗。我希

  • 我正在尝试运行一个连接到部署pod的简单负载平衡服务器。 我安装了Docker for Mac edge版本。 问题是,当我尝试向公开的负载均衡器urlhttp://localhost:8081/api/v1/posts/health发出GET请求时,出现的错误是: org.apache.http.localhost:8081响应失败 做的时候: 我得到: 很明显,服务正在运行,但localhos

  • 我有两条溪流。一个是事件流,另一个是数据库更新流。我想用从DB更新流构建的信息丰富事件流。 事件流非常庞大,使用5个字段进行分区。这给了我很好的分配。DB流不那么喋喋不休,并且使用两个字段进行分区。我目前正在使用两个公共字段连接这两个流,并使用flapMap来丰富第一个流。flatMap运算符使用ValueState维护状态,状态由两个公共字段自动键入。 除了实现自定义逻辑来手动提取键并更新维护状