Cassandra数据分布之1数据中心(DC)和机架(RACK)

本文所使用的Cassandra版本为1.2.0版。

这几天一直在一边学习Cassandra一边做测试。前天做了个集群压力测试,测了1个晚上,但因为有些概念不清晰,配置错误,最后白做了,今晚上调整了配置重新开始做。

错误的原因是把数据中心、机架的概念弄混了,多个数据中心的placement_strategy配成了SimpleStrategy,这肯定是不行了。下面说说我整理的内容和正确理解。

数据中心:

顾名思义就是存放数据的地方,百度百科的解释就不说了。我的理解是数据中心可以是一个机房或者一个区域的设备组合。其实这个概念也不太准确,主要还是看你自己的业务情况。如果业务量小,为了做个简单的灾备或可用性,一台服务器也可以是一个数据中心,如果业务量很大,并且需要考虑到网络的可用性问题,有时可能需要备移动、联通和电信的网络和机房,那就比较复杂了。据我了解的某银行的业务,就是以一个地区作为一个数据中心来互备的。如下图(不一定准确哦,嘿嘿,大体是这样的)。


面再说一下机架,刚开始我把它和snitch搞混淆了。其实机架可简单的理解为存放服务器的机柜。

那数据中心与机架是什么关系呢?N:1,1:N,M:N。如果只需要几台服务器就能满足业务需求,这些服务器至少有2个数据中心,那这种情况下多个数据中心可以放在1个机架上,不过这种情况对数据灾备来说是不太保险的。第2种情况是1个数据中心相当于1个机房,那机房里会有多个机架。第3种情况M:N为多个机房的多个数据中心置于多个机架上。

而在Cassandra1.2.0中数据中心和机架的配置位于apache-cassandra-1.2.0\conf\cassandra-topology.properties文件中,如:

# Cassandra Node IP=Data Center:Rack
192.168.1.100=DC1:RAC1
192.168.2.200=DC2:RAC2

10.0.0.10=DC1:RAC1
10.0.0.11=DC1:RAC1
10.0.0.12=DC1:RAC2

10.20.114.10=DC2:RAC1
10.20.114.11=DC2:RAC1

10.21.119.13=DC3:RAC1
10.21.119.10=DC3:RAC1

10.0.0.13=DC1:RAC2
10.21.119.14=DC3:RAC2
10.20.114.15=DC2:RAC2

# default for unkNown nodes
default=DC1:RAC1

上面这段有3个数据中心DC1,DC2,DC3DC1有两个机架RAC1,RAC2总共5个node,DC2有两个机架RAC1,RAC2总共4个node,DC3有两个机架RAC1,RAC2总共3个node。如果有新加入的node则把节点放于DC1:RAC1。数据中心和机架的关系就是我们上面说的M:N的关系了。(这个配置的生效需要在cassandra.yaml配置endpoint_snitch=PropertyFileSnitch或RackInferringSnitch。这个下篇写,呵呵。)


不过在官方文档中说:在整个集群中最简单和最常见的实现是只定义一个机架。多个机架应避免使用,原因如下

  • 大部分用户忽略或忘记了机架(RACK) 的要求,那就是为了使数据得到安全和适当的分布,机架应以交替顺序组织。
  • 许多用户不能有效使用机架信息例如,设立尽可能多的节点(或类似有益情况机架
  • 使用机架扩展集群可以是很乏味过程通常涉及多个节点移动并且必须确保机架分布数据正确和均集群需要即时扩展时,机架应该是最后再考虑的

正确使用机架(RACK)

  • 每个机架的节点数一致。
  • 使用1个机架和将节点分布于不同机架的交替模式。这可以让你仍然可以得到Cassandra的机架功能的好处允许快速功能扩展。一旦集群稳定后,就可以交换节点并进行适当的移动,以确保在交替模式下节点仍在环中

参考:Multi-datacenter Replication in Cassandra,Cassandra权威指南,Deploying Cassandra across Multiple Data Centerscassandra-s-rack-feature


Cassandra数据分布系列文章

  1. Cassandra数据分布之1数据中心和机架
  2. Cassandra数据分布和副本
  3. Cassandra数据分布之3概念之间的联系
  4. Cassandra数据分布之4机架感应
  5. Cassandra数据分布之5分区器
  6. Cassandra数据分布测试

相关文章

校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮...
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉...
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透...
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)