我在谷歌雲上有兩個Datastax羣集(兩個不同的帳戶)。兩個羣集都有不同的密鑰空間(數據)。結合Google雲上的兩個Datastax羣集
我想組合兩個集羣,並且希望利用兩個集羣節點以及處理負載。
我不想導入/導出數據。由於這兩個集羣都很小,無法處理負載(想要集羣並利用節點來處理負載)。
無論如何,我們可以做到這一點,無論是集羣在雲或不是?
謝謝,
我在谷歌雲上有兩個Datastax羣集(兩個不同的帳戶)。兩個羣集都有不同的密鑰空間(數據)。結合Google雲上的兩個Datastax羣集
我想組合兩個集羣,並且希望利用兩個集羣節點以及處理負載。
我不想導入/導出數據。由於這兩個集羣都很小,無法處理負載(想要集羣並利用節點來處理負載)。
無論如何,我們可以做到這一點,無論是集羣在雲或不是?
謝謝,
這是可行的,但棘手。
Cassandra根據集羣名稱知道哪些節點是集羣的一部分。如果您的集羣名稱對於兩個集羣都不相同,那麼第一步就是將您的集羣重命名爲具有相同的名稱。
第二步是將一個羣集作爲父羣集,您將在其中加入其他節點。我們稱之爲父集羣,另一個稱爲加入集羣。在此步驟中,將加入羣集中存在的密鑰空間和列族定義爲與父羣集相同。在此階段,您的父羣集具有密鑰空間定義但沒有來自加入羣集的數據。另一方面,在連接羣集中,您將不得不以同樣的方式定義父羣集上存在的密鑰空間。
兩個集羣中的節點都必須具有公共接口才能進行通信。我不確定Google Cloud是如何實現的,但我相信您可以在兩個帳戶中爲您的實例提供公共接口。然後,您將這兩個集羣視爲Cassandra概念中的兩個不同數據中心,一旦所有計算機都可以彼此訪問Cassandra端口,請在每個集羣上更改cassandra.yaml並將其他集羣的節點添加到其中。如果您使用屬性文件管理器來管理複製,則還需要更新它,以便它可以識別所有節點及其位置。
最後,執行滾動重新啓動並更改密鑰空間複製因子以按照需要的方式進行復制。
更新: 爲Daniel Compton的觀點添加了一個說明,即啓用公共接口時,您需要正確設置公用接口之間複製的加密,並將對這些公共接口的訪問限制爲僅限於所有cassandra的IP節點。
重命名羣集是可能的,我已經行使了這個誰曾經處理過一次。
要重命名羣集,請在cassandra.yaml中更改羣集名稱。然後更改每個節點上的system.local表以反映該更改並執行滾動重新啓動。重命名集羣的細節可以在這裏找到:
cassandra - Saved cluster name Test Cluster != configured name
你不能用不同的名字,不同的模式連接兩個集羣在一起。壞事會發生。你需要做的是從一個備份數據,在另一個數據庫中創建密鑰空間,使用'sstableloader'流入數據,然後在事實之後引導新節點。
因爲您使用的是雲,最簡單的選擇是臨時將幾個節點添加到新集羣,流入數據,然後刪除舊節點/集羣。試圖變得聰明並且合併集羣將會比它的價值更加痛苦。
如果您使用的是裸機,並且不想花錢購買更多硬件,您可能會變得聰明,但在雲端沒有真正的理由這麼做。
請記住,如果您將公共接口提供給Cassandra節點,那麼它們將可公開訪問。你可以做http://thelastpickle.com/blog/2015/09/30/hardening-cassandra-step-by-step-part-1-server-to-server.html,但最好讓這兩個項目訪問其他資源。 –
這個答案是高度懷疑的。 「第一步是將你的羣集重命名爲」 - 你如何建議用戶這樣做?我堅信,建議實際上是可能的。 –
謝謝你們兩位。我更新了答案以反映您的意見。 – Arya