scylladb集群如何添加新数据中心

广大3年前技术文章1142

1、信息收集

· 收集现有集群信息

cat /etc/scylla/scylla.yaml | grep cluster_name
cat /etc/scylla/scylla.yaml | grep seeds:
cat /etc/scylla/scylla.yaml | grep endpoint_snitch
cat /etc/scylla/scylla.yaml | grep authenticator
cat /etc/scylla/scylla.yaml | grep -E "listen_address|rpc_address"
scylla --version

· 应用程序配置检查更改。

在所有客户机应用程序上,将一致性级别切换为LOCAL_* (LOCAL_ONE、LOCAL_QUORUM等),以防止协调器访问要添加的数据中心。同时应用修改配置不访问集群新的数据中心。


2、现有集群单数据中心配置修改

2.1现有数据中心配置是单数据中心,需要修改参数配置支持多数据中心,每个节点都需要更改

如果已经是多数据中心此步骤可以忽略

--endpoint_snitch默认配置为SimpleSnitch,不支持多数据中心,需要修改为GossipingPropertyFileSnitch

vi /etc/scylla/scylla.yaml
endpoint_snitch: GossipingPropertyFileSnitch


--根据实际配置数据中心名称和机架名称

vi /etc/scylla/cassandra-rackdc.properties
dc=my_data_center
rack=my_rack
prefer_local=true

2.2重启服务生效参数

每个节点轮流重启生效

systemctl restart scylla-server

3、集群新数据中心部署

新数据中心每个新节点进行scylladb部署,参考文档 https://yunche.pro/blog/?id=147


4、配置参数

配置文件默认位于/etc/scylla,新数据中心每个节点都要配置

4.1 scylla.yaml

各参数和现有集群修改后一致,

seeds--该参数加入新数据中心新节点ip作为种子节点,保证后续下线节点时候,集群可用。

vi  /etc/scylla/scylla.yaml
cluster_name: 'dtstack'           --集群名称
listen_address: 172.16.121.154    --本节点ip
rpc_address: 172.16.121.154       --本节点ip
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "172.16.121.151,172.16.121.154"
endpoint_snitch: GossipingPropertyFileSnitch

4.2 cassandra-rackdc.properties

设置集群新数据中心的dc和rack参数

vi /etc/scylla/cassandra-rackdc.properties

dc=my_data_center   --设置数据中心名称
rack=my_rack        --设置机架名称
prefer_local=true

5、启动scylla服务

新数据中心添加所有新节点操作

systemctl start scylla-server

6、验证新数据中心是否加到集群中

nodetool  -h ::FFFF:127.0.0.1 status

7、更改所有业务keyspace的复制策略

--查看所有的keyspaces
[root@172-16-121-151 ~]#  cqlsh 172.16.121.151
Connected to dtstack at 172.16.121.151:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh> describe keyspaces;

案例:
更改前:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;


更改为多中心多副本:
ALTER KEYSPACE test WITH replication = {'class':'NetworkTopologyStrategy', 'my_data_center' : '3', 'my_data_center1' : '3'};

更改后:
cqlsh> desc test;
CREATE KEYSPACE test WITH replication = {'class': 'NetworkTopologyStrategy', 'my_data_center': '3', 'my_data_center1': '3'}  AND durable_writes = true;


8、新数据中心所有节点运行节点重建

在新数据中心的每个节点上运行nodeool rebuild,并在rebuild命令中指定现有的数据中心名称。确保刚刚添加到集群的新节点将识别集群中的现有数据中心。

nodetool -h ::FFFF:127.0.0.1  rebuild --my_data_center

9、运行数据修复

在所有节点运行数据修复

nodetool -h ::FFFF:127.0.0.1 repair -pr


相关文章

hiveserver2高可用

hiveserver2高可用

一、安装hiveserver2服务步骤1. 将正常使用的hive目录复制到安装hiveserver2的节点(hd3节点)scp -r /opt/hive hd3:/opt/二、配置hive-site....

oracle设置归档路径和格式

1.归档文件格式设置说明:设置归档日志名称格式:alter system set log_archive_format='arch_%t_%s_%r.arc' scope=spfile sid='*'...

kafka文件存储机制

kafka文件存储机制

Topic 数据的存储机制       Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。P...

ES运维(二)字段类型与内存管理

ES运维(二)字段类型与内存管理

一、ES常见字段类型1、 概述字段是数据存储的最小微粒,根据数据的性质不同将数据分成不同的字段类型,熟悉不同字段类型的特性,对索引的Mapping设计、查询调优都极其重要。2、 关键参数In...

netca报错UnsatisfiedLinkError exception loading native library

1、netca报错:UnsatisfiedLinkError exception loading native library: njni11报错:[oracle@test-db ~]$ netca...

数据湖技术之iceberg(七)Spark管理iceberg表

数据湖技术之iceberg(七)Spark管理iceberg表

1.SparkSQL设置catalog配置以下操作主要是SparkSQL操作Iceberg,同样Spark中支持两种Catalog的设置:hive和hadoop,Hive Catalog就是icebe...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。