簡體   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