ScyllaDB4.1分布式集群搭建与使用

环境准备:

关闭防火墙与selinux

一、集群部署

1、安装(每个节点都安装)

curl -o /etc/yum.repos.d/scylla.repo -L http://downloads.scylladb.com.s3.amazonaws.com/rpm/centos/scylla-4.1.repo
yum install -y gcc gcc-c++
yum install scylla -y

#初始化
scylla_setup --no-raid-setup --no-node-exporter --no-fstrim-setup

2、修改配置文件

mkdir -p /data/Scylla
chown -R scylla:scylla /data

#cat /etc/scylla/scylla.yaml
cluster_name: 'test'
num_tokens: 256
data_file_directories:
  - /data/scylla
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "192.168.15.55,192.168.15.56,192.168.15.57"
listen_address: 192.168.15.55
native_transport_port: 9042
read_request_timeout_in_ms: 5000
write_request_timeout_in_ms: 2000
cas_contention_timeout_in_ms: 1000
endpoint_snitch: SimpleSnitch
rpc_address: 192.168.15.55
rpc_port: 9160
api_port: 10000
api_address: 127.0.0.1
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
commitlog_total_space_in_mb: -1
murmur3_partitioner_ignore_msb_bits: 12
api_ui_dir: /opt/scylladb/swagger-ui/dist/
api_doc_dir: /opt/scylladb/api/api-doc/

#参数含义
cluster_name:集群名称,一个友好的名称,比如命名“Scylla Cluster”;
seeds:种子节点,为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点
(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节
点通信。种子节点可以指定多个,用逗号分割开。
storage_port:可以使用默认的配置,7000,这个端口用于接收命令和数据。
listen_address:这个地址用于节点之间的通信,也可以配置listen_interface,指定使用哪
个网卡接口。两者选一配置即可,不要同时配置。
native_transport_port:这个端口用于Client到Cassandra服务的通信。注意配置防火墙。
start_rpc: true
rpc_address: 改成本节点地址

3、启动Scylla

systemctl start scylla-server
systemctl enable scylla-server

4、查看集群状态

nodetool status
在这里插入图片描述

二、扩缩容节点

1、扩容节点

(1)安装单节点Scylla(以上1步骤)
(2)修改配置文件

mkdir -p /data/Scylla
chown -R scylla:scylla /data

#cat /etc/scylla/scylla.yaml
cluster_name: 'test'
num_tokens: 256
data_file_directories:
  - /data/scylla
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "192.168.15.55,192.168.15.56,192.168.15.57"
listen_address: 192.168.15.58
native_transport_port: 9042
read_request_timeout_in_ms: 5000
write_request_timeout_in_ms: 2000
cas_contention_timeout_in_ms: 1000
endpoint_snitch: SimpleSnitch
rpc_address: 192.168.15.58
rpc_port: 9160
api_port: 10000
api_address: 127.0.0.1
batch_size_warn_threshold_in_kb: 5
batch_size_fail_threshold_in_kb: 50
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
commitlog_total_space_in_mb: -1
murmur3_partitioner_ignore_msb_bits: 12
api_ui_dir: /opt/scylladb/swagger-ui/dist/
api_doc_dir: /opt/scylladb/api/api-doc/

#参数含义
cluster_name:集群名称,要和要加入的集群的名称相同
seeds:种子节点列表,至少要包含一个可以正常通信的seed节点才可以加入集群
listen_address:scylladb和集群其他节点进行通信的IP地址
auto_bootstrap:新节点是否自动同步数据到本节点
rpc_address:Thrift、CQL等客户端连接的地址

(3)启动服务使其加入集群

#录入数据持续中...
#启动之后就会加入到集群
systemctl start scylla-server
systemctl enable scylla-server

录入过程不受影响
在这里插入图片描述

添加完成
在这里插入图片描述

2、缩减节点(模拟节点替换场景)

(1)查看节点状态
在这里插入图片描述

(2)执行集群缩减命令

#在要被移除的节点上执行
nodetool decommission

在这里插入图片描述

(3)查看缩减过程中网络传输以及数据同步过程

#查看网络传输情况
iftop

在这里插入图片描述

#查看数据同步状态
nodetool netstats

在这里插入图片描述

执行过程中,查看状态
在这里插入图片描述

(4)执行完毕后,查看集群状态
在这里插入图片描述

(5)数据量对比

移除前:2.63+2.93+2.19+2.66=10.41GB
移除后:3.27+3.67+3.56=10.5GB (移除节点过程是数据录入不停止)

3、删除节点(模拟节点down机)
(1)节点down机,节点状态变为DN
在这里插入图片描述

(2)删除节点(需考虑当前节点数据分散到其他集群节点,磁盘空间是否足够)

#命令格式: -h 加host id
nodetool  removenode -h d6450829-b334-45fb-b1f4-75d2d7c38a64

在这里插入图片描述

删除过程中,查看状态
在这里插入图片描述

三、ScyllaDB基本操作

1、创建keysapce

CREATE KEYSPACE IF NOT EXISTS test WITH REPLICATION = {
    
    'class': 'SimpleStrategy','replication_factor':3};

#修改:
ALTER KEYSPACE test WITH replication = {
    
    'class': 'SimpleStrategy','replication_factor':1};

2、创建表

CREATE TABLE demo(id int PRIMARY KEY, user_name varchar, age varchar, sex varchar, character varchar);

3、插入数据

INSERT INTO demo (id,user_name,age,sex,character) VALUES (‘1’,'zhangsan', '18', 'man', 'funny')

总结

文章记录了在工作中使用ScyllaDB的一些经验总结,分享给大家,之后会持续更新。

Guess you like

Origin blog.csdn.net/qq_37837432/article/details/121524369