今回はGoで書かれたオブジェクトストレージサーバーであるMinIOを使用する方法を紹介します。
オブジェクトストレージサービスとMinIO
オブジェクトストレージという名称を聞くようになって久しいですが、あまり身近でないというケースも多いでしょう。一方オブジェクトストレージを提供するサービスは確実に増加していて、最近ではWasabiが国内でもサービス開始しています。非常に安価なのが特徴で、1TBまでであれば月834円というのはなかなかに魅力的です。また「さくらのクラウド」でもオブジェクトストレージの提供を再開するとのことです。
オブジェクトストレージは従来のストレージとは考え方が違うので、手元に検証環境を作りたい、あわよくばそのまま本運用をしたいと考えるかもしれません。そのような場合には、まずMinIOを使用してみるといいでしょう。
MinIOはオープンソースでマルチプラットフォームなオブジェクトストレージサーバーで、Goで書かれているためファイル1つあれば実行できるという手軽さが魅力的です。もちろんAmazon S3互換APIを採用しているため、クライアントも選び放題です。またドキュメントが豊富なものも魅力的で、おおむね自分がやりたいことはできてしまうでしょう。
今回はDockerを使わずに使用する方法を紹介しますが、Dockerと相性がいいサーバーであることは疑いの余地はないでしょう。
なお、オブジェクトストレージに関する基本的な知識があることを前提としていますが、オブジェクトストレージにはフォルダーという概念がないことと[1]、最初にバケットを作成する必要があることを知っておけばだいたいいいでしょう。
簡単に実行する
MinIOをホームフォルダーで実行するだけであれば、非常に簡単です。次のコマンドを実行してください。
これでインストールは完了です。コンソールの出力を見てみましょう。
あくまでも筆者の環境での実行例ですが、管理者のユーザー名(アクセスキー)とパスワード(シークレットキー)が共に“minioadmin”で、変更することが強く推奨されています。また環境変数で指定できることもわかるため、Ctrl+CキーでMinIOサーバーを終了し、次のコマンドを実行してください。
これで管理者のユーザー名とパスワードが変更できました。
またWebブラウザーでアクセスできることもわかります。「http://192.168.12.102:9000」にアクセスしてみると、図1のようにアクセスキーとシークレットキーを入力するログイン画面が表示されます。両方とも入力してください。
ログイン後右下にある「+」アイコンをクリックし、中央の「Create bucket」(図2)をクリックした上でバケット名を入力すると、バケットを作成できます。これで初期設定は完了です。
MinIOクライアント
MinIOには公式で提供しているMinIOクライアントが存在します。これを使用してみましょう。クライアントOSで次のコマンドを実行してください。もちろんローカル(=サーバーと同じところ)でも構いません。
MinIOに簡単アクセスするために、エイリアスを作成します。コンソールの出力を元にすると、次のようになります。
testというエイリアスを作成し、サーバーは「http://192.168.12.102:9000」、ユーザー名は「unique-minioadmin」、パスワードは「secure-minioadmin-password」です。
次のコマンドを実行し、バケットを確認してみましょう。
バケットが作成されている場合は、それが表示されます。表示されない場合はバケットがないということなので、作成してみましょう。
testというエリアスに対してfirstbucketというバケットを作成しています。
systemdでデーモンとして管理する
MinIOを少し使うくらいであればホームフォルダーで動作するくらいでもいいでしょうが、本格的に使用する場合はデーモンとして動作したほうが都合がいいでしょう。というわけでその方法を紹介しますが、おおむねドキュメント化されています。これを可能な限り活かしつつアレンジして設定します。
minioの配置場所
前出の例では~/minio/以下にMinIOの実行ファイル(minio)を配置しました。それを自動起動することもできますが、ここではそうはしません。今回は/opt/minio以下に実行ファイルを配置し、minio-userユーザー(とグループ)で動作することにします。実際のデータは/var/minio/に置きます。次のコマンドを実行してください。
~/minio/に実行ファイルをダウンロードしている場合は次のコマンドを実行してください。
~/minio/に実行ファイルをダウンロードしていない場合は次のコマンドを実行してください。
続けて次のコマンドを実行してください。
これで実行ファイルやフォルダーを作成できました。続いて基本的な設定ファイルを編集します。次のコマンドを実行してください。
ファイルの中身は次のようにしてください。
systemdのサービスユニットファイルを準備します。
MinIOを実行し、さらに自動起動するように設定します。
これで完了です。
MinIOクライアントからMinIOのアップデート
MinIOはMinIOクライアントからアップデートすることができます。MinIOはアップデートが頻繁に行われているため(具体的には数日おき)、極力最新のものを使用したほうがいいのですが、Dockerを使用しないとやや面倒ではあります。しかしクライアントからアップデートできるとなると話は別で、非常に簡単になります。
クライアントからのアップデートはコマンド1つです。次のコマンドを実行してください。
アップデートが完了すると、例として次のようなコンソール出力があります。
バージョン「2021-01-08T21:18:21Z」から「2021-02-19T04-38-02Z」になったことがわかります。
なおMinIOの実行ファイルを/usr/local/bin/に置かず/opt/minio/に置いたのは、このアップデートを成功させるためです。/usr/local/bin/に置くとパーミッションの関係でアップデートがうまく行きませんでした。