1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ScyllaDBのマルチノードクラスタ―を構築してみる

Last updated at Posted at 2018-09-09

ScyllaDBとは

ScyllaDB(スキュラDB)とは、Apache CassandraをJAVAからC++でリプレースし、Cassandraより10倍以上高速であり、その速さを利用してノード数を1/5~1/10に圧縮できる異次元のデータベースです(スケールアップファーストのクラスター設計思想)。Cassandraとは互換性があり、開発ではCassandraのドライバ―やCQL、各種コネクター、CLIなどをそのまま利用できます。

scylladb2.png

ここでは、本格的なScyllaDB体験の入口として、マルチノードクラスタ―の構築手順をご紹介します。

事前準備

最小構成として3台のサーバが必要です。
筆者は、次のように構成しています。

  • 2core/8GB ✖ 3
  • Unbuntu16.04

クラウドを利用する場合、次のようなポートを開けておく必要があります。

scylladb-azure.png

ScyllaDBのパッケージインストール

パッケージのインストールは、「ScyllaDBのスタンドアロンクラスタ―を構築してみる」を参照してください。パッケージインストール及びScyllaDBセットアップ(scylla_setup)までの手順は、まったく同じです。

ScyllaDBのスタンドアロンクラスタ―を構築してみる

パッケージをインストールしてからクラスタ―の環境を設定します。

/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(seed)の設定

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

クラスタ―のステータスを確認します。2ノードが起動しているはずです。

$ 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 Query Language)で接続します。

$ 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のマルチノードクラスター構築の手順も、ScyllaDBセットアップ(scylla_setup)を除いては、Apache Cassandraと同じです。筆者は、クラスタ―の構築や運用においてノード数という悩みの種を一掃してくれるScyllaDBのスケールアップファーストのアーキテクチャーに注目しています。マルチノードクラスターの構築が出来たということは、その体験が目前ということですね。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?