scylladb集群如何添加新数据中心
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
vi /etc/scylla/cassandra-rackdc.properties
dc=my_data_center --设置数据中心名称
rack=my_rack --设置机架名称
prefer_local=true
5、启动scylla服务
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