在的帮助下,在一个节点上安装和启动Cassandra其实还是很简单的。但是在集群配置的时候,我这个新手看官方文档被卡住了,找了好多资料才搞明白。在这里记录一下:
第一次浅玩,至少要理解这两个概念:
- Seeds, 这段话说得非常清楚,本文后面还准备了个小实验来理解这个东东。“Cassandra没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息。为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信。种子节点可以指定多个,通过在 conf/ cassandra.yaml中的seeds属性配置。”(引用自:http://dongxicheng.org/nosql/cassandra-install/ )
- Listen_address, 其它节点与自己通信的IP,这里必须设置为自己的主机IP。
开始动手:
- 首先在所有的节点上都安装上Cassandra
- 分别在每个节点上配置Cassandra.yaml:
- Seeds, 一个集群里面找几个节点作为Seeds。官方推荐每个节点都设置成一样的。这里master1是我其中一个节点的hostname,别被误导。记住Cassandra没有中心节点
- Listen_address, 每个节点设置成自己的ip地址
- Seeds, 一个集群里面找几个节点作为Seeds。官方推荐每个节点都设置成一样的。这里master1是我其中一个节点的hostname,别被误导。记住Cassandra没有中心节点
- 依次启动节点
- 首先必须先把Seeds 节点先启动起来
- 然后启动非Seeds节点
- 这里有个坑,注意,要一个节点启动好了再去启动另一个节点。如果多个节点同时启动,多半要报错。不要图快。
- 在任意一个节点上运行 nodetool status,看到如下结果集群就算启动起来了
接下来做几个关于Seeds的小实验,(步骤是连续的,观察结果的方法是在任意一个节点上运行nodetool status)
- 当集群起来后,kill 掉 Seeds上的 Cassandra进程。观察结果:集群照常运行,Seeds节点状态变成 DN (Down and Normal)
- 再去Kill掉一个非Seeds的节点。观察结果:集群照常运行,kill掉的节点状态编程DN
- 在没有seeds的情况下,启动非Seeds节点。观察结果:启动失败
- 在没有seeds的情况下,启动Seeds节点。观察结果:启动成功
- Seeds节点启动后,再去启动第3步的非Seeds节点。观察结果:启动成功
暂到这里,高级功能还很多,慢慢玩。