我已经在[第一个]初创公司上工作了一个月,虽然它与alpha版本可能还相距至少一个月,但我想知道如何正确部署它。该站点将为新用户带来大量的初始负载(网络+ CPU),因此我正在考虑为该初始过程使用单独的服务器/队列,以免降低现有用户的站点速度。

根据到目前为止的研究,我目前倾向于使用nginx + haproxy + unicorn / thin + memcached + mysql,并在Linode上进行部署。但是,我没有上述任何经验。因此,我希望能利用社区的经验。


以上架构看起来合理吗?您有什么建议/文章/书吗?
Linode是一个不错的选择吗? Heroku / EY对我来说似乎太昂贵了(直到我有足够的收入为止),但是我是否缺少其他更好的选择? MediaTemple?
关于负载平衡架构有什么好的建议吗?我仍在阅读。
最好是在2个单独的linode上有2个单独的Rails服务器实例,还是在容量为两倍(就RAM /存储/带宽而言)的linode上运行1个实例?我应该从几个Linode开始?
我应该选择哪种Linux发行版? (Linode提供8种不同的产品-http://www.linode.com/faq.cfm)它们之间对于Rails站点是否有相对的优缺点?


如果我有任何愚蠢或矛盾的问题,我深表歉意。请归因于我的经验不足。

最佳答案

建筑

您走在正确的轨道上。为了方便起见,我个人更喜欢乘搭机而不是瘦/独角兽(长时间运行nginx到瘦后端),但是您建议的设置是相当标准的。如果您使用的是Ruby 1.8.7,我建议您考虑使用REE + Passenger以节省框架内存。

托管和负载平衡

Linode太棒了,我会尽我所能使用它们,但是您需要了解RAM限制。每个Rails进程都使用大量的RAM,并且您将要避免使机器陷入交换状态。计划在每台机器上运行足够的Rails实例,以便您的内存分配约为Linode上内存的90%。您可能想要另一个专用于数据库的Linode,尽管您可以在同一台机器上同时使用它们。只是准备随着您的成长而拆分MySQL。您可以在同一IP数据中心内的Linodes之间建立专用IP之间的通信,这不会占用您的带宽配额。

您的扩展策略应尽可能水平,因此,我建议您在需要更多马力的情况下,再增加一个Linode并将其添加到您的haproxy池中-Linode向您收取$ 512的RAM,以增加512mb的内存,或者您可以将整个“相同的$ 20美元的价格(包括CPU,RAM,HDD和带宽配额)。似乎很简单!)。在Rails的情况下,一个实例就是一个实例就是一个实例,因此,无论它是否在同一台VM上,都没关系,只要连接到数据库机的时间或多或少是相同的即可。您可以运行10个Linode,每个Linode分别运行10个Rails进程,而不会出现很多问题。 Linode还提供IP故障转移,因此,如果您的主Linode(带有haproxy)发生故障,它可以自动故障转移到辅助Linode,您将在其上运行haproxy,并准备以与第一个相同的身份进行操作。

分配

老实说,这取决于您!许多人都使用Ubuntu或Redhat(CentOS / Fedora)发行版-我本人也喜欢CentOS-但这实际上只是您最喜欢的东西。如果您没有最喜欢的发行版,我建议您尝试Ubuntu / CentOS,因为它们对初学者通常非常友好,并且具有非常强大的社区支持。

除非您有充分的理由选择64位发行版,否则您可能希望选择32位发行版。 64位可执行文件比32位可执行文件需要更多的RAM,并且由于RAM可能是您最宝贵的资源,因此将其保存在可以的地方是有意义的。

关于ruby-on-rails - 如何以可扩展的方式部署[Ruby on Rails]网站?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3840691/

10-08 23:15