聊聊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

相关文章
相关标签/搜索