首先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)