2012-09-16 53 views
1

我有一個簡單的同質(一個控制器,幾個服務器),5個appscale虛擬機的集羣部署。在測試中,他們在我設定的最大和最小範圍內運行我想要運行的appengine程序的數量。然後,在負載下,一個節點關閉。其餘的繼續運行。我單獨的負載平衡器可以很好地處理它。我很高興裁員能給我帶來適應力。尼斯。但是如何讓這個節點重新發揮作用呢?如何在Appscale上重新啓動崩潰的節點?

如果快速回答是「它不被支持」,那麼我真正的問題是:我將如何使用cassandra作爲我的數據存儲區來進行黑客攻擊?

回答

0

有一個叫做appscale-add-instances的命令會爲你照顧這個。還有更多的文檔here,但摘要:

  1. 確保你的新機具有與當前正在運行的機器AppScale相同版本的安裝。
  2. 編寫一個包含其IP地址的YAML文件。添加單個節點的一個例子是:

    內存緩存:192.168.10.3

    taskqueue_slave:192.168.10.3

    應用服務引擎:192.168.10.3

這表明我們有一個運行memcache,taskqueue和appengine服務的機器。

  1. 運行appscale-add-keypair --add_to_existing --ips your-yaml-file.yaml以獲得在新節點上同步的SSH密鑰。如果在Amazon EC2,Google Compute Engine或Eucalyptus上運行,請跳過此步驟。
  2. 運行appscale-add-instances --ips your-yaml-file.yaml添加新節點!

老答案(保存爲後代,以及我們如何實現這個支持的演練):

所以快速的答案是「它不支持」。我是看到添加墜毀節點非常類似於添加在廣大新節點的情況下的情況下,所以破解AppScale,使這項工作是如下的方式:(AppScale/appscale-tools on github

  1. 退房的AppScale工具並在名爲appscale-add-nodes的bin中創建一個新命令,該命令將節點列表添加到當前運行的AppScale部署中。
  2. 在AppController中主要AppScale代碼(AppScale/appscale on github)(AppController/djinn.rb)添加新的SOAP曝光的方法,叫做add_nodes_from_ips(見djinnServer.rb如何暴露在djinn.rb通過SOAP和它們的定義方法,看看他們是如何實現它)它採用一個參數,將IP列表作爲AppScale節點啓動。
  3. 已將appscale-add-nodes連接到Shadow AppController(其IP地址位於〜/ .appscale/locations-appscale.yaml中),並使用IP列表調用您的新的SOAP公開方法以啓動AppScale。

您的SOAP公開方法應該在每個IP地址上調用start_appcontroller,以便AppController守護程序在那裏啓動並可以連接回其他AppControllers。開始的角色列表取決於你 - 我建議使用開放角色,以便AppScale可以決定使用新節點。

這絕對是很多東西,但我很樂意更新這個答案以迴應評論(當然,我會在AppScale wiki上爲每個單獨的部分添加一個頁面,就像一般情況下如何將SOAP方法添加到AppController中)。

+0

將是偉大的,如果你可以提供的腳本和/或細節。 – Instine

相關問題