お金をかけずにサーバーの勉強をしよう

Dragonflyインストール(Redis互換)(前編)

2023年4月1日

メニューへ戻る

Redis互換で 25倍も速いという Dragonflyをインストールしてみます。

以前「Redisインストール」を書いた過程で、Linuxの新しいカーネルに実装されたメモリ管理機能を使って大変高速に動作する Redis互換のさるデータベースが開発されている事を知りました。

その時はまだバージョンが 1未満だったので、1が出るのを待っていたのですが、2023年3月21日にリリースされたようですので、早速味わってみようと思います。

こちらがその DBです。
Dragonfly

日本で言えばオニヤンマですかね。仮面ライダーV3と同じ。


環境は以下で行きます。

上記のサイトの「Get Started」によれば、手っ取り早く Dockerでやることになっていますが、ここは一つサーバー構築のお勉強でとして、あえてバイナリインストールの方を選択します。

インストール手順はこちら。
Install from Binary

ここに環境毎のバイナリファイルがありますので、Ubuntu用として 「Download Latest (AMD64 Debian)」を選択します。

リンクを踏めばダウンロードが始まって [dragonfly_1.0.0_amd64.deb]ファイルが得られました。

SCPで Ubuntu Serverにこの通り持ってきました。

subro@UbuntuServer2204-1:~$ ls -l dragonfly_1.0.0_amd64.deb
-rw-rw-r-- 1 subro subro 2754808  4月  1 20:26 dragonfly_1.0.0_amd64.deb

ではインストールいたします。

subro@UbuntuServer2204-1:~$ sudo apt install -y ./dragonfly_1.0.0_amd64.deb
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
注意、'./dragonfly_1.0.0_amd64.deb' の代わりに 'dragonfly' を選択します
以下のパッケージが新たにインストールされます:
  dragonfly
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 5 個。
2,755 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 7,926 kB のディスク容量が消費されます。
取得:1 /home/subro/dragonfly_1.0.0_amd64.deb dragonfly amd64 1.0.0 [2,755 kB]
以前に未選択のパッケージ dragonfly を選択しています。
(データベースを読み込んでいます ... 現在 101312 個のファイルとディレクトリがインストールされています。)
.../dragonfly_1.0.0_amd64.deb を展開する準備をしています ...
trying to create user dfly
changing owner for /var/log/dragonfly to user dfly
changing owner for /var/lib/dragonfly to user dfly
changing owner for /var/run/dragonfly to user dfly
changing owner for /etc/dragonfly to user dfly
dragonfly (1.0.0) を展開しています...
dragonfly (1.0.0) を設定しています ...
Created symlink /etc/systemd/system/dragonfly.service → /lib/systemd/system/dragonfly.service.
Created symlink /etc/systemd/system/multi-user.target.wants/dragonfly.service → /lib/systemd/system/dragonfly.service.
Scanning processes...
Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
N: ファイル '/home/subro/dragonfly_1.0.0_amd64.deb' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)

インストールできました。

もう動いていますね。
[dfly]ユーザーが勝手に作られています。

subro@UbuntuServer2204-1:~$ ps -ef | grep dragon
dfly        2361       1  2 20:29 ?        00:00:01 /usr/bin/dragonfly --flagfile=/etc/dragonfly/dragonfly.conf
subro       2456    2131  0 20:30 pts/0    00:00:00 grep --color=auto dragon

上記サイトでは、デフォルトで localhostにバインドされた [6379/tcp] が使われると書かれていましたので確認してみます。

subro@UbuntuServer2204-1:~$ ss -antp
State                  Recv-Q                 Send-Q                                 Local Address:Port                                  Peer Address:Port                  Process
LISTEN                 0                      128                                          0.0.0.0:6379                                       0.0.0.0:*
LISTEN                 0                      4096                                   127.0.0.53%lo:53                                         0.0.0.0:*
LISTEN                 0                      128                                          0.0.0.0:22                                         0.0.0.0:*
ESTAB                  0                      0                                      192.168.1.102:22                                    192.168.1.45:33640

subro@UbuntuServer2204-1:~$ ss -atp
State                 Recv-Q                Send-Q                                Local Address:Port                                       Peer Address:Port                 Process
LISTEN                0                     128                                         0.0.0.0:redis                                           0.0.0.0:*
LISTEN                0                     4096                                  127.0.0.53%lo:domain                                          0.0.0.0:*
LISTEN                0                     128                                         0.0.0.0:ssh                                             0.0.0.0:*
ESTAB                 0                     0                                     192.168.1.102:ssh                                        192.168.1.45:33640

localhost(127.0.0.1)ではなく、IP_ALL(0.0.0.0)にバインドされていました。
そして [6379/tcp] は Ubuntu Serverでは Redisのポートとして予め登録されている番号でした。
Redis互換ゆえ、Redisのポート番号をそのまま使ってるんですね。


インストールはとりあえずこれで良さげです。

Dragonflyインストール(Redis互換)(後編)」では、Redisでやったのと同じことをしてみるのと、Pythonでデータを操作しています。


Dragonflyのライセンスについて一つ。

Dragonflyの開発元は、イスラエルの DragonflyDB, Ltd. って会社のようですが、よ〜分かりませんでした。

詳しくライセンスタームを読み込んでいませんけど、BSL(Business Source License)なんですね。
License

このライセンス体系は、大手のクラウド業者のサービスに勝手に使われないようにするようにするためのものだったかと。
ElasticSearch・MogoDB・MariaDBあたりがこれを採用していましたかな。

クラウド業者が OSSを使った SaaSや PaaSを展開して荒稼ぎすることへの対抗ですよね。
Dragonflyは、リリースから 5年後の 2028年3月15日に Apache License, Version 2.0 に移行するような事が書いてありました。

社内システムに使うのはOKという理解でおります。