IDCF Tech-Blog

IDCF テックブログ

クラウド・ビッグデータ・データセンターを提供するIDCフロンティアの公式エンジニアブログ

超高速NoSQLデータベースAerospikeを試してみた

お久しぶりです、ソリューションアーキテクト部の金杉です!

今年度から、ソリューションアーキテクト部に新たにエバンジェリストグループができました。いろいろと情報を発信していく他、みなさまのお役に立てるコミュニティテンプレートの公開も順次していこうと思います。本日は、その第一弾、Aerospike Server Community Editionテンプレートの使い所を紹介しますー!

Aerospikeってなに?

社会がビッグデータやIoT革命を起こしている今、アプリケーションはより高品質なデータベースを必要としています。"高品質"には、リアルタイムで的確に答えを出せる速度と、より膨大なデータを処理できるスケーラビリティが求められています。Aerospikeは、そのようなニーズを満たす、速度とスケーラビリティを両立させた高性能なNoSQLデータベースサーバーです。

www.aerospike.jp

今回のブログでは、簡単に以下4点を紹介します!

  1. Aerospikeのすごいところ
  2. IDCFクラウドでAerospike Serverを立ててみる(500円でできるんだぜ)
  3. AMCから確認してみる
  4. C言語のクライアントとベンチマークツールを試してみる
Aerospikeこんなにすごい!その1〜高パフォーマンス〜

大量な情報から的確に答えを短時間で求められるシーンが増えている今、データベースの処理速度は常に課題となってきました。そこで従来のRDBMSとは別に、メモリ上で動作するNoSQLが登場しました。AerospikeもNoSQLの一種で、マルチスレッド、マルチコアのアドバンテージを存分に活かし、スペックによっては1台のノードで秒間100万TPSも処理できます。

Aerospikeこんなにすごい!その2〜スケーラビリティ〜

TB、PB単位でデータが増えて行く一方、メモリ上で動くNoSQLはスケールが常に課題になってきました。スケーラビリティを意識せずに開発が進んでしまうと、気づいた時点ではすでにスケールができず、一から作り直しになってしまう可能性もあります。Aerospikeはスケーラビリティを考慮した上設計されたため、ノードを追加すれば性能と容量がリニアで増加する仕様になっています。稼働中でも低負荷でノードの追加ができるため、データの増減が多いシステムには特に適しています。

Aerospikeこんなにすごい!その3〜フラッシュ(SSD)最適化〜

NoSQLはメモリ上で動かすのが一般的ですが、Aerospikeは業界初のフラッシュに最適化されたNoSQLソリューションです。RAM/SSDストレージアーキテクチャを採用しているため、RAM並みの高パフォーマンスを持ちながらもコストを低く抑えることができます。さらに、フラッシュ(SSD)をつかっているのでサーバーの台数も低く抑えることができます。 ご存知の方もいるかと思いますが、IDCFクラウドの新しいゾーンではオールフラッシュストレージが採用されているため、Aerospikeとの相性は抜群です!

Aerospikeサーバーを作ってみよう

Aerospikeは、現在二つの製品を提供しています。オープンソースのAerospike Community Editionと、追加機能、試験済・保証されたビルド、ホットパッチの提供、24時間サポートが含まれるAerospike Enterprise Editionです。両者の違いについてはこちらを参考にしてください。 今回は、IDCFクラウド上でコミュニティテンプレートとして公開されているCommunity Editionを試してみます。なんと、500円からお試しできます!

Aerospikeの仮想マシンを作成

それではまず、IDCFクラウドにログインします。左のメニューの「テンプレート」に入ると、マイテンプレートとコミュニティテンプレート二つのタブがあります。今回は、「コミュニティテンプレート」を見てみましょう。

f:id:ykanasugi:20160706103519p:plain

ここに、IDCフロンティアの公式パートナーや個人ユーザーの方々がシェアしたテンプレートが公開されています。上図の一番下に「Aerospike Server Community Edition」が見えたら、クリックします。発行者にある"IDCFエバジェリストグループ"がやけにかっこいいです(笑

続いて、画面右側にある「仮想マシン作成」をクリックします。

f:id:ykanasugi:20160706104704p:plain

作成をするゾーンを選択し、下のサービス仕様同意のチェックボックスにチェックを入れます。最後に、「仮想マシン作成画面へ」をクリックします。ここからは普段の仮想マシン作成と同じ流れなので、割愛します。詳しくはご利用ガイドを参考にしてください!以下が、今回作成した仮想マシンのスペックです。

項目
ゾーン Augusta(西日本リージョン)
マシンタイプ Light.S1
イメージ Aerospike Server Community Edition
ボリューム そのまま
SSH Key 作成
仮想マシン台数 1
ネットワークインターフェース そのまま
詳細情報・仮想マシン名 Aerospike-1
詳細情報・プライベートIPアドレス 自動設定

作成が完了したら、仮想マシンへ接続するため「IPアドレス」の設定をする必要があります。 22番ポートのポートフォワードとファイアウォールの設定をしましょう。また、後ほどAMCへアクセスするため、8081番ポートも同じくポートフォワードとファイアウォールの設定をしておきましょう。

ログインしてREADMEを読んでみよう

では、早速作成したAerospikeサーバーにrootでSSHしましょう。仮想マシンへの接続方法は、こちらのガイドを参考にしてください。 ログイン後、rootのホームを見てみると、READMEがあります。READMEには簡単な使い方が記載されています。

[root@AeroSpike-1 ~]# ls  
README  aerospike  
[root@AeroSpike-1 ~]# cat README  
2016.5.9  
・本コミュニティテンプレートについて  
  このテンプレートは IDCフロンティア エヴァンジェリストG により構築提供されています。  本テンプレート内容についてのサポートは、IDCフロンティアおよびAerospike社からは提供されません。
・Aerospike Server Community Edition について  
  詳細やドキュメントについては、  
    http://www.aerospike.com/  
  または  
    http://www.aerospike.jp/  
  を参照ください。  
...(略)...

Aerospikeを起動してみよう

では、READMEの指示に沿って実行してみましょう。

# 仮想マシンタイプによってAerospikeのスレッド数とキュー数を設定  
# 各namespaceのメモリサイズを搭載メモリの半分に設定します  
[root@AeroSpike-1 ~]# /root/aerospike/setconfig.sh  
Config file path: /etc/aerospike/aerospike.conf  
Backup file path: /etc/aerospike/aerospike.conf.20160705181650  
Number of cores on the host: 1  
Memory size on the host [GB]: 1  
Set memory-size: 512M  

# Aerospikeの起動および自動起動の設定
[root@AeroSpike-1 ~]# service aerospike start  
Increasing read socket buffer limit (/proc/sys/net/core/rmem_max): 124928 -> 15728640  
Increasing write socket buffer limit (/proc/sys/net/core/wmem_max): 124928 -> 5242880  
Starting and checking aerospike:                           [  OK  ]  
[root@AeroSpike-1 ~]# chkconfig aerospike on  

# AMCの起動および自動起動の設定
[root@AeroSpike-1 ~]# service amc start  
Starting AMC....  
AMC is started.  
[root@AeroSpike-1 ~]# chkconfig amc on  

これで、初期設定は一通り終わった状態になります。

AMCにアクセス

AMCとはAerospike Management Consoleの略で、ウェブベースでAerospikeのクラスタの管理ができるツールです。 READMEに記載がある通り、AMCへのアクセスはブラウザよりhttp://<グローバルIPアドレス>:8081/で接続ができます。 ※もし繋がらない場合は、8081番のポートフォワードとファイアウォールの設定がされているか再度確認してみてください。

f:id:ykanasugi:20160713124935p:plain

接続ができたら、ノードを指定する入力欄がでますので、ここで127.0.0.1もしくは先ほど作成したサーバーのプライベートIPアドレスを入力してください。入力が完了したら、「Connect」をクリックします。

f:id:ykanasugi:20160713125537p:plain

これで、今のAerospike Clusterの状態が見れるようになりました!

Aerospikeを使ってみよう

Aerospikeの大きな特徴の一つとして、"開発者に優しい"が挙げられます。Aerospikeは下記クライアントライブラリを提供しているので、様々な環境から簡単に使うことができます。

Java Client
C# Client
C Client
Go Client
libevent Client
Node.js Client
Perl Client
PHP Client
Python Client
Ruby Client
Erlang Client

詳しくは、公式ページを参考してみてください。好きな言語を選択し、GET STARTEDから試してみてください。

http://www.aerospike.com/docs/client

コマンドラインを実行してみよう

IDCFクラウドが提供するAerospike Server Community Editionでは、コマンドラインのクライアントが含まれています。ここではascliコマンドを使って、Aerospikeでデータのputとgetを試してみましょう。

[root@AeroSpike-1 ~]# ascli put test demo 1 '{ "name": "Morio", "age": 1 }'  
[root@AeroSpike-1 ~]# ascli get test demo 1  
{"name": "Morio", "age": 1}  

これで、先ほどputしたデータがgetできていますね。では、AMCをもう一度みてみましょう。

f:id:ykanasugi:20160713161909p:plain

まず、Cluster Throughputのセクションでreadとwriteが発生しているのがリアルタイムで確認できます。それぞれがgetとputを実行した時のThroughputになります。 そして、下のNodesセクションの「RAM」の部分でも、使用量が100Bに増えています。先ほどputした{ “name”: “Morio”, “age”: 1 }がきちんと入っていますね。

ベンチマークをかけてみよう

コマンドライン以外に、Aerospike Server Community Editionでは簡単なベンチマークツールも提供されています。

[root@AeroSpike-1 ~]# cd /root/aerospike/package/aerospike-client-c-4.0.4.el6.x86_64/benchmarks  
[root@AeroSpike-1 benchmarks]# make run  
./target/benchmarks -h 127.0.0.1 -p 3000  
hosts:          127.0.0.1  
port:           3000  
....  

これでベンチマークが始まります。では、AMCをもう一度みてみましょう。

f:id:ykanasugi:20160713171639p:plain

これで、デフォルトの値を使ったベンチマークが始まります。また、スレッド数やkeyの数を指定してベンチマークをかけることもできますので、詳しくはこちらのページを参考してください。

まとめ

これで、Aerospike Server Community Editionを一通り試してみました。AMCや豊富なライブラリはとても魅力的ですし、IDCFクラウドのオールフラッシュストレージ上で動かすAerospikeは特に速いので、大規模なNoSQLソリューションを使いたい場合は、ぜひAerospikeを検討してみてください!

Copyright © IDC Frontier Inc.