cassandra是集群部署,多个节点,多个数据备份,一两个节点挂掉,一般不会有数据丢失。只要删除当掉的节点,对其它节点进行repair,数据都会自动均衡到完整的份数。
但是如果大面积节点掉电,或者机房着火那就肯定要丢失数据了,使用cassandra作为数据存储的业务,肯定是很大的业务,数据量超大的那种。机房容灾肯定是必不可少的。
cassandra提供多种多数据中心部署、机架敏感策略。这里介绍一种最普通的一种: GossipingPropertyFileSnitch
GossipingPropertyFileSnitch策略支持简单的多个数据中心,和多机架。
第一步:
在cassandra.yaml配置文件中指定集群支持该策略:
endpoint_snitch: GossipingPropertyFileSnitch
第二步:
在cassandra.yaml的seeds中把两个数据中心的种子节点都配上
– seeds: “192.168.22.101,192.168.22.102,192.168.23.101,192.168.23.102”
第三步:
配置cassandra-rackdc.properties 每台机器都配置自己所属的数据中心名称和机架名称
dc=DC1
rack=RAC1
配置机架的目的是,防止整个机框掉电,数据丢失。cassandra可以尽量保证同一份数据的多个副本不存在于同一个机架上。
这就要求你的机架个数要大约等于你的数据副本个数,同时每个机架的节点个数尽量相同,否则会导致某些节点数据偏多,分布不均
第四步
创建keyspace使用NetworkTopologyStrategy策略,并且制定每个集群的份数。
CREATE KEYSPACE mykeyspace WITH replication = {
‘class’: ‘NetworkTopologyStrategy’,
‘DC1’: ‘3’,
‘DC2’: ‘3’
};
第五步
客户端使用数据一致性策略,从QUORUM改为LOCAL_QUORUM。这样客户端会先从LOCAL数据中查询,LOCAL无法查询,再从REMOTE数据中心进行查询。
cassandra JAVA官方驱动,把默认首先连上的节点所属的数据中心视为LOCAL数据中心。所以你不要容灾数据中心节点IP配到了代码中。
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/770.html