Cassandra 之旅 (四) 配置集群

cassandra配置集群还是比较简单的。步骤如下:

  • 打开cassandra.yaml文件,
  1. 修改cluster_name:'Test Cluster'为你想要的集群名字
  2. 去掉屏蔽num_tokens:256,这个值是计算负载用的,比如你集群有2个节点,都配的是256,那么两台机子就是平分压力各为50%
  3. 修改seeds:"localhost"为本机IP,这个seeds是个什么东西呢?比方说,一个数据中心有很多机器,你需要一个或多个来做分配,统筹,与其它数据中心交互,这个就是seed。IP与IP之间用逗号隔开。
  4. 把listen_address等默认配置为localhost的全改为本机IP
  5. 修改endpoint_snith为PropertyFileSnith
  • 打开conf\cassandra-topology.properties

配置IP与数据中心的关系,如我的两台机器为

 

16.158.81.54=dc1:rac1
16.158.83.70=dc2:rac1
 
#再把其它不需要的IP映射删除掉
 
这里为什么用小写呢!因为我在使用CQLSH与DRIVE的时候,发现在不支持大小写,全会被转成小写。如果你配成DC1:RAC1的形式,那么在查询数据、插入数据时是会找不到节点。
这里再说一下cassandra的一个数据模型与执行方式:
比如你创建一个keyspace test, 在没有创建表的时候,test这个文件夹并不会创建在data目录下面。当你创建第一个表testtable完成后,那么cassandra服务就会在Data目录下面创建一个叫test的文件夹,在test文件夹下创建一个testtable文件夹。这个过程是不依赖于什么snitch呀,什么replication呀。所以基本上无论怎么配,创建、删除keyspace或table都能成功的,但插入数据、查询数据就不一样了。比如,你用DC1:1的NetworkTopologyStrategy创建好一个keyspace与table之后,想要插入数据,那么cassandra是怎么操作的呢?首先取到keyspace创建时所设置的DC, 这里设置为DC1,然后用DC1去配置文件中找映射,而这个步骤是区分大小写的,于是就会找不到DC1的IP映射,从而产生:“一个或多个节点不可用”的错误信息。
 
  • 确保所有cassandra节点配置都做了如上的更新操作,并删除所有节点中data目录, commitlog目录中的文件

这里我为什么会说要把commitlog里的文件也删除呢?主要是这些文件中存了当前节点的token。有的人贪快可能会想,既然配置一样,把cassandra整个文件夹COPY到另一台机器上,启动就建好集群了。这时你启动多个COPY的服务之后,会发现有节点加入不了的,并可以在运行窗口看到关于token相同的错误,原因就是commitlog中存了token而且好像不能更新,cassandra官方给出的结决办法就是把commitlog中的文件删除,之后当cassandra服务启动的时候就会重新生成token了。

  • 逐一启动cassandra服务,节点就会自动加入集群了
  • 使用BIN目录下的nodetool并加参数 status查看建立集群是否成功

posted on 2013-04-30 09:44  Lewis.Zou  阅读(863)  评论(0编辑  收藏  举报

导航