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