はじめに
MinIO は、オブジェクト・ストレージのソフトウェア・スイートです。AWS の S3 と互換性があります。 Go 言語 で実装されており、高いパフォーマンスを実現しています。 さらにオープンソースであり、プライベート・クラウド等においてオブジェクト・ストレージ・サービスとして利用することが可能です。
この記事では MinIO を OpenBSD にインストールしてサービスとして公開する流れを示します。 難しい手順ではありません。というのも MinIO は Ports パッケージとして提供されているからです :)
環境
- OS: OpenBSD 7.2
- オブジェクト・ストレージ: MinIO 0.20220826
チュートリアル
パッケージマネージャでインストール
こちらを実行するだけです:
$ doas pkg_add minio
出力は以下の通りでした:
quirks-6.42 signed on 2023-01-08T01:39:04Z
useradd: Warning: home directory `/var/minio' doesn't exist, and -m was not specified
minio-0.20220826: ok
The following new rcscripts were installed: /etc/rc.d/minio
See rcctl(8) for details.
New and changed readme(s):
/usr/local/share/doc/pkg-readmes/minio
デーモン準備 OK
/etc/rc.d/minio
が作成されています。このデーモンの制御スクリプトの冒頭は以下の内容です:
#!/bin/ksh
daemon="/usr/local/bin/minio server"
daemon_flags="/var/minio/export"
daemon_user="_minio"
(...)
daemon_flags
に注目ください。
/var/minio/export
は、MinIO インストール時に作成されています。
この行が意味するのは、MinIO のデータはこちらに格納されるということです。
さて、MinIO のディレクトリを見てみましょう:
$ doas ls -aR /var/minio
出力は以下の通りでした:
doas ls -aR /var/minio
/var/minio:
. .. export
/var/minio/export:
. ..
稼働前は上記のような状態です。
注意: デーモンはデフォルトでは egress をリッスンする
/usr/local/share/doc/pkg-readmes/minio
を読んでみましょう。
次のように書かれています:
Its API/web interface is accessible by default on port 9000, listening on all network interfaces.
つまり MinIO のデーモンはデフォルトでは egress
をリッスンします。そのためこの外部インタフェースを介するすべてのパケットに対してオープンになっています。
ファイル制限を拡張する (必要な場合)
readme には次のようにも書かれています:
Bumping file limits
===================Per https://github.com/minio/minio-service it is advised to run minio with more file descriptors than what is allowed by the default daemon login class.
Add this to the login.conf(5) file if you want to bump those limits:
minio:\ :openfiles-cur=4096:\ :openfiles-max=8192:\ :tc=daemon:
Refer to https://docs.minio.io/ for more details on how to run minio.
ここで言及されている制限を拡張するには、/etc/login.conf
を編集して以下の行を追加する必要があります:
+ minio:\
+ :openfiles-cur=4096:\
+ :openfiles-max=8192:\
+ :tc=daemon:
その後にデータベースをアップデートします:
$ doas cap_mkdb /etc/login.conf
これによって /etc/login.conf.db
が更新されます。この更新を行うと、特に /etc/login.conf
が非常に大きい場合において、パフォーマンス改善効果が期待できます。
デーモンの有効化
デーモンを有効にしましょう:
$ doas rcctl enable minio
minio(ok)
そして実行しましょう:
$ doas rcctl start minio
minio(ok)
なお、別の方法もあります。-f
オプションを使えば、デーモンは無効なままの状態でサーバーを実行することが可能です:
$ doas rcctl -f start minio
minio(ok)
MinIO は動き始めたか ?
MinIO のディレクトリをふたたび見てみましょう:
$ doas ls -a /var/minio
出力は以下の通りでした:
. .. .minio export
.minio
が作成されています !!
さらに ls -aR /var/minio
で見れば、たくさんのファイルができていることがわかるでしょう ;)
おわりに
デーモンのネットワーク状況はどのような感じでしょうか ? こちらの実行で確認できます:
$ curl 127.0.0.1:9000
出力は以下の通りでした:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><Resource>/</Resource><RequestId>(...)</RequestId><HostId>(...)</HostId></Error>
実際のところ、“Bad Request” ではありました。こちらで裏を取れます:
$ curl -I 127.0.0.1:9000
以下の通り返って来ました:
HTTP/1.1 400 Bad Request
Accept-Ranges: bytes
Content-Length: 261
Content-Type: application/xml
Server: MinIO
Vary: Origin
Date: Wed, 11 Jan 2023 14:40:57 GMT
これで OK です。MinIO サーバーはインストールされたばかりの状態なのですから。 現時点として、おめでとうございます !!! 次のステップで設定を行うことが必要ではあります。 ここで重要なことは、レスポンスを得られたということです !!!
外部リクエストに対しても動作することを見てみましょう:
$ curl <minio-ip>:9000
レスポンスは得られましたか ? :)