2016-04-09 147 views
-1

我正在編寫一個自動化腳本,該腳本應該在AWS中創建4個實例,並在其上部署rethinkdb集羣而無需任何人爲干預。根據文檔,我需要在命令行上使用--join參數或將join語句放在配置文件中。但是,我不明白的是,如果我只需要指定join一次以創建羣集,或每次重新啓動任何羣集節點時?創建rethinkdb集羣

我現在的理解是,我只需要一次發出它的羣集配置以某種方式存儲在元數據和下一次我就可以開始rethinkdb沒有--join參數,它會重新連接到自身的集羣的其餘部分。但是什麼時候需要配置文件中的join選項呢?

如果這是真的,那麼我需要啓動rethinkdb與--join選項在我的腳本然後關閉它,然後再次啓動沒有--join?這是做這件事的正確方法還是有更好的選擇?

+0

我想感謝downvoters的一些解釋。 – dtoux

+0

我沒有downvote,但這很容易在你的開發機器上測試。用'-o 1 -d/some/other/path -j localhost:29015'運行第二個實例,然後暫停運行,然後在沒有連接的情況下再次運行它,並查看端口8080和8081上的管理接口會發生什麼。 – analytik

+0

@analytik,是的,這是我最終做的,但我希望在這裏快速回答:-) – dtoux

回答

1

你說得對,在後續重啓時,你不需要從命令行指定--join,它會發現集羣並嘗試重新連接。部分集羣狀態存儲在系統表server_config中。

即使您擦除了此節點上的數據目錄,它仍然可以形成羣集,因爲其他節點可能具有有關該節點的信息,並且會嘗試連接到該節點。但是,如果沒有其他節點存儲有關此特定服務器的信息,或者由於某種原因重新啓動了此特定節點並擁有新IP地址,並且其數據目錄也被擦除了,則此時羣集不知道它(與新的IP地址)。

所以,我會一直指定--join。它沒有傷害。在最壞的情況下,這有助於使新節點能夠再次加入集羣。