[英]How to deploy a [Ruby on Rails] site in a scalable way?
我已經在我的[第一個]創業公司工作了一個月了,雖然它可能距離alpha版本還有一個月的時間,但我想知道如何以正確的方式部署它。 該站點將為新用戶提供初始高負載(網絡+ CPU),因此我考慮為此初始進程設置單獨的服務器/隊列,以便它不會減慢現有用戶的站點速度。
根據我目前的研究,我目前傾向於nginx + haproxy + unicorn / thin + memcached + mysql,並在Linode上部署。 但是,我之前沒有任何經驗; 因此,我希望利用社區的經驗。
如果我的任何問題都是愚蠢或矛盾的,我會道歉; 請把它歸結為我的經驗不足。
建築
你走在正確的軌道上。 我個人更喜歡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.