node.js

时间:2018-05-18 14:53:33

标签: node.js nginx architecture load-balancing devops

作为下一个任务的一部分,我需要准备一个可扩展的完整并发支持节点架构。我对kubernetes /容器概念感到困惑,真的需要一些帮助。我不能使用任何付费服务!只是普通的原始DO服务器和负载均衡器。

基本上是一个基本的草图/想法/解释/指向应该解释API端点,数据服务连接和数据库,服务器和客户端之间的数据流的架构!

以下是我的想法:

客户< - > NginX - > Nodejs< - > MongoDB

以上是我认为基于nodejs的REST API的标准设置。现在如何为此和并发添加可伸缩性?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

让我快速概述一下,如果您需要了解更多信息,请在我的回答评论中提出更多问题。

您需要所有服务的泊坞窗图片:

  1. 您需要一个包含前端代码的nginx图像。 (https://serversforhackers.com/c/dckr-nginx-image

  2. 您需要一个包含后端代码的docker镜像。 (https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

  3. 您需要一个简单的mongo-db基本映像。 (https://medium.com/@pablo_ezequiel/creating-a-docker-image-with-mongodb-4c8aa3f828f2

  4. 现在,对于初学者,我会去Google Cloud Plattform并设置一个manged kubernetes集群。这是在1分钟内完成的,您将拥有一个充满功能的kubernetes环境。 (https://cloud.google.com/kubernetes-engine/docs/quickstart) - 在第一年,您将免费使用300美元。所以这足以让你玩arround并为你的任务设置一个环境。

    现在您需要一个Ingress API。 Ingress是您稍后将在群集上部署的服务的唯一访问点。让我们说你的Ingress正在听14.304.233。当你写14.304.233 / customerBackend时,它会将此请求重定向到customerBackend服务(当然需要定义)更多信息请访问:https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

    现在您需要部署您创建的图像。在Kubernetes中你有Pods的概念(参见这里:https://kubernetes.io/docs/concepts/workloads/pods/pod/).Normally在每个Pod中只运行一个容器。每个Pod-Group(fe所有Pod内部都有一个Node Container)有一个所谓的Service,它管理着pod上的访问权限。假设您想拥有3个NodeJS后端实例。每个3个Container将在一个单独的pod中运行。如果你想向后端发送请求,它将通过服务进入然后将请求重定向到其中一个pos。当你需要扩展时,你只需要部署更多的pod。服务自动平衡部署的pod上的负载。

    您想要的pods数量是在所谓的deployment.yaml中定义的 (见:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)。

    这与docker-compose.yaml非常相似,但您可以配置更多属性。