cassandra多个数据中心实现异地容灾

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配到了代码中。

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *