- 前言:
看過不少Cassandra群集配置的資料,不少資料總會讓人雲裡霧裡的感覺啊,不得已再寫一篇關于Cassandra群集配置的基本實作。
- 下載下傳Cassandra
到這裡:http://cassandra.apache.org/download/選擇一個合适的版本,0.8以上版本比較可靠,目前的最高版本時1.0.8,建議采用。
- 安裝JDK,window下安裝不作說明,如果在Linux下安裝參考:
http://blog.csdn.net/jemlee2002/article/details/7007320
- 設定JAVA_HONE,這裡不做說明,不管你時什麼平台,上網搜尋一下怎麼設定環境變量。
- 環境:
3個Win2003伺服器
IP1:192.168.18.129
IP2:192.168.18.130
IP3:192.168.18.131
- 解壓apache-cassandra-1.0.8到指定目錄,目錄位置自己定。
- 打開apache-cassandra-1.0.8/conf下的cassandra.yaml檔案,修改如下幾個地方
cluster_name: 'Test Cluster'
改成
cluster_name: '你的群集名稱,用English'
data_file_directories:
-/var/lib/cassandra/data
改成
data_file_directories:
- 你準備放資料的路徑,可以多個,直接換行前面加一個”-“即可
commitlog_directory:/var/lib/cassandra/commitlog
改成
commitlog_directory: 你準備放送出日志的路徑
saved_caches_directory:/var/lib/cassandra/saved_caches
改成
saved_caches_directory: 你準備放緩存的路徑
關于seeds:seeds就是種子的意思,也就是在整個群集中可以當其他節點的種子的意思,其他節點一旦把seeds的IP指向A機器,那麼其他節點在啟動時,就以A機器作為種子,從A節點複制資料,直到同步,是以慎重選擇seeds。
本示範設定
- seeds: "192.168.18.129"
listen_address: localhost
改成
listen_address: 具體機器的IP,比如Cassandra所在機器的IP是:192.168.18.131,那麼localhost就換成192.168.18.131。
rpc_address: localhost
改成
rpc_address: 0.0.0.0
儲存cassandra.yaml
- 打開apache-cassandra-1.0.8/conf下的log4j-server.properties檔案,修改如下
log4j.appender.R.File=/var/log/cassandra/system.log
改成
log4j.appender.R.File=你準備放系統日志的路徑/system.log
儲存log4j-server.properties
- 三台伺服器一樣的修改,隻會有些地方注意與機器保持一緻,特别是seeds,listen_address
- 分别啟動3台機器的Cassandra.bat:
在控制台出現:Listening for thrift clients...
就說明伺服器啟動結束,等待用戶端連接配接。
- 在其中一台執行nodetool
Cassandra 1.0.8 群集配置
- 執行:cassandra-cli.bat
![]()
Cassandra 1.0.8 群集配置
- 執行:connect 192.168.18.129/9160;
![]()
Cassandra 1.0.8 群集配置
- 執行: CREATE KEYSPACE demoKeySpace
with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'
and strategy_options = [{replication_factor:2}];
![]()
Cassandra 1.0.8 群集配置
注意紅色部分,如果你希望你的資料在不同伺服器做複制,那麼這些參數最好研究一下。
- 執行:use demoKeySpace;
![]()
Cassandra 1.0.8 群集配置
- 建立column family,
執行:create column family Users with comparator=UTF8Type
and default_validation_class=UTF8Type andkey_validation_class=UTF8Type;
注意這些選項,可以到Cassandra文檔看看具體代表什麼。
![]()
Cassandra 1.0.8 群集配置
- 存入資料:
執行:set Users[jsmith][first] = 'John';
![]()
Cassandra 1.0.8 群集配置
- 獲得資料:
執行:get Users[jsmith];
![]()
Cassandra 1.0.8 群集配置
是不是有你前面存入資料的内容那個,加了時間戳而已。
關于時間戳,也請您仔細的查查資料。
- 接下來,停止192.168.18.129的cassandra服務。
在192.168.18.130/131兩台機器上的Cassandra控制台上可以看到:![]()
Cassandra 1.0.8 群集配置
- 這時候執行:nodetool
![]()
Cassandra 1.0.8 群集配置
應該可以看到一台down了
這時候通過cassandra-cli.bat連接配接130或是131,執行擷取資料的過程,看看結果是否有你要的資料,如果最後有
![]()
Cassandra 1.0.8 群集配置 證明你的群集系統不怕單點故障,
再停掉130的Cassandra服務
這時候通過cassandra-cli.bat連接配接131,執行擷取資料的過程,看看結果是否有你要的資料,如果最後有
![]()
Cassandra 1.0.8 群集配置
群集很強壯,down了2台伺服器了,還能繼續工作。
完畢,文中很多細節并沒有介紹,你仔細仔細的閱讀了解,不懂得發給郵件給我。
[email protected]