2012-12-30 122 views
1

我是廚師新手。我剛剛創建了一本食譜,它部署了一個node.js應用程序,配置Nginx,然後以一個或多個由Nginx「負載平衡」的工作人員的身份啓動該應用程序。它效果很好。我一定要保持它的通用性,並且所有應用程序級別的配置都是通過屬性完成的。如何處理在單個服務器上運行的多個應用程序?

現在我正在考慮一個實例,其中有多個node.js應用程序在同一臺服務器上運行。例如,主API應用程序和另一個自己註冊爲Gearman工作人員的應用程序。

我該如何去做這件事?我是否會簡單地創建另一個特定於該應用的食譜,確保它包含通用食譜的配方,然後爲該應用的配方做屬性覆蓋?

或者,如果我放棄使用應用配置的屬性,並使用data_bags,會更好嗎?

任何幫助表示讚賞。

回答

1

我會將nginx和node.js的安裝/配置分隔成不同的菜譜。

如果你必須有幾個不同的應用程序在node.js上運行,我認爲可以爲node.js cookbook中的每個應用程序添加一個配方,並確保它們中的每一個都包含node.js本身的安裝。

如果您必須運行多個1實例並運行相同的應用程序/服務,則最好使用具有不同屬性或數據包的一個配方來引入實例之間的差異。

還有其它什麼具體問題?

+0

我已經將nginx配置分離出來作爲食譜中的一個獨立配方,但由於它需要爲節點應用運行的工作者數量設置特定的代理規則,因此將其保留在相同的菜譜中是有意義的。 –

+0

但我喜歡你有兩種不同的應用程序的兩個不同的食譜的想法。 –

0

您應該使用角色Roles來管理服務器上的多個食譜。

我不完全確定你的情況,但從你的描述中,我會創建3個食譜。一個安裝nginx,一個安裝您的應用程序,一個執行節點特定的配置和部署。將它們綁定到「app_server」角色並將角色放入run_list中。

這使得您的應用程序更加可組合,並且更容易在將來更換任何部分。

+0

我一直在使用角色的衝突反饋。廚師純粹主義者都在使用它們,但越來越多的人使用Berkshelf這樣的工具來管理他們大部分的食譜開發和依賴解決方案,這些都不是大粉絲。他們發現這些角色會使合作更加困難,我傾向於同意。 –

相關問題