Ubuntu16.04でMinioを使用してオブジェクトストレージサーバーをセットアップする方法
序章
クラウドベースのバックアップソリューションから高可用性コンテンツ配信ネットワーク(CDN)まで、オブジェクトストレージは現代のテクノロジーランドスケープの不可欠な部分になっています。 また、フットプリントが小さく、インターフェースがわかりやすく、複数のクラウドストレージサービスとの互換性があるため、Minioオブジェクトストレージサーバーは非常に優れています。
Minioは、写真、ビデオ、仮想マシンイメージ、コンテナ、ログファイルなどの非構造化データをオブジェクトとして保存するオープンソースのオブジェクトストレージサーバーです。 分散モードでは、Minioは多数のサーバーに分散した複数のドライブをプールする単一のオブジェクトストレージサーバーを提供します。
MinioはGoで記述されており、コマンドラインクライアントとブラウザインターフェイスが付属しており、 Advanced Message Queuing Protocol(AMQP)、 Elasticsearch 、
このチュートリアルでは、次のことを行います。
-
MinioサーバーをDigitalOceanサーバーにインストールし、systemdサービスとして構成します。
-
Let’sEncryptを使用してSSL/TLS証明書を設定し、サーバーとクライアント間の通信を保護します。
-
HTTPS経由でMinioのブラウザインターフェースにアクセスして、サーバーを使用および管理します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
このUbuntu16.04初期サーバーセットアップチュートリアルに従ってセットアップされた1つのUbuntu16.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。
-
Minioサーバー用に設定された次のDNSレコード。 それらを追加する方法の詳細については、このホスト名チュートリアルに従うことができます。
-
サーバー名を含むAレコード(例:
minio-server.example.com
)オブジェクトサーバーのIPv4アドレスを指します。 -
サーバーをIPv6経由で到達可能にする場合は、サーバー名がオブジェクトサーバーのIPv6アドレスを指すAAAAレコード。
-
-
このガイドを使用してサーバーにGoをインストールし、Ubuntu16.04にGoをインストールします。
ステップ1—Minioサーバーのインストールと構成
Minioサーバーは、ソースコードをコンパイルするか、バイナリファイルを介してインストールできます。 このステップでは、バイナリを介してサーバーを最も簡単な方法でインストールし、その後すべてを構成します。
まず、サーバーにログインします。
- ssh sammy@your_server_ip
パッケージデータベースを最近更新していない場合は、今すぐ更新してください。
- sudo apt-get update
次に、Minioサーバーのバイナリファイルをダウンロードします。
- curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
minio
という名前のファイルが作業ディレクトリにダウンロードされます。 実行可能にする:
- sudo chmod +x minio
次に、ファイルを/usr/local/bin
ディレクトリに移動します。ここで、Minioのsystemd起動スクリプトがファイルを検出します。
- sudo mv minio /usr/local/bin
セキュリティ上の理由から、Minioサーバーをrootとして実行することは望ましくありません。 また、手順2で使用するsystemdスクリプトは、 minio-user というユーザーアカウントとグループを探すので、今すぐ作成しましょう。
- sudo useradd -r minio-user -s /sbin/nologin
バイナリの所有権をminio-userに変更します。
- sudo chown minio-user:minio-user /usr/local/bin/minio
次に、Minioがファイルを保存するディレクトリを作成する必要があります。 これは、手順5で作成するバケットの保管場所になります。
- sudo mkdir /usr/local/share/minio
そのディレクトリの所有権をminio-userに付与します。
- sudo chown minio-user:minio-user /usr/local/share/minio
/etc
ディレクトリは、サーバー構成ファイルの最も一般的な場所であるため、そこにMinio用の場所を作成します。
- sudo mkdir /etc/minio
そのディレクトリの所有権をminio-userにも付与します。
- sudo chown minio-user:minio-user /etc/minio
nanoまたはお気に入りのテキストエディタを使用して、デフォルト設定を変更するために必要な環境ファイルを作成します。
- sudo nano /etc/default/minio
そして、次の変数を追加します。
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
-
MINIO_VOLUMES :前に作成したストレージディレクトリを指します。
-
MINIO_OPTS :サーバーの動作を変更します。 -C フラグは、Minioが使用する構成ディレクトリを指し、 –address フラグは、バインドするIPアドレスとポートをMinioに指示します。 IPアドレスが指定されていない場合、Minioは localhost やDocker関連のIPアドレスなど、サーバーで構成されているすべてのアドレスにバインドするため、このファイルでIPアドレスを明示的に指定することをお勧めします。 デフォルトのポートは9000ですが、別のポートを選択することもできます。
最後に、変更が完了したら、環境ファイルを保存して閉じます。
Minioがインストールされたので、次に、システムサービスとして実行するようにサーバーを構成します。
ステップ2—MinioSystemdスタートアップスクリプトをインストールする
このステップでは、Systemdサービスとして管理されるようにMinioサーバーを構成します。 まず、次のコマンドを使用してMinioサービス記述子ファイルをダウンロードします。
- curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
ダウンロードが完了すると、minio.service
という名前のファイルが作業ディレクトリにあるはずです。
適用する前にminio.service
の内容を監査するには、テキストエディタで開いて内容を表示します。
- nano minio.service
スクリプトの内容に慣れたら、テキストエディタを閉じます。
Systemdでは、ユニットファイルをsystemd構成ディレクトリに保存する必要があるため、minio.service
をそこに移動します。
- sudo mv minio.service /etc/systemd/system
次に、次のコマンドを実行して、すべてのsystemdユニットをリロードします。
- sudo systemctl daemon-reload
最後に、Minioが起動時に起動できるようにします。
- sudo systemctl enable minio
systemdスクリプトがインストールおよび構成されたので、サーバーを起動しましょう。
ステップ3—Minioサーバーを起動する
このステップでは、サーバーを起動し、ファイアウォールを変更して、ブラウザーインターフェイスを介したアクセスを許可します。
まず、Minioサーバーを起動します。
- sudo systemctl start minio
Minioのステータス、バインドされているIPアドレス、メモリ使用量などは、次のコマンドで確認できます。
- sudo systemctl status minio
次のような出力が得られるはずです。
Outputminio.service - Minio
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago
Docs: https://docs.minio.io
Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit
Main PID: 25073 (minio)
Tasks: 6
Memory: 20.7M
CPU: 544ms
CGroup: /system.slice/minio.service
└─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/
Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access:
Apr 07 00:26:11 ashtonandgray minio[25073]: http://174.138.67.91:9000
次に、ファイアウォールを介して、構成されたポートのMinioサーバーへのアクセスを有効にする必要があります。 このチュートリアルでは、それがポート9000
です。
したがって、最初にルールを追加します。
- sudo ufw allow 9000
次に、ファイアウォールを再起動します。
- sudo systemctl restart ufw
Minioはトラフィックを受け入れる準備ができていますが、サーバーに接続する前に、SSL/TLS証明書をインストールして通信を保護しましょう。
ステップ4— SSL/TLS証明書を暗号化してMinioサーバーへのアクセスを保護する
このステップでは、コンソールベースの証明書生成クライアント Concert を使用して、オープンソースの Let’sEncrypt認証局を使用してSSL/TLS証明書を作成します。 Let’s Encrypt証明書を生成する方法は他にもありますが、Concertは、Minioの開発者によって作成されたものであり、公式のインストール手順の一部でもあります。
まず、次のコマンドでコンサートをダウンロードします。
- go get -u github.com/minio/concert
完了すると、concert
という名前のファイルがGOPATHのbin
ディレクトリにあるはずです。
次に、証明書を生成します。
注:証明書を生成するには、concert
で、ポート443を通過するトラフィックがファイアウォールを通過できるようにする必要があります。
--dirs
フラグを使用して次のコマンドを実行し、Concertに使用する出力ディレクトリ、電子メールアドレス、およびドメイン名を通知します。
- sudo GOPATH/bin/concert gen --dir minio-certs [email protected] example.com
出力は次のようになります。
Output2017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.
また、Concertはprivate.key
ファイルとpublic.crt
ファイルを生成します。これらのファイルは、指定したディレクトリでls
を実行することで確認できます。
次に、これら2つのファイルをMinioのサーバー構成フォルダーの下のcerts
ディレクトリー(このチュートリアルでは/etc/minio
)にコピーします。
- sudo cp minio-certs/private.key /etc/minio/certs/
- sudo cp minio-certs/public.crt /etc/minio/certs/
ここで、ファイルの所有権をminio-userに変更します。
- sudo chown minio-user:minio-user /etc/minio/certs/private.key
- sudo chown minio-user:minio-user /etc/minio/certs/public.crt
Minioサーバーを再起動して、証明書を認識し、HTTPSの使用を開始します。
- sudo systemctl restart minio
生成されたLet’sEncrypt証明書はわずか90日間有効であり、手動で繰り返し更新するのは非効率的であるため、サーバーモードでConcertを起動して、証明書を自動更新するシステムを設定します。
- sudo concert server --dir minio-certs sammy@example.com example.com
これにより、Minioの接続は安全になり、SSL/TLS証明書が自動的に更新されます。 次のステップでは、ブラウザを介してMinioに接続し、サーバーを使用および管理します。
ステップ5—HTTPSを使用してMinioのWebインターフェイスに安全に接続する
このステップでは、HTTPSを介してMinio Webインターフェースに安全に接続し、バケットを作成してオブジェクトをアップロードします。
ブラウザでhttps://example.com:9000
を指定して、Webインターフェイスにアクセスします。
次に、ログイン資格情報を見つける必要があります。 Minioは、手順3でサーバーを起動したときに、構成ファイルを/etc/minio
ディレクトリに書き込みました。 その構成ファイルconfig.json
には、サーバーにアクセスするために必要なaccessKeyとsecretKeyの値が含まれています。 両方のキーをコピーして、将来のために手が届きやすく安全な場所に保管してください。
{
"version": "19",
"credential": {
"accessKey": "8ngv6i97QZV959Y87Y007FP",
"secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
},
"region": "us-east-1",
...
}
次に、クレデンシャルを入力し、入力フィールドのすぐ下にある矢印の付いた丸いボタンをクリックして、メインインターフェイスにログインします。
そこから、メインインターフェイスの右下にある明るい赤の + ボタンをクリックして、さらに2つの黄色のボタンを表示します。
中央の黄色のボタンをクリックし、プロンプトに新しいバケットの名前を入力し、ENTER
キーを押して応答を保存します。 これで、新しいバケットをストレージに使用する準備が整いました。
バケットにオブジェクトを追加する場合は、前と同じ明るい赤のボタンをクリックしてから、 top の黄色のボタンをクリックして、ファイルのアップロードプロンプトを開きます。
注:Minioオブジェクトストレージサーバー上のオブジェクトのサイズは最大5TBで、単一のDigitalOceanサーバーが保持できるサイズよりはるかに大きくなりますが、 DigitalOceanのブロックストレージサービスを使用すると、次のことができます。使用可能なストレージの量をスタンドアロンのMinioサーバーに大幅に拡張します。
この時点で、基本的なWebインターフェイス全体を操作しましたが、バケットを作成してオブジェクトをアップロードするだけでなく、新しいログインクレデンシャルを生成したり、オブジェクトの共有可能なリンクに有効期限を設定したり、オブジェクトを完全に削除したりすることもできます。
結論
これで、Let’s Encrypt SSL/TLS証明書を使用してWebインターフェイスから安全に接続できるMinioを使用した独自のオブジェクトストレージサーバーができました。 オプションで、オブジェクトストレージサーバーを使用および管理するための代替方法として、FreeBSD、Linux、Mac、およびWindows用のMinioデスクトップクライアントを検討することをお勧めします。
さらに、Minioインストールのストレージ容量をサーバーのディスクサイズを超えて増やしたい場合は、 DigitalOceanのブロックストレージサービスを使用してサーバーにボリュームを接続し、ストレージ容量を最大80TB拡張できます。同じサイズのドロップレットをスピンアップするコストの何分の1かで。