MinIO on OpenBSD 7.2: インストール

nabbisen - Jan 13 '23 - - Dev Community

はじめに

MinIO は、オブジェクト・ストレージのソフトウェア・スイートです。AWSS3 と互換性があります。
Go 言語 で実装されており、高いパフォーマンスを実現しています。
さらにオープンソースであり、プライベート・クラウド等においてオブジェクト・ストレージ・サービスとして利用することが可能です。

この記事では MinIO を OpenBSD にインストールしてサービスとして公開する流れを示します。
難しい手順ではありません。というのも MinIO は Ports パッケージとして提供されているからです :)

環境

  • OS: OpenBSD 7.2
  • オブジェクト・ストレージ: MinIO 0.20220826

チュートリアル

パッケージマネージャでインストール

こちらを実行するだけです:

$ doas pkg_add minio
Enter fullscreen mode Exit fullscreen mode

出力は以下の通りでした:

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
Enter fullscreen mode Exit fullscreen mode

デーモン準備 OK

/etc/rc.d/minio が作成されています。このデーモンの制御スクリプトの冒頭は以下の内容です:

#!/bin/ksh

daemon="/usr/local/bin/minio server"
daemon_flags="/var/minio/export"
daemon_user="_minio"
(...)
Enter fullscreen mode Exit fullscreen mode

daemon_flags に注目ください。
/var/minio/export は、MinIO インストール時に作成されています。
この行が意味するのは、MinIO のデータはこちらに格納されるということです。

さて、MinIO のディレクトリを見てみましょう:

$ doas ls -aR /var/minio
Enter fullscreen mode Exit fullscreen mode

出力は以下の通りでした:

doas ls -aR /var/minio
/var/minio:
.      ..     export

/var/minio/export:
.  ..
Enter fullscreen mode Exit fullscreen mode

稼働前は上記のような状態です。

注意: デーモンはデフォルトでは 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:
Enter fullscreen mode Exit fullscreen mode

その後にデータベースをアップデートします:

$ doas cap_mkdb /etc/login.conf
Enter fullscreen mode Exit fullscreen mode

これによって /etc/login.conf.db が更新されます。この更新を行うと、特に /etc/login.conf が非常に大きい場合において、パフォーマンス改善効果が期待できます。

デーモンの有効化

デーモンを有効にしましょう:

$ doas rcctl enable minio
minio(ok)
Enter fullscreen mode Exit fullscreen mode

そして実行しましょう:

$ doas rcctl start minio
minio(ok)
Enter fullscreen mode Exit fullscreen mode

なお、別の方法もあります。-f オプションを使えば、デーモンは無効なままの状態でサーバーを実行することが可能です:

$ doas rcctl -f start minio
minio(ok)
Enter fullscreen mode Exit fullscreen mode

MinIO は動き始めたか ?

MinIO のディレクトリをふたたび見てみましょう:

$ doas ls -a /var/minio
Enter fullscreen mode Exit fullscreen mode

出力は以下の通りでした:

.      ..     .minio export
Enter fullscreen mode Exit fullscreen mode

.minio が作成されています !!
さらに ls -aR /var/minio で見れば、たくさんのファイルができていることがわかるでしょう ;)

おわりに

デーモンのネットワーク状況はどのような感じでしょうか ? こちらの実行で確認できます:

$ curl 127.0.0.1:9000
Enter fullscreen mode Exit fullscreen mode

出力は以下の通りでした:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><Resource>/</Resource><RequestId>(...)</RequestId><HostId>(...)</HostId></Error>
Enter fullscreen mode Exit fullscreen mode

実際のところ、"Bad Request" ではありました。こちらで裏を取れます:

$ curl -I 127.0.0.1:9000
Enter fullscreen mode Exit fullscreen mode

以下の通り返って来ました:

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
Enter fullscreen mode Exit fullscreen mode

これで OK です。MinIO サーバーはインストールされたばかりの状態なのですから。
現時点として、おめでとうございます !!!
次のステップで設定を行うことが必要ではあります。
ここで重要なことは、レスポンスを得られたということです !!!

外部リクエストに対しても動作することを見てみましょう:

$ curl <minio-ip>:9000
Enter fullscreen mode Exit fullscreen mode

レスポンスは得られましたか ? :)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .