我已经在我的[第一个]创业公司工作了一个月,虽然它可能距离alpha版本还有一个月之后,但我想知道如何以正确的方式部署它。该站点将为新用户提供初始高负载(网络+ CPU),因此我考虑为此初始进程设置单独的服务器/队列,以便它不会减慢现有用户的站点速度。
根据我目前的研究,我目前倾向于nginx + haproxy + unicorn / thin + memcached + mysql,并在Linode上进行部署。但是,我之前没有任何经验;因此,我希望能够挖掘社区的经验。
如果我的任何问题都是愚蠢或矛盾,我道歉;请将其归因于我的经验不足。
答案 0 :(得分:18)
<强>建筑强>
你走在正确的轨道上。我个人更喜欢Passenger over thin / unicorn(长时间运行nginx到瘦后端)只是为了方便,但你提出的设置是相当标准的。如果您使用的是Ruby 1.8.7,我建议您考虑使用REE + Passenger来节省框架内存。
托管&amp;负载平衡
Linode太棒了,我将它们用于我所能做的一切,但你需要了解RAM的限制。每个Rails进程使用大量的RAM,您将希望避免让机器进行交换。计划在每台机器上运行足够的Rails实例,以便内存分配大约是Linode内存的90%。你可能想要另一个专门用于数据库的Linode,尽管你可以在同一台机器上开始使用它们。随着你的成长,准备分裂MySQL。您可以在专用IP上的同一数据中心内设置Linode之间的通信,这不会计入带宽配额。
你的扩展策略应该尽可能水平,所以我建议你只需要获得第二个Linode,并在你需要更多功能时将它添加到你的haproxy池中 - Linode收取20美元的额外费用为512MB,或者你可以获得同样20美元的整个'nother Linode(带CPU,RAM,HDD和带宽配额)。看起来很简单!)。在Rails的情况下,实例是一个实例是一个实例,所以无论它是否在同一个VM上都无关紧要,只要连接到数据库机器或其他什么的时间或多或少相同。你可以运行10个Linode,每个运行10个Rails进程,没有太多问题。 Linode还提供IP故障转移,因此如果您的主要Linode(使用haproxy)出现故障,它可以自动故障转移到辅助Linode,然后您可以运行haproxy,并准备以与第一个相同的容量运行。
<强>分发强>
老实说,这取决于你!许多人都使用Ubuntu或Redhat(CentOS / Fedora)发行版 - 我自己喜欢CentOS - 但它实际上只是你觉得最舒服的东西。如果你没有最喜欢的发行版,我会建议尝试使用Ubuntu / CentOS,因为它们对初学者来说往往很友好,并且拥有非常强大的社区支持。
你可能想要选择一个32位的发行版,除非你有一个令人信服的理由选择一个64位的发行版; 64位可执行文件需要比32位可执行文件更多的RAM,并且由于RAM可能是您最宝贵的资源,因此将其保存在尽可能的位置是有意义的。