在1台云服务器上部署多个微服务

时间:2019-06-14 05:25:00

标签: python amazon-web-services azure server cloud

我有一些(python)微服务可以用作我的Web应用程序的后端。 我愿意将微服务部署到某些云平台(AWS,Azure等)。

我应该创建1个VM并将所有微服务部署在同一服务器上,但具有不同的端口吗?如果我应该为每个微服务创建1个VM,它们是否应该通过公共IP相互对话?

谢谢!

3 个答案:

答案 0 :(得分:0)

创建1台服务器将终止微服务的目的。服务部署在 多个节点(服务器),更具体地说是多个可用区(可用区)

这还取决于您是否使用服务器后面的代码直接部署了独立的服务,还是使用容器?因为两者将具有不同的部署和维护方法。

答案 1 :(得分:0)

为您提供的直接答案是“是”。您可以这样做,直接使用不同端口将所有微服务部署在一个VM上是可行的。您可以在Azure VM的网络NSG设置中为公共IP设置不同的公共端口。

但是,这并没有意义并破坏微服务体系结构。但是根据我的经验,在开发或测试阶段,您可以尝试使用Nginx作为反向代理或使用Docker(甚至使用Kubernetes)在VM上管理您的微服务。

  1. 使用Nginx作为反向代理来公开具有不同请求路径的同一端口,以访问具有不同端口的后端微服务。它将有助于减少将来的迁移成本。
  2. 推荐。要将Docker与Kubernetes结合使用以部署不同的微服务映像,例如使用不同的VM。这些微服务内部容器绑定相同的端口,并向外部容器暴露不同的端口。然后,也将Nginx用作这些容器的反向代理。将来,它将有助于轻松地将它们迁移到Azure Kubernetes群集,并获得比VM更好的价格。

希望有帮助。

答案 2 :(得分:-1)

正如@Imran Arshad所说,在一台服务器上部署一些微服务是一个坏主意。 如果您处于项目的开始阶段,则可以将AWS的ECS服务与1-2个ec2实例一起使用。这样,您可以以低成本获得HA。