天天看點

Cassandra配置多節點叢集

本文已遷移到我的新部落格位址:blog.favorstack.io 歡迎通路~

上一篇文章 Cassandra入門指南 中,我們已經配置好了一個單節點叢集,接下來,我們要往這個叢集中多加幾個節點,看看多個節點是如何同時工作的。

Cassandra節點之間交換資訊是通過一種叫做Gossip(暫時不知道該翻譯為哪個專有名詞合适,暫且意會吧)的機制。但是要想讓一個消息傳遞到一個新加入的節點,至少還需要知道另外一個節點,這個節點叫做種子(Seed)。通常我們會選擇一小部分相對穩定的節點作為種子節點,但這并不是硬性規定。務必要確定每個種子節點至少能感覺另外一個種子節點。記住,這樣做的目的是要避免雞和蛋的問題,為叢集中的所有節點提供一種發現其他節點的途徑。

除了種子節點,我們還需要配置IP接口來監聽Gossip和CQL(分别為listen_address 和 rpc_address),具體如下:

1) 在每個節點安裝Cassandra

2) 為叢集選擇一個合适的名字

3) 為每個節點配置設定一個IP

4) 确定種子節點,但不要把所有節點都作為種子

5) 如果是多資料中心,為每個資料中心和機架确定命名約定,比如:DC1, DC2 或 100, 200 和 RAC1, RAC2 或 R101, R102。選擇名稱要慎重,不要妄想再重命名資料中心。

6) 其他配置參見cassandra.yaml配置檔案和cassandra-rackdc.properties配置檔案等。

本示例描述了在單個資料中心單個機架安裝3個節點的叢集。

步驟

1.安裝節點:

node0 192.168.0.111(seed1)

node1 192.168.0.112(seed2)

node2 192.168.0.113

注意:每個資料中心擁有多個種子節點是一條最佳實踐。

2.如果叢集中有防火牆,確定相應端口通過,以便節點之間能互相通路。

3.如果Cassandra在運作中,必須先停掉,并且清理資料:

停止 Cassandra:

$ ps -ef | grep cassandra

$ sudo kill pid

清理資料:

$ sudo rm -rf /var/lib/apache-cassandra-2.1.9/data /*

4.配置cassandra.yaml中的屬性:

這裡隻需修改兩處,其他預設即可:

-seeds: 每個種子節點的内部IP。種子節點不做引導,它負責處理現有叢集中新加入的節點。對于新的叢集,引導處理會跳過種子節點。

listen_address:如果不設定的話,Cassandra會從系統讀取與主機名對應的本地位址,某些情況下Cassandra擷取的位址并不正确,此時我們必須手動指定。

如:

cluster_name: 'monitorCluster'

seed_provider:

  - class_name: org.apache.cassandra.locator.SimpleSeedProvider

    parameters:

         - seeds: "192.168.0.111,192.168.0.112"

listen_address:192.168.0.111

rpc_address: 192.168.0.111

配置完所有節點後,先啟動種子節點,一次一個,然後再啟動其他節點

$ cd /var/lib/apache-cassandra-2.1.9 

$ sudo bin/cassandra

Cassandra配置多節點叢集

我們可以看到,每個節點都會依次加入該叢集。

所有節點都起來後:

Cassandra配置多節點叢集

最後檢查叢集運作狀态:

$ cd /var/lib/apache-cassandra-2.1.9 

$ bin/nodetool status    (這個指令可以不加sudo)

Cassandra配置多節點叢集

我們從狀态中可以開到後加入的節點正在分擔負載。

不得不提一下,對于我這個2010年的Think本來說,運作三個節點的虛拟機已經非常吃力了,4G記憶體達到80%了,這樣基本隻能用cqlsh來互動了,後續學習還是得用單個節點才行,除非你有充足的資源。

參考:

http://docs.datastax.com/en/cassandra/2.1/cassandra/initialize/initializeSingleDS.html

本文已遷移到我的新部落格位址:blog.favorstack.io 歡迎通路~

繼續閱讀