聊聊Cassandra(一)docker构建cassandra集群

154104_GTod_2493676.jpeg

单机

 

首先docker镜像拥有jdk8与python2.7,这里不再赘述。

进入容器中安装:

解压:

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

增加新用户cassandra:

adduser cassandra

修改密码:

passwd cassandra

修改配置文件cassandra.yaml:

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

运行:

cd apache-cassandra-3.9

nohup ./cassandra -f

测试启动是否成功:

./cqlsh localhost

 

cqlsh>
进入cql的shell表示启动成功

退出容器保存为新镜像:

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 &

如图所示:

145615_kukO_2493676.png

这是两个节点的情况,当一个节点宕机了,由于Replication factory(副本因子或复制因子)为1,无法将数据复制到另一个节点上,那么会出现R(0)+W(0)>N(副本因子)1公式不成立,所以两台节点时必须都正常运行,否则在执行CQL语句时出现下面的情况

145624_JDqe_2493676.png

 

 

安装遇到的问题:

在启动容器后发现无法访问9042端口,进入到容器之后发现是启动cassandra之后守护的IP是127.0.0.1这个回环地址,只允许容器内通信,这样docker映射后的端口是无法访问的,所以应该将cassandra的监听地址修改为本地地址(容器的地址),rpc地址修改为全网地址0.0.0.0

推荐CQL可视化工具:Datastax DevCenter

145802_M4Gx_2493676.png

管理与监控管理工具:DataStax OpsCenter(安装步骤参照官网:http://docs.datastax.com/en/datastax_enterprise/5.0/datastax_enterprise/install/installNoSudoDse.html

转载于:https://my.oschina.net/lzhaoqiang/blog/775995

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值