我正在开发一个流星应用程序,而我害怕的一件事就是没有人知道如何在多台机器上运行。
亚马逊刚宣布:http://aws.amazon.com/about-aws/whats-new/2013/03/11/announcing-aws-elastic-beanstalk-for-node-js/
通过提供基本上无限大小的机器,这会解决这个问题吗?或者我是否完全误解了AWS?或者担心这个是荒谬的,因为没有流星应用程序会使用超过30GB的RAM?
对不起初学者的问题。
答案 0 :(得分:4)
Amazon Beanstalk使用预定义的CloudFormations模板以及一些预配置的AMI,以便您轻松部署应用程序。不同的风格,这个新节点就是其中之一,是预先配置好的技术堆栈。
模板因为它们不能解决流星水平缩放问题。也就是说,在多台机器上运行meteor。要做到这一点,您需要让meteor持久保存其WebSocket状态,以便群集中的其他服务器可以共享它。
Amazon Elastic Load Balancers(ELB)允许TCP流量,这是扩展WebSocket流量所必需的。 ELB还支持Session Affinity或Sticky Sessions(这么多的名字)。但这还不够。想象一下,我登录到一台服务器,然后我就呆在那里。然后你登录到另一台服务器并留在那里。现在我们有两个不同的服务器,分别与我们交谈。但是,如果这些服务器共享WebSocket状态。
可以使用RedisStore一起使用SocketIO + Redis来完成此操作,但目前meteor不支持此功能。我希望他们最终能够支持这一点,因为它可用于生产就绪的产品 - 除非他们想出一些其他魔法来实现同样的目标。
你担心它是正确的,因为服务器有时会死,特别是在虚拟化环境中。群集不仅仅与性能有关,还与高可用性有关。
答案 1 :(得分:1)
我认为modulus.io可能效果最好,因为它们具有“会话亲和力”
的功能“我们的负载平衡器确保用户何时点击伺服,然后将它们发送回相同的伺服以用于所有后续活动。这通过允许内存状态信息来降低应用程序的复杂性。”
但是,我还没有尝试在那里部署流星应用程序。
他们还有一个专门关于流星的博客post