2013-03-01 70 views
3

我有一個nodejs應用程序,我想運行在一個多核(2CPU * 2Cores = 4Cores)服務器上。在閱讀了關於這個主題的一堆SO線程後,我決定在4個不同的端口上啓動4個獨立的節點實例,並使用nginx在它們之間進行負載平衡。我決定在節點集羣上使用這種方法。在多核心服務器上啓動多個節點實例的正確方法是什麼?

現在,這是我的問題。我真的很感激任何反饋:

  1. 是否有一個如何開始在2CPU 4個節點實例的任何差異* 2cores/CPU = 4核心服務器與1CPU * 4cores/CPU = 4core服務器。我不認爲有任何區別,但只是想確認。

  2. 我有一個conf文件來啓動我的服務。這個conf文件實際上是駐留在/ etc/init中並啓動我的節點應用程序的腳本。我應該從這個1 conf文件啓動4個實例還是應該創建4個conf文件並在每個conf文件啓動一個實例? 同樣,我覺得後一種方法更好,但想確認它。每個核心

+0

垂直縮放 - >正確的方法記錄:https://nodejs.org/api/cluster.html#cluster_cluster希望這可以幫助其他人! – 2016-08-11 11:34:33

回答

0
  1. 1實例是一個很好的經驗法則,但如果您還運行在同一臺服務器上的一些服務(數據庫,Redis的,內存緩存,隊列,...),你可能要開始所以這些不會爲CPU「打」。

  2. 您最終將需要重新啓動個別實例,因爲一個實例崩潰,或者使用的內存太多,或者不是。因此,單獨的腳本將是更可取的,甚至是允許您分別或一起控制實例的腳本(最初更多工作)。

+0

謝謝帕斯卡。我想你回答了我的第二個問題,但我仍然不確定回答我的第一個問題。你是說在我如何在2cpu * 2core服務器上啓動4個實例與1cpu * 4cores服務器沒有區別? – 2013-03-01 20:50:51

+0

是的,我不認爲有任何區別。操作系統調度程序將負責在可用內核之間分配負載。 – 2013-03-01 21:37:08

1

你爲什麼決定:

  1. 使用nginx的負載平衡? haproxy是更好的解決方案。
  2. 手動啓動n個進程,當有一個集羣模塊爲您做到這一點?

    如果您啓動n個不同的進程,您需要監聽n個不同的端口。

    如果使用集羣模塊,則不需要任何負載平衡器,因爲此作業是在內部完成的,並且n個工作人員將偵聽相同的端口。如果工人死亡,您會收到通知,基本上您可以輕鬆管理它們。

所有的工人都可以打開/讀/寫/關閉同一個文件,你不需要n個配置文件。

+0

感謝加百列你的回答。正如我在我的問題中提到的,我知道集羣模塊,但是做了一些研究,決定開始在n個端口上偵聽n模式實例。儘管如此,我還是會去看看HAProxy。 – 2013-03-03 01:56:22

相關問題