Cassandra配置多节点集群

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pzoozq/article/details/48107251

本文已迁移到我的新博客地址:blog.favorstack.io 欢迎访问~

上一篇文章 Cassandra入门指南 中,我们已经配置好了一个单节点集群,接下来,我们要往这个集群中多加几个节点,看看多个节点是如何同时工作的。

Cassandra节点之间交换信息是通过一种叫做Gossip(暂时不知道该翻译为哪个专有名词合适,暂且意会吧)的机制。但是要想让一个消息传递到一个新加入的节点,至少还需要知道另外一个节点,这个节点叫做种子(Seed)。通常我们会选择一小部分相对稳定的节点作为种子节点,但这并不是硬性规定。务必要确保每个种子节点至少能感知另外一个种子节点。记住,这样做的目的是要避免鸡和蛋的问题,为集群中的所有节点提供一种发现其他节点的途径。
除了种子节点,我们还需要配置IP接口来监听Gossip和CQL(分别为listen_address 和 rpc_address),具体如下:
1) 在每个节点安装Cassandra
2) 为集群选择一个合适的名字
3) 为每个节点分配一个IP
4) 确定种子节点,但不要把所有节点都作为种子
5) 如果是多数据中心,为每个数据中心和机架确定命名约定,比如:DC1, DC2 或 100, 200 和 RAC1, RAC2 或 R101, R102。选择名称要慎重,不要妄想再重命名数据中心。

6) 其他配置参见cassandra.yaml配置文件和cassandra-rackdc.properties配置文件等。

本示例描述了在单个数据中心单个机架安装3个节点的集群。
步骤
1.安装节点:
node0 192.168.0.111(seed1)
node1 192.168.0.112(seed2)
node2 192.168.0.113
注意:每个数据中心拥有多个种子节点是一条最佳实践。
2.如果集群中有防火墙,确保相应端口通过,以便节点之间能互相访问。
3.如果Cassandra在运行中,必须先停掉,并且清理数据:
停止 Cassandra:
$ ps -ef | grep cassandra
$ sudo kill pid

清理数据:
$ sudo rm -rf /var/lib/apache-cassandra-2.1.9/data /*
4.配置cassandra.yaml中的属性:
这里只需修改两处,其他默认即可:
-seeds: 每个种子节点的内部IP。种子节点不做引导,它负责处理现有集群中新加入的节点。对于新的集群,引导处理会跳过种子节点。
listen_address:如果不设置的话,Cassandra会从系统读取与主机名对应的本地地址,某些情况下Cassandra获取的地址并不正确,此时我们必须手动指定。
如:
cluster_name: 'monitorCluster'
seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
         - seeds: "192.168.0.111,192.168.0.112"
listen_address:192.168.0.111
rpc_address: 192.168.0.111


配置完所有节点后,先启动种子节点,一次一个,然后再启动其他节点
$ cd /var/lib/apache-cassandra-2.1.9 

$ sudo bin/cassandra

我们可以看到,每个节点都会依次加入该集群。

所有节点都起来后:

最后检查集群运行状态:
$ cd /var/lib/apache-cassandra-2.1.9 
$ bin/nodetool status    
(这个命令可以不加sudo)

我们从状态中可以开到后加入的节点正在分担负载。


不得不提一下,对于我这个2010年的Think本来说,运行三个节点的虚拟机已经非常吃力了,4G内存达到80%了,这样基本只能用cqlsh来交互了,后续学习还是得用单个节点才行,除非你有充足的资源。

参考:
http://docs.datastax.com/en/cassandra/2.1/cassandra/initialize/initializeSingleDS.html

本文已迁移到我的新博客地址:blog.favorstack.io 欢迎访问~

猜你喜欢

转载自blog.csdn.net/pzoozq/article/details/48107251