2014-03-19 201 views
4

我現在有一個Cassandra服務在我的Ubuntu服務器上運行,只有一個節點。我想將它變成一個帶有3個節點的環形羣集,以感受多節點羣集都在同一臺服務器上。按照這個鏈接https://www.youtube.com/watch?v=oHMJrhMtv3c中的步驟,我嘗試創建一個新的羣集而不停止已經運行的cassandra服務。但它已經引發地址由:java.net.BindException:地址已被使用。所以我試圖改變種子ip已經運行cassandra ip地址,並試圖在前臺運行第二個cassandra服務。這次它拋出java.lang.RuntimeException:無法創建節點套接字到IP端口。請讓我知道如何將節點添加到同一臺服務器上已運行的單節點羣集。在單個Ubuntu服務器上設置cassandra多節點集羣

回答

4

在單臺機器上設置多節點羣集的最簡單方法是使用CCM。目前,您遇到的問題是您的節點試圖綁定同一組端口。 CCM將解決此爲您和自動遞增端口等...

https://github.com/pcmanus/ccm

5

這是很容易的,只要他們擁有所有的解析爲不同的IP地址,運行相同的Ubuntu的機器上的多個實例卡桑德拉本地主機。整個127.0.0.0/8地址塊被保留用於回送目的,所以任何發送到地址(127.0.0.1到127.255.255.254)的數據包都將循環回去。

  • 使用ping來檢查地址是否正確解析。
  • 將兩個(或更多)Cassandra實例放入不同的文件夾中。

編輯cassandra.yaml和替換

  • 各種文件位置獨特卡桑德拉的給定實例的位置。
  • localhost到我們給該實例的IP地址(如127.0.0.2)。
  • 使用SimpleSeedProvider,並把所有其他卡桑德拉實例的地址種子列表,以集羣(如- seeds: "127.0.0.2","127.0.0.3"
  • 不要改變任何端口號,而不是有益的,不是必需的。

編輯cassandra-env.sh,發現其中JMX_PORT屬性設置,並給它一個卡桑德拉的每個實例不同的值(不同的端口),否則情況下不能同時運行,因爲這個端口上的衝突。

  • 啓動使用./cassandra啓動腳本(您可以稍後編寫簡單的bash腳本)逐個實例。
  • ./nodetool狀態驗證您的拓撲。 !對於這兩個節點,例如,輸出必須看起來像

    Datacenter: datacenter1 
    ======================= 
    Status=Up/Down 
    |/ State=Normal/Leaving/Joining/Moving 
    -- Address Load  Tokens Owns (effective) Host ID        Rack 
    UN 127.0.0.1 61.97 KB 256  100.0%   6c04e202-8f24-4f17-b430-0154c1512316 rack1 
    UN 127.0.0.2 105.68 KB 256  100.0%   ca3073ee-451c-4cef-97ee-d312784648bb rack1 
    
+0

完美的答案..提一個瑣碎的事情是,種子應該寫成 - 種子:「127.0.0.2,127.0.0.3 「 –

相關問題