はじめに
AerospikeはNoSQLデータベースであり、キーバリュー、ドキュメント、グラフを扱える分散データベースです。
以下に様々な情報を掲載しています。
AerospikeのFAQ(基本編)
AerospikeのFAQ(サーバー構成、データ分散)
Aerospikeの紹介
Aerospikeのアーキテクチャ
AerospikeのFAQ(サーバー構成、データ分散) では、「Linuxのオンプレのサーバー」「クラウドのインスタンス」の場合のサーバーの構成や設定について記載しました。
ここでは、実際のインストール、設定、起動について記載します。
目次から知りたい情報を探して御覧ください。
インストール
どこからダウンロードできますか?
以下から、ダウンロードページにアクセスしてください。
-
Aerospikeのホームページにアクセスしてください
- 上部の「Resources」をクリックしてください
- 右の「Download」をクリックしてください
- Community Editionの場合は、このページでインストールする環境を選択し「Download」をクリックし、ダウンロードしてください
- Enterprise Editionの場合は、左の「Enterprise and Standard Edition」を選択してください
- 評価ライセンスを持っていない場合は、情報を記載し「Try now for free」をクリックしてください
- すでに評価ラインセンスを保持している場合や、1ノードで試す場合は、「Download here」をクリックしてください
- インストールする環境を選択し「Download」をクリックし、ダウンロードしてください
- 以下のようなファイルがダウンロードされます(バージョンや環境によってファイル名が違います)
aerospike-server-community_8.1.1.1_tools-12.1.1_ubuntu24.04_x86_64.tgz
aerospike-server-enterprise_8.1.1.1_tools-12.1.1_ubuntu24.04_x86_64.tgz
どうやってインストールしますか?
ここでは上記でダウンロードしたEnterprise Editionを例に説明します。
1. ダウンロードしたファイルを展開します
tar -xvf aerospike-server-enterprise_8.1.1.1_tools-12.1.1_ubuntu24.04_x86_64.tgz
2. 展開したフォルダーに移動します
cd aerospike-server-enterprise_8.1.1.1_tools-12.1.1_ubuntu24.04_x86_64
3. インストールコマンド(asinstall)を実行します
sudo ./asinstall
4. /opt/aerospikeにプログラムの本体、/etc/aerospikeに設定ファイルがインストールされます
設定
設定ファイルは何がありますか?
設定ファイルは/etc/aerospikeに以下のファイルがあります。
- aerospike.conf
- astools.conf
- features.conf
この中で、aerospike.confが環境に合わせて変更する必要がある設定ファイルになります。
features.confはライセンスファイルであり、Enterprise Editionを複数ノードで使用する場合に、購入したライセンスファイルや取得した評価ライセンスに入れ替えてください。
また、同じフォルダにsampleフォルダがあり、その中で設定ファイルのサンプルがあります。
aerospike.confの内容は?
インストール時のデフォルトのファイルは以下になります。
# Aerospike database configuration file for use with systemd.
service {
proto-fd-max 15000
cluster-name cakery
}
logging {
console {
context any info
}
}
network {
service {
address any
port 3000
}
heartbeat {
mode mesh
port 3002 # Heartbeat port for this node.
# List one or more other nodes, one ip-address & port per line:
mesh-seed-address-port 10.10.10.10 3002
# mesh-seed-address-port 10.10.10.11 3002
# mesh-seed-address-port 10.10.10.12 3002
# mesh-seed-address-port 10.10.10.13 3002
# mesh-seed-address-port 10.10.10.14 3002
interval 150
timeout 10
}
fabric {
port 3001
}
admin {
address any
port 3003
}
}
namespace test {
replication-factor 2
storage-engine memory {
data-size 4G
}
}
namespace bar {
replication-factor 2
storage-engine memory {
data-size 4G
# To use file storage backing, comment out the line above and use the
# following lines instead.
# file /opt/aerospike/data/bar.dat
# filesize 4G
}
}
設定のマニュアルはどこ?
設定のリファレンスに記載しています。
必要な設定は?
heartbeatの設定
heartbeatとは、ノード間の生存確認をするためのネットワーク関係の設定です。
デフォルトでは、以下の通りです。
heartbeat {
mode mesh
port 3002 # Heartbeat port for this node.
# List one or more other nodes, one ip-address & port per line:
mesh-seed-address-port 10.10.10.10 3002
# mesh-seed-address-port 10.10.10.11 3002
# mesh-seed-address-port 10.10.10.12 3002
# mesh-seed-address-port 10.10.10.13 3002
# mesh-seed-address-port 10.10.10.14 3002
interval 150
timeout 10
}
mesh-seed-address-portを存在するノード分、記載してください。
ただし、このmeshのIPアドレスの情報はどれかのノードが知っていれば、クラスター全般に伝わるため、すべてのノードにすべてのノード分の記載がなくても問題ありません。
つまり、ノード追加時にわかっている範囲のノード分記載すれば問題ありません。
1ノードで運用する場合は記載不要です。
namespaceの設定
namespaceはデータの保存方法や複製数、TTLなど個別に環境を設定できる単位です。
以下がnamespaceの設定です。詳細は後述しますが、testとbarがnamespaceの名称になりますので、適切な名前を指定してください。
namespace test {
replication-factor 2
storage-engine memory {
data-size 4G
}
}
namespace bar {
replication-factor 2
storage-engine memory {
data-size 4G
<略>
}
データの複製数の設定
データの複製数をいくつにするかは、replication-factorで設定します。この複製数にはマスターノードを含みますので、2に設定すると、マスターノードと1つのレプリカノードに保存されるので、合計2つのノードにデータが存在することになります。
namespace test {
replication-factor 2
<略>
}
namespace bar {
replication-factor 2
<略>
データの保存方法の設定
データの保存方法はnamespaceに設定します。保存方法毎に説明します。
in-memory構成
インデックスおよびデータの両方をメモリに保存する場合は、以下の通り設定します。
namespace ns1 {
replication-factor 2
storage-engine memory {
data-size 4G
}
}
storage-engineをmemoryと設定します。
data-sizeがデータを保存するメモリ領域のサイズになります。(インデックスは含みません)
in-memory構成+データ保存(ファイル)
in-memory構成のデータをファイルに保存することで永続化を行う場合は、以下の通り設定します。
namespace bar {
replication-factor 2
storage-engine memory {
data-size 4G
file /opt/aerospike/data/bar.dat
filesize 4G
}
storage-engineをmemoryと設定します。
fileとfilesizeで保存するファイルの場所とサイズ(data-size以上必要)を指定します。
in-memory構成+データ保存(rawデバイス)
in-memory構成のデータをrawデバイスに保存することで永続化を行う場合は、以下の通り設定します。
namespace bar {
replication-factor 2
storage-engine memory {
data-size 4G
device /dev/sda
}
storage-engineをmemoryと設定します。
deviceで保存するデバイスファイル(data-size以上必要)を指定します。
rawデバイスはデバイスファイルを設定しますが、OSからこのデバイスファイルはmountしないでください。
hybrid構成(rawデバイス)(推奨)
インデックスをメモリ、データをrawデバイスに保存する場合は、以下の通り設定します。
namespace bar {
replication-factor 2
storage-engine device {
device /dev/sdb
device /dev/sdc
device /dev/sdd
}
storage-engineをdeviceと設定します。
deviceで保存するデバイスファイルを指定します。
rawデバイスはデバイスファイルを設定しますが、OSからこのデバイスファイルはmountしないでください。
hybrid構成(ファイル)(非推奨:動作確認などの場合にご利用ください)
インデックスをメモリ、データをファイルに保存する場合は、以下の通り設定します。
namespace bar {
replication-factor 2
storage-engine device {
file /opt/aerospike/data/bar.dat
filesize 4G
}
storage-engineをdeviceと設定します。
fileとfilesizeで保存するファイルの場所とサイズ(data-size以上必要)を指定します。
他によく利用される設定は?
必須以外で、よく利用される設定についていくつか説明します。
データの有効期限の設定
Aerospikeでは作成(更新)後、指定した時間が経過すると自動的にデータを削除する機能があります。これをTTL(Time To Live)といいます。
レコードの作成や更新時に適宜設定することも可能ですが、デフォルト値を設定することもできます。この設定が、default-ttlです。
これは、以下のようにnamespace毎やset毎に設定できます。
namespace test {
...
default-ttl 60D # use 0 to never expire/evict.
...
set test-set {
...
default-ttl 30D
...
}
}
この設定を行う場合は、nsup-periodを0以外に設定する必要があります。
allow-ttl-without-nsupをtrueにすればnsup-periodを0のままでも問題ありませんが、通常はnsup-periodを設定することを推奨します。
最大レコードサイズの設定
デフォルトでは最大レコードサイズは1MBです。
そのため1MBを超えるレコードサイズを利用したい場合は、max-record-sizeを設定する必要があります。
起動、停止
Aerospikeの起動方法は?
前述のインストールを行うと、起動用の/etc/init.d/aerospikeがインストールされますので、これを指定し起動等行えます。
詳細は、こちらを参考にしてください。