环境准备:
关闭防火墙与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的一些经验总结,分享给大家,之后会持续更新。