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

我一直在为[第一]初创公司工作一个月,而且从Alpha版本开始至少还有一个月,我想知道如何以正确的方式部署它.该网站将为新用户提供初始的高负载(网络cpu),因此我正在考虑为此初始进程分配一个单独的服务器/队列,以使其不会减慢现有用户站点速度.

根据我迄今为止的研究,目前我正在倾向于使用Nginx haproxy独角兽/薄memcached mysql,并在Linode上部署.但是,我以前没有任何经验;因此,我希望利用社区的经验.

>上述架构似乎合理吗?任何建议/文章/书籍,你会推荐?
Linode是不错的选择? Heroku / EY似乎对我来说太贵了(至少直到我有足够的收入),但是我还缺少一些其他更好的选择? MEDIATEMPLE?
>关于负载平衡架构的任何好的建议?我还在读书.
>最好在两个独立的线程上有两个独立的Rails服务器实例,或者在两个容量(以RAM /存储/带宽为单位)的线性路由上运行1个实例?我应该开始有多少个线路?
>我应该选择哪个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上的同一个数据中心的线路间设置通信,而这些数据中心并不计入带宽配额.

您的缩放策略应该尽可能的水平,所以我建议只需要一个第二个Linode并将其添加到您的haproxy池,当您需要更多的马力 – Linode收取$20为512mb更多的RAM,或者你可以得到一个整体’ Nother Linode(具有cpu,RAM,HDD和带宽配额)为20美元.似乎没有脑子!).在Rails的情况下,一个实例是一个实例是一个实例,所以如果它在同一个虚拟机上是不重要的,只要连接到你的数据库机器的时间或者多少是一样的.您可以运行10个线性编程,每个运行10个Rails处理一个没有任何问题. Linode还提供了IP故障转移功能,因此如果您的主要的Linode(与haproxy)关闭,它可能会自动失败到一个辅助的Linode,然后您将有haproxy运行,并准备采取与第一个相同的容量.

分配

老实说,这取决于你!许多人去Ubuntu或Redhat(CentOS / Fedora)发行 – 我喜欢CentOS自己 – 但它真的只是你最感觉最舒服的.如果没有最喜欢的发行版,我建议您尝试使用Ubuntu / CentOS,因为它们对初学者来说相当友好,并且具有非常强大的社区支持.

你可能会选择一个32位的发行版,除非你有一个令人信服的理由选择一个64位的发行版; 64位可执行文件需要比32位对应的更多内存,由于RAM可能是您最宝贵的资源,所以将其保存在可用位置上是有意义的.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...