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

广大2年前技术文章794

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


相关文章

oracle11g打补丁31537677验证报错

环境:操作系统: Kylin Linux Advanced Server V10数据库:oracle 11.2.0.4问题描述:打补丁31537677/时候补丁集对.so文件的验证报错$ORACLE_...

数据湖技术之iceberg(三)Iceberg数据存储格式

数据湖技术之iceberg(三)Iceberg数据存储格式

1  Iceberg数据存储格式1.1.  Iceberg术语l   data files(数据文件):数据文件是Apache Iceberg表真实存储数据的文...

Hue跑shell脚本报没权限问题

Hue跑shell脚本报没权限问题

1、客户反应运行脚本如下:经过排查服务器上没有workflow用户,尝试用root、admin测试正常 2、调用脚本运行失败1、给予脚本执行权限 chmod +x data-test.sh 2、/u...

MySQL用户权限

MySQL用户权限

1 MySQL 的权限概述mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表,我当前的版本mysql 5.7.29 。mysql权限表的验...

大数据集群监控配置操作指导(一)prometheus+grafana部署

大数据集群监控配置操作指导(一)prometheus+grafana部署

1.prometheus+grafana部署(单独部署到一台服务器。4c8g。系统盘300G。操作系统建议7.6到7.9)1.1下载prometheus和grafana的二进制包mkdir /opt/...

CDP实操--配置Ranger Kafka Policy(六)

CDP实操--配置Ranger Kafka Policy(六)

1.在 Cloudera Manager 中,导航到Kafka > Configuration。2.将SSL 客户端身份验证设置为none.3.将代理间协议设置为 SASL_PLAINTEXT。...

发表评论    

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