我在AWS EC2上运行了nodejs应用程序。
我想通过创建更多实例来扩展它。
我不太明白如何在网络方面做到这一点。
让我说我创建另一个实例,它正在侦听不同的端口。 我应该将客户端更改为从两个不同的端口请求吗?我相信这可能导致数据库上的竞争条件
我是想在EC2机器上的一个端口上监听并将请求指向其中一个实例?在这种情况下,端口将忙于实例完成请求,而不是与另一个实例并行处理请求
有没有人有指示或者可以指点我关于这个主题的一些文件?
答案 0 :(得分:0)
在基本级别,您将拥有Node.js应用程序的多个实例,并连接到公共数据库后端。 (您的数据库也应该是聚类的,但这是另一篇文章的主题。)
如果您已经遵循最佳实践,一个请求将是一个响应,并且后续请求落在另一个应用程序服务器上无关紧要。也就是说,客户可以随时点击任何一个,并且不会有任何副作用。如果没有,您将需要某种服务器固定(通常通过cookie或类似方法完成),以确保客户端始终位于同一应用程序服务器上。
最简单的负载均衡方法是让您的客户端连接到主机名,并将该主机名解析为多个主机的循环方式。这将分散流量,但不一定正确。例如,一台主机上的特定命令或问题可能意味着它只能处理5个请求,而其他服务器可以处理5000个。大多数云提供商都有负载平衡管理。 AWS肯定会。
由于您已经在AWS上,我建议您通过Elastic Beanstalk部署您的应用程序。它可以自动完成配置的旋转/拆卸。你当然可以推出自己的解决方案,但它可能更容易使用已有的解决方案。负载均衡器配置了Beanstalk。