2015-07-03 99 views
2

我想知道如果我有2個服務器,一個是「主」服務器,另一個就在那裏(兩者都使用相同的後端代碼)。我應該如何處理,如果主服務器崩潰,我希望我的客戶端用戶的其他服務器,使他們不必重新啓動他們的程序或類似的東西。如果服務器崩潰,應該如何處理?

我已經閱讀了關於使用欺負算法,但我在如何處理我的客戶已在第一主服務器上使用的套接字和數據(信息),並在我的第二個使用它失去了服務器。

+1

如何設置羣集中的服務器? –

+0

你是什麼意思?我對網絡編程有點新鮮 – Bojje

+0

我想知道更多關於如何將數據從一臺服務器重定向到另一臺服務器@LuiggiMendoza – Bojje

回答

3
+0

謝謝你的所有鏈接。事實證明,我的問題沒有被「精確地」詢問。我只是要把這個投票作爲答案,因爲它看起來像很多信息,這將幫助我解決我的問題@ paulsm4 – Bojje

2

首先,如果服務器崩潰,那麼對於駐留在服務器上的數據(當然,服務器恢復運行之前)無能爲力。所以,如果你不想在發生故障時丟失數據,你應該使用分佈式(NoSQL的?)數據存儲(如卡桑德拉,Redis的,DynamoDB等),因爲他們已經在一個可擴展的方式解決了這個問題。其次,如果你的問題是'如果A失敗時我的請求從A到B',你可以用一個簡單的(例如基於NodeJS的)代理服務器來服務器A和B.最初,代理將「前進」的所有客戶端請求A.當A崩潰,代理檢測(當它看到大概是所有轉發的請求已超時在過去的X秒),並切換到服務器B. 然而,會出現一個小的時間窗口(取決於x的已配置的值),其中客戶端請求將繼續失敗。

https://github.com/nodejitsu/node-http-proxy

0
  1. 如果您在服務器關閉時不在服務器上存儲任何狀態,請將您的狀態存儲在兩個特定的數據庫服務器(主服務器和副本服務器)上。如果您不知道選擇哪個數據庫服務器,請告訴我,我會問您另外的問題以提供幫助。
  2. 如果正在使用您的服務器的客戶端代碼在您的控制之下,那麼在那裏實現所有的容錯邏輯。這樣做的最簡單方法是「循環法」 - 您連接到隨機服務器,直到找到服務器來滿足您的請求。谷歌「循環賽」瞭解更多細節。
  3. 如果客戶端代碼不在您的控制之下,那麼您應該使用BGP負載平衡。其主要思想是,一旦服務器關閉,另一臺服務器獲得第一個服務器的IP地址,例如在客戶端,一切都是完美的。有關更多詳情,請訪問google「bgp負載平衡」。
相關問題