繁体   English   中英

如何以可扩展的方式部署[Ruby on Rails]站点?

[英]How to deploy a [Ruby on Rails] site in a scalable way?

我已经在我的[第一个]创业公司工作了一个月了,虽然它可能距离alpha版本还有一个月的时间,但我想知道如何以正确的方式部署它。 该站点将为新用户提供初始高负载(网络+ CPU),因此我考虑为此初始进程设置单独的服务器/队列,以便它不会减慢现有用户的站点速度。

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

  • 上述架构看起来合理吗? 你会推荐任何建议/文章/书籍?
  • Linode是个不错的选择吗? Heroku / EY对我来说似乎太贵了(至少我有足够的收入),但是我错过了其他更好的选择吗? MEDIATEMPLE?
  • 关于负载均衡架构的任何好建议? 我还在读这个。
  • 更好的是在2个独立的linode上有2个单独的Rails服务器实例,或者在容量为2倍的linode上运行1个实例(就RAM /存储/带宽而言)? 我应该从多少个Linodes开始?
  • 我应该选择哪种Linux发行版? (Linode提供了8种不同的 - http://www.linode.com/faq.cfm )对于Rails站点,它们之间是否存在相对优势/劣势?

如果我的任何问题都是愚蠢或矛盾的,我会道歉; 请把它归结为我的经验不足。

建筑

你走在正确的轨道上。 我个人更喜欢Passenger over thin / unicorn(长时间运行nginx到瘦后端)只是为了方便,但你提出的设置是相当标准的。 如果您使用的是Ruby 1.8.7,我建议您考虑使用REE + Passenger来节省框架内存。

托管和负载平衡

Linode太棒了,我将它们用于我所能做的一切,但你需要了解RAM的限制。 每个Rails进程使用大量的RAM,您将希望避免让机器进行交换。 计划在每台机器上运行足够的Rails实例,以便内存分配大约是Linode内存的90%。 你可能想要另一个专门用于数据库的Linode,尽管你可以在同一台机器上开始使用它们。 随着你的成长,准备分裂MySQL。 您可以在专用IP上的同一数据中心内设置Linode之间的通信,这不会计入带宽配额。

你的扩展策略应该尽可能水平,所以我建议你只需要获得第二个Linode,并在你需要更多功能时将它添加到你的haproxy池中 - Linode收取20美元的512美元RAM,或者你可以得到一个整体另外,Linode(带CPU,RAM,HDD和带宽配额)的价格为20美元。 看起来很简单!)。 在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可能是您最宝贵的资源,因此将其保存在尽可能的位置是有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM