如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?

Posted

技术标签:

【中文标题】如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?【英文标题】:How does one deploy multiple micro-services in Node on a single AWS EC2 instance? 【发布时间】:2018-10-25 12:27:41 【问题描述】:

我们是 AWS 的新手,希望将多项服务部署到一个 EC2 实例中。

每个微服务都在自己的存储库中开发。 每个服务都有自己的端点 URL 服务可以相互通信 服务可以单独更新/部署

每个人都需要一根豆茎吗?我希望不会。

提前谢谢你

【问题讨论】:

【参考方案1】:

因此,我们在工作场所解决类似问题的方式是利用 Elastic Beanstalk 在大多数 AWS 区域支持的 multi-container docker platform。

简而言之,我们在 ECR(弹性容器注册表)中为我们的每项服务都有专门的存储库,其中使用部署脚本部署了不同的“版本化”映像。

配置和设置好之后,您只需要部署一个Dockerrun.aws.json 文件,该文件基本上会突出显示您希望作为 docker 集群的一部分部署到 1 个 EC2 实例中的所有应用程序(确保它足够大处理多个应用程序)。在该文件中,人们还将突出显示应用程序之间的link(以便它们可以相互通信)、端口配置、日志记录驱动程序和组(是的,我们使用 AWS CloudWatch 进行日志记录)以及许多其他字段。此 JSON 与 docker-compose.yml 非常相似,后者用于启动您的堆栈以进行本地开发和测试。

我建议查看 Amazon 提供的示例配置以了解更多信息。另外,我发现docker 文档在这方面很有帮助。

希望这会有所帮助!

【讨论】:

感谢您的回复。实际上,我们的一位***工程师已经实现了 docker 模式,看起来它符合您的建议!【参考方案2】:

尚不清楚您是否有特定的工具。如果您使用任何工具部署单个微服务,则多个应该相同。

如何在单个 AWS 上的 Node 中部署多个微服务 EC2 实例?

每个微服务都在自己的存储库中开发。

服务可以单独更新/部署

这应该与部署单个微服务相同。只要它们运行的​​路径和端口不同,就可以了。

每个服务都有自己的端点 URL

您可以使用nginx 作为反向代理,它可以将您的请求从端口 80 重定向到微服务所需的端口。

服务可以相互通信

这也不应该是一个问题。您可以使用端口号直接调用它们,也可以通过完全限定名称调用它们,然后通过 nginx 返回。

【讨论】:

以上是关于如何在单个 AWS EC2 实例上的 Node 中部署多个微服务?的主要内容,如果未能解决你的问题,请参考以下文章

AWS 弹性 beanstalk ec2 服务器上的 node.js 命令

如何在单个 AWS EC2 实例上托管多个域和子域

如何在 AWS Lambda 中使用 Node.js 列出我的所有 Amazon EC2 实例?

如何将aws上的ec2实例连接到我公司的***

没有负载均衡器的 EC2 实例上的 AWS SSL - NodeJS

AWS Elastic Beanstalk - 如何在同一个 ec2 实例中运行 php 和 nodejs