尝试搭建ScyllaDB多节点集群

ScyllaDB 是什么?

ScyllaDB(斯堪拉DB)是一个基于C++替代了Apache Cassandra的数据库,比Cassandra快10倍以上,利用这个速度可以将节点数量压缩到原来的1/5到1/10(这是一种以扩展性为优先的群集设计思想)。ScyllaDB与Cassandra兼容,在开发中可以直接使用Cassandra的驱动程序、CQL、各种连接器和CLI等工具。

scylladb2.png
    https://www.scylladb.com/open-source/

在这里,我们将介绍构建多节点集群的步骤,作为真正的ScyllaDB体验入口。

预先准备

作为最小配置,需要3台服务器。
作者进行了以下配置。

    • 2core/8GB ✖ 3

 

    Unbuntu16.04

如果要使用云服务,需要打开以下端口。

scylladb-azure.png

ScyllaDB软件包的安装

请参考“构建ScyllaDB独立集群”来安装软件包。软件包安装和ScyllaDB设置(scylla_setup)的步骤是完全相同的。

试着建立一个ScyllaDB的独立集群。

安装包后设置集群环境。

Scylla数据库的设置位于/etc/scylla/scylla.yaml文件中。

以下是对ScyllaDB集群构建所需参数的简要解释。

    • cluster_name

 

    • 任意クラスタ―名を指定する。

 

    • seeds

 

    • 必ず、1台以上のシードノードを指定する。シードノードは、他のノードのステータスに関する情報が集まるノードであり、他のノードのステータスを取得するためのハブノードでもある。シードノードが存在しないと初期のクラスター形成ができない。シードノードの一時的な不在でも致命的にはならないが、不在の状態でクラスタ―のメンテナンスは出来ない。事実上のレポジトリノードの役割を果たしているとみたほうがいい。商用環境の実装時には、冗長性を考慮するべきである。

 

    • listen_address

 

    • クラスタ―内で他のノードと通信を行うために使用するIPアドレス

 

    • auto_bootstrap

 

    • falseにする。デフォルトでは、trueになっている。

 

    • endpoint_snitch

 

    • GossipingPropertyFileSnitch。実稼働環境にはこのスニッチを推奨。/etc/scylla/cassandra-rackdc.propertiesファイルに定義されているデータセンターとラック配置の情報を参照する。

 

    • rpc_address

 

    クライアント接続のためのIPアドレス

在各个服务器上进行配置。笔者选择了以下这种组合。

    • 10.0.0.6(seed)

 

    • 10.0.0.11

 

    10.0.0.5(seed)

10.0.0.6(种子)的配置设置

cluster_name: 'Scylla_cluster_demo'
seeds: "10.0.0.6,10.0.0.5 "
endpoint_snitch: GossipingPropertyFileSnitch
listen_address: 10.0.0.6
rpc_address: 10.0.0.6
/etc/scylla/cassandra-rackdc.properties
dc=DC1
rack=RAC1
prefer_local=true

10.0.0.11的配置

cluster_name: 'Scylla_cluster_demo'
seeds: "10.0.0.6,10.0.0.5"
endpoint_snitch: GossipingPropertyFileSnitch
listen_address: 10.0.0.11
rpc_address: 10.0.0.11
/etc/scylla/cassandra-rackdc.properties
dc=DC1
rack=RAC1
prefer_local=true

10.0.0.5的设置

cluster_name: 'Scylla_cluster_demo'
seeds: "10.0.0.6,10.0.0.5"
endpoint_snitch: GossipingPropertyFileSnitch
listen_address: 10.0.0.5
rpc_address: 10.0.0.5
/etc/scylla/cassandra-rackdc.properties
dc=DC1
rack=RAC1
prefer_local=true

启动ScyllaDB集群

请在每个服务器上停止ScyllaDB服务。在安装软件包时,应该已经启动了进程。

$ sudo systemctl stop scylla-server

$ sudo systemctl status scylla-server

在各个服务器上删除初始数据。

$ sudo rm -rf /var/lib/scylla/data/system/*

首先启动各个种子节点。在集群的初始形成阶段,首先启动的节点将成为环的起点。

$ sudo systemctl start scylla-server

$ sudo systemctl status scylla-server

我要检查集群的状态。应该有两个节点正在运行。

$ nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns    Host ID                               Rack
UN  10.0.0.5   811.88 KB  256          ?       2713d751-7592-441d-b13c-616bd9c263d9  RAC1
UN  10.0.0.6   786.95 KB  256          ?       4e0d3ebc-43cc-489b-bb24-1cf17252e5bf  RAC1

确认种子节点启动后,启动工作节点(10.0.0.11)。

$ sudo systemctl start scylla-server

$ sudo systemctl status scylla-server

我要检查集群的状态。

$ nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns    Host ID                               Rack
UN  10.0.0.5   811.88 KB  256          ?       2713d751-7592-441d-b13c-616bd9c263d9  RAC1
UN  10.0.0.6   786.95 KB  256          ?       4e0d3ebc-43cc-489b-bb24-1cf17252e5bf  RAC1
UJ  10.0.0.11  ?          256          ?       aa4cbe9f-cf79-415e-9e13-3ebeeb30f889  RAC1

连接到ScyllaDB。

使用CQL(Cassandra查询语言)进行连接。

$ cqlsh [IP Address]
Connected to  at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.0.8 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh>
cqlsh> help

Documented shell commands:
===========================
CAPTURE  CLS          COPY  DESCRIBE  EXPAND  LOGIN   SERIAL  SOURCE   UNICODE
CLEAR    CONSISTENCY  DESC  EXIT      HELP    PAGING  SHOW    TRACING

CQL help topics:
================
AGGREGATES               CREATE_KEYSPACE           DROP_TRIGGER      TEXT
ALTER_KEYSPACE           CREATE_MATERIALIZED_VIEW  DROP_TYPE         TIME
ALTER_MATERIALIZED_VIEW  CREATE_ROLE               DROP_USER         TIMESTAMP
ALTER_TABLE              CREATE_TABLE              FUNCTIONS         TRUNCATE
ALTER_TYPE               CREATE_TRIGGER            GRANT             TYPES
ALTER_USER               CREATE_TYPE               INSERT            UPDATE
APPLY                    CREATE_USER               INSERT_JSON       USE
ASCII                    DATE                      INT               UUID
BATCH                    DELETE                    JSON
BEGIN                    DROP_AGGREGATE            KEYWORDS
BLOB                     DROP_COLUMNFAMILY         LIST_PERMISSIONS
BOOLEAN                  DROP_FUNCTION             LIST_ROLES
COUNTER                  DROP_INDEX                LIST_USERS
CREATE_AGGREGATE         DROP_KEYSPACE             PERMISSIONS
CREATE_COLUMNFAMILY      DROP_MATERIALIZED_VIEW    REVOKE
CREATE_FUNCTION          DROP_ROLE                 SELECT
CREATE_INDEX             DROP_TABLE                SELECT_JSON

cqlsh> exit;

如果要尝试CQL,请参考以下链接:
http://cassandra.apache.org/doc/latest/cql/index.html

总结

ScyllaDB的多节点集群建设步骤与Apache Cassandra相同,除了ScyllaDB设置(scylla_setup)外。作者注意到ScyllaDB的“先扩展”架构能够消除在集群构建和运营中的节点数量问题。能够建设多节点集群意味着这种体验即将到来。

广告
将在 10 秒后关闭
bannerAds