序章

クラウドベースのバックアップソリューションから高可用性コンテンツ配信ネットワーク(CDN)まで、オブジェクトストレージは現代のテクノロジーランドスケープの不可欠な部分になっています。 また、フットプリントが小さく、インターフェースがわかりやすく、複数のクラウドストレージサービスとの互換性があるため、Minioオブジェクトストレージサーバーは非常に優れています。

Minioは、写真、ビデオ、仮想マシンイメージ、コンテナ、ログファイルなどの非構造化データをオブジェクトとして保存するオープンソースのオブジェクトストレージサーバーです。 分散モードでは、Minioは多数のサーバーに分散した複数のドライブをプールする単一のオブジェクトストレージサーバーを提供します。

MinioはGoで記述されており、コマンドラインクライアントとブラウザインターフェイスが付属しており、 Advanced Message Queuing Protocol(AMQP) Elasticsearch Redis[のシンプルなキューサービスをサポートしています。 X207X]、 NATS 、およびPostgresターゲット。

このチュートリアルでは、次のことを行います。

  • MinioサーバーをDigitalOceanサーバーにインストールし、systemdサービスとして構成します。

  • Let’sEncryptを使用してSSL/TLS証明書を設定し、サーバーとクライアント間の通信を保護します。

  • HTTPS経由でMinioのブラウザインターフェースにアクセスして、サーバーを使用および管理します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • このUbuntu16.04初期サーバーセットアップチュートリアルに従ってセットアップされた1つのUbuntu16.04サーバー。これには、sudo非rootユーザーとファイアウォールが含まれます。

  • 完全に登録されたドメイン名。 Namecheap で購入するか、Freenomで無料で入手できます。

  • Minioサーバー用に設定された次のDNSレコード。 それらを追加する方法の詳細については、このホスト名チュートリアルに従うことができます。

    • サーバー名を含むAレコード(例: minio-server.example.com)オブジェクトサーバーのIPv4アドレスを指します。

    • サーバーをIPv6経由で到達可能にする場合は、サーバー名がオブジェクトサーバーのIPv6アドレスを指すAAAAレコード。

  • このガイドを使用してサーバーにGoをインストールし、Ubuntu16.04にGoをインストールします。

ステップ1—Minioサーバーのインストールと構成

Minioサーバーは、ソースコードをコンパイルするか、バイナリファイルを介してインストールできます。 このステップでは、バイナリを介してサーバーを最も簡単な方法でインストールし、その後すべてを構成します。

まず、サーバーにログインします。

  1. ssh sammy@your_server_ip

パッケージデータベースを最近更新していない場合は、今すぐ更新してください。

  1. sudo apt-get update

次に、Minioサーバーのバイナリファイルをダウンロードします。

  1. curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio

minioという名前のファイルが作業ディレクトリにダウンロードされます。 実行可能にする:

  1. sudo chmod +x minio

次に、ファイルを/usr/local/binディレクトリに移動します。ここで、Minioのsystemd起動スクリプトがファイルを検出します。

  1. sudo mv minio /usr/local/bin

セキュリティ上の理由から、Minioサーバーをrootとして実行することは望ましくありません。 また、手順2で使用するsystemdスクリプトは、 minio-user というユーザーアカウントとグループを探すので、今すぐ作成しましょう。

  1. sudo useradd -r minio-user -s /sbin/nologin

バイナリの所有権をminio-userに変更します。

  1. sudo chown minio-user:minio-user /usr/local/bin/minio

次に、Minioがファイルを保存するディレクトリを作成する必要があります。 これは、手順5で作成するバケットの保管場所になります。

  1. sudo mkdir /usr/local/share/minio

そのディレクトリの所有権をminio-userに付与します。

  1. sudo chown minio-user:minio-user /usr/local/share/minio

/etcディレクトリは、サーバー構成ファイルの最も一般的な場所であるため、そこにMinio用の場所を作成します。

  1. sudo mkdir /etc/minio

そのディレクトリの所有権をminio-userにも付与します。

  1. sudo chown minio-user:minio-user /etc/minio

nanoまたはお気に入りのテキストエディタを使用して、デフォルト設定を変更するために必要な環境ファイルを作成します。

  1. sudo nano /etc/default/minio

そして、次の変数を追加します。

/ 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サービス記述子ファイルをダウンロードします。

  1. curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

ダウンロードが完了すると、minio.serviceという名前のファイルが作業ディレクトリにあるはずです。

適用する前にminio.serviceの内容を監査するには、テキストエディタで開いて内容を表示します。

  1. nano minio.service

スクリプトの内容に慣れたら、テキストエディタを閉じます。

Systemdでは、ユニットファイルをsystemd構成ディレクトリに保存する必要があるため、minio.serviceをそこに移動します。

  1. sudo mv minio.service /etc/systemd/system

次に、次のコマンドを実行して、すべてのsystemdユニットをリロードします。

  1. sudo systemctl daemon-reload

最後に、Minioが起動時に起動できるようにします。

  1. sudo systemctl enable minio

systemdスクリプトがインストールおよび構成されたので、サーバーを起動しましょう。

ステップ3—Minioサーバーを起動する

このステップでは、サーバーを起動し、ファイアウォールを変更して、ブラウザーインターフェイスを介したアクセスを許可します。

まず、Minioサーバーを起動します。

  1. sudo systemctl start minio

Minioのステータス、バインドされているIPアドレス、メモリ使用量などは、次のコマンドで確認できます。

  1. sudo systemctl status minio

次のような出力が得られるはずです。

Output
minio.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です。

したがって、最初にルールを追加します。

  1. sudo ufw allow 9000

次に、ファイアウォールを再起動します。

  1. sudo systemctl restart ufw

Minioはトラフィックを受け入れる準備ができていますが、サーバーに接続する前に、SSL/TLS証明書をインストールして通信を保護しましょう。

ステップ4— SSL/TLS証明書を暗号化してMinioサーバーへのアクセスを保護する

このステップでは、コンソールベースの証明書生成クライアント Concert を使用して、オープンソースの Let’sEncrypt認証局を使用してSSL/TLS証明書を作成します。 Let’s Encrypt証明書を生成する方法は他にもありますが、Concertは、Minioの開発者によって作成されたものであり、公式のインストール手順の一部でもあります。

まず、次のコマンドでコンサートをダウンロードします。

  1. go get -u github.com/minio/concert

完了すると、concertという名前のファイルがGOPATHbinディレクトリにあるはずです。

次に、証明書を生成します。

注:証明書を生成するには、concertで、ポート443を通過するトラフィックがファイアウォールを通過できるようにする必要があります。

--dirsフラグを使用して次のコマンドを実行し、Concertに使用する出力ディレクトリ、電子メールアドレス、およびドメイン名を通知します。

  1. sudo GOPATH/bin/concert gen --dir minio-certs [email protected] example.com

出力は次のようになります。

Output
2017/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)にコピーします。

  1. sudo cp minio-certs/private.key /etc/minio/certs/
  2. sudo cp minio-certs/public.crt /etc/minio/certs/

ここで、ファイルの所有権をminio-userに変更します。

  1. sudo chown minio-user:minio-user /etc/minio/certs/private.key
  2. sudo chown minio-user:minio-user /etc/minio/certs/public.crt

Minioサーバーを再起動して、証明書を認識し、HTTPSの使用を開始します。

  1. sudo systemctl restart minio

生成されたLet’sEncrypt証明書はわずか90日間有効であり、手動で繰り返し更新するのは非効率的であるため、サーバーモードでConcertを起動して、証明書を自動更新するシステムを設定します。

  1. 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には、サーバーにアクセスするために必要なaccessKeysecretKeyの値が含まれています。 両方のキーをコピーして、将来のために手が届きやすく安全な場所に保管してください。

/etc/minio/config.json
{
	"version": "19",
	"credential": {
		"accessKey": "8ngv6i97QZV959Y87Y007FP",
		"secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
	},
	"region": "us-east-1",
    ...
}

次に、クレデンシャルを入力し、入力フィールドのすぐ下にある矢印の付いた丸いボタンをクリックして、メインインターフェイスにログインします。

そこから、メインインターフェイスの右下にある明るい赤の + ボタンをクリックして、さらに2つの黄色のボタンを表示します。

Minio's main interface

中央の黄色のボタンをクリックし、プロンプトに新しいバケットの名前を入力し、ENTERキーを押して応答を保存します。 これで、新しいバケットをストレージに使用する準備が整いました。

バケットにオブジェクトを追加する場合は、前と同じ明るい赤のボタンをクリックしてから、 top の黄色のボタンをクリックして、ファイルのアップロードプロンプトを開きます。

注:Minioオブジェクトストレージサーバー上のオブジェクトのサイズは最大5TBで、単一のDigitalOceanサーバーが保持できるサイズよりはるかに大きくなりますが、 DigitalOceanのブロックストレージサービスを使用すると、次のことができます。使用可能なストレージの量をスタンドアロンのMinioサーバーに大幅に拡張します。

この時点で、基本的なWebインターフェイス全体を操作しましたが、バケットを作成してオブジェクトをアップロードするだけでなく、新しいログインクレデンシャルを生成したり、オブジェクトの共有可能なリンクに有効期限を設定したり、オブジェクトを完全に削除したりすることもできます。

結論

これで、Let’s Encrypt SSL/TLS証明書を使用してWebインターフェイスから安全に接続できるMinioを使用した独自のオブジェクトストレージサーバーができました。 オプションで、オブジェクトストレージサーバーを使用および管理するための代替方法として、FreeBSD、Linux、Mac、およびWindows用のMinioデスクトップクライアントを検討することをお勧めします。

さらに、Minioインストールのストレージ容量をサーバーのディスクサイズを超えて増やしたい場合は、 DigitalOceanのブロックストレージサービスを使用してサーバーにボリュームを接続し、ストレージ容量を最大80TB拡張できます。同じサイズのドロップレットをスピンアップするコストの何分の1かで。