聊聊Cassandra(一)docker構建cassandra集羣

單機

 

首先docker鏡像擁有jdk8與python2.7,這裏再也不贅述。html

進入容器中安裝:node

解壓:python

tar -zxvf apache-cassandra-3.9-bin.tar.gz

增長新用戶cassandra:docker

adduser cassandra

修改密碼:shell

passwd cassandra

修改配置文件cassandra.yaml:apache

vim /home/apache-cassandra-3.9/conf/cassandra.yaml
修改以下(170.17.0.2爲當前docker容器的ip地址):
Seeds:170.17.0.2

Listen_address: 170.17.0.2

rpc_address: 0.0.0.0

broadcast_rpc_address: 170.17.0.2

運行:vim

cd apache-cassandra-3.9

nohup ./cassandra -f

測試啓動是否成功:bash

./cqlsh localhost

 

cqlsh>
進入cql的shell表示啓動成功python2.7

退出容器保存爲新鏡像:ssh

docker commit [containerid] [new image name]

使用新鏡像啓動容器:

docker run --name cassandra -it -d -p 10022:22 -p 9042:9042 cassandra:3.9 /usr/sbin/sshd -D

集羣

若是要作集羣,可以使用該鏡像開啓其餘容器,修改的地方:

1.       Seeds IP、Listen_address、broadcast_rpc_address、cluster_name

參考資料:

http://eric100.blog.51cto.com/2535573/1770036

2.       修改seeds ip時,種子節點須要配置集羣內全部機器的IP,而其餘節點只需配置本身的IP監聽本身便可,種子節點是用來處理新增節點的

3.       清除cassandra/data/data/system下的文件(因爲是基於上個容器的鏡像建立的容器,系統庫中記錄着本容器的IP,若是從新建立一個新的容器,不刪除這個數據將致使主機ID混亂而沒法開啓服務)

rm cassandra/data/data/system/*

 

以後使用./nodetool status &查看節點狀態:

./nodetool status &

如圖所示:

這是兩個節點的狀況,當一個節點宕機了,因爲Replication factory(副本因子或複製因子)爲1,沒法將數據複製到另外一個節點上,那麼會出現R(0)+W(0)>N(副本因子)1公式不成立,因此兩臺節點時必須都正常運行,不然在執行CQL語句時出現下面的狀況

 

 

安裝遇到的問題:

在啓動容器後發現沒法訪問9042端口,進入到容器以後發現是啓動cassandra以後守護的IP是127.0.0.1這個迴環地址,只容許容器內通訊,這樣docker映射後的端口是沒法訪問的,因此應該將cassandra的監聽地址修改成本地地址(容器的地址),rpc地址修改成全網地址0.0.0.0

推薦CQL可視化工具:Datastax DevCenter

管理與監控管理工具:DataStax OpsCenter(安裝步驟參照官網:http://docs.datastax.com/en/datastax_enterprise/5.0/datastax_enterprise/install/installNoSudoDse.html

相關文章
相關標籤/搜索