GNU/Linux >> Linux の 問題 >  >> Linux

ストレージアーキテクチャを使用するためのMinIOサーバーのセットアップ

このチュートリアルでは、ストレージアーキテクチャを使用するためにMinIOサーバーをセットアップする方法を説明します。 MinIOが何であるかをまだ知らない人として、それは高性能の分散オブジェクトストレージシステムです。これはソフトウェア定義であり、業界標準のハードウェアで実行され、100%オープンソースです。妥協することなく必要なすべての機能を実現するために、オブジェクトを単層アーキテクチャとして提供するように意図的に構築されています。その結果、スケーラブルで軽量なクラウドネイティブオブジェクトサーバーと見なされます。

クラウドエンジニアリングの世界がますます成熟するにつれて、そもそもなぜMinIOが必要なのかが頭に浮かびます。

クラウドでソリューションを提供する場合、AWS S3、Azure Blob Storage、AlibabaOSSなどのソリューションストレージを使用することになりかねないことを考慮に入れてください。 Minioは、提供されるクラウドストレージサービスと同じストレージアーキテクチャの代替として機能するため、ソリューションがオンプレミスのままである場合も、同じことがコンセプトに当てはまります。



1。どのように機能しますか

単純な概念では、Minioはクライアント部分とサーバー部分の2つの部分で提供されます。この概念には、web-uiまたはfile-browserを介したダッシュボードも含まれます。各クライアント側とサーバー側は比較的簡単にセットアップでき、CLI(コマンドラインインターフェイス)に精通している場合は、簡単に理解できます。

ただし、本番レベルに設計する場合は、すべてを分散する必要があります。つまり、提供されるソリューションは、大規模でのパフォーマンス、自己拡張型の成長、および高可用性の準備が整っていることを保証する必要があります。これを考慮に入れると、minioには分散イレイジャーコードと呼ばれる独自の概念があります。 。

この概念は、複数のドライブ間でデータをシャードし、一部のドライブが使用できない場合でもデータをフェッチするための信頼できるアプローチです。この概念を使用することにより、ドライブの半分を失う可能性があり、それでもデータが保証されます

このチュートリアルでは、MinIOサーバーを分散イレイジャーコードとしてインストールおよび構成する方法を説明します。その後、クライアント側でMinIOサービスをエンドユーザーとして利用する方法について簡単に説明します。

2。インストールフェーズ

インストールフェーズでは、分散イレイジャーコードの構成を準備するために、2台のサーバーをminioクラスターとして構成します。

次に、minioで使用するブロックデバイスとしてパーティション化するために使用する4つのディスクドライブをリストします。私たちのアーキテクチャは複数のサーバーをセットアップすることを決定したため、サーバーに必要な最小ドライブは2ですが、単一のサーバーを使用している場合、ドライブの最小要件は1です。イレイジャーコードの設計に必要な詳細要件を確認できます。ここ 。

手順は次のとおりです。

 [[email protected] ~]# fdisk -l 

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a4fd8

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 104.1 GB, 104144568320 bytes, 203407360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

上記のように、私たちの側には、それぞれ8GBのサイズの4台のドライブがサーバーにマウントされています。

次に、各ドライブからパーティションを作成し、作成する各パーティションにマウントする専用ディレクトリを作成します。手順は次のとおりです。

 
[[email protected] ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4217c4d9.

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-16777215, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
Using default value 16777215
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System
/dev/sdb1 2048 16777215 8387584 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): q

[[email protected] ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[[email protected] ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2096896, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[[email protected] ~]#
[[email protected] ~]# mkdir -p /opt/drive1
[[email protected] ~]# mkdir -p /opt/drive2
[[email protected] ~]# mkdir -p /opt/drive3
[[email protected] ~]# mkdir -p /opt/drive4
[[email protected] ~]#
[[email protected] ~]# mount /dev/sdb1 /opt/drive1
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
[[email protected] ~]#

>

完了したら、同じプロセスを繰り返して残りのドライブにパーティションを作成し、作成した各ディレクトリにマウントします。最終結果として、最終的に次のような出力が得られるはずです:-

 [[email protected] ~]# mount /dev/sdb1 /opt/drive1 
[[email protected] ~]# mount /dev/sdc1 /opt/drive2
[[email protected] ~]# mount /dev/sdd1 /opt/drive3
[[email protected] ~]# mount /dev/sde1 /opt/drive4
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
/dev/sdc1 8.0G 33M 8.0G 1% /opt/drive2
/dev/sdd1 8.0G 33M 8.0G 1% /opt/drive3
/dev/sde1 8.0G 33M 8.0G 1% /opt/drive4

了解しました。ドライブの前提条件はサーバー1で行われるため、サーバー2でも上記と同じ構成を繰り返します。

3。構成フェーズ

両方のサーバー構成が完了したので、引き続きminioサービスをインストールします。まず、以下に示すようにminioパッケージをダウンロードします。

 [[email protected] ~]# wget https://dl.min.io/server/minio/release/linux-amd64/minio && chmod +x minio 
--2019-09-29 22:23:57-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43831296 (42M) [application/octet-stream]
Saving to: ‘minio’

3% [=> ] 1,335,296 106KB/s eta 6m 33s

サーバー2で上記と同じことを繰り返します。

すべてが終わったら、minioの設定を始めましょう。 MINIO_ACCESS_KEYを定義します およびMINIO_SECRET_KEY 認証アクセスとして。構成は以下のとおりです:-

 [[email protected] ~]# export MINIO_ACCESS_KEY=shahril && export MINIO_SECRET_KEY=shahril123 
[[email protected] ~]# ./minio server http://10.124.12.{141..142}:9000/opt/drive{1..4}
Waiting for a minimum of 4 disks to come online (elapsed 0s)

Waiting for a minimum of 4 disks to come online (elapsed 2s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for all other servers to be online to format the disks.
Status: 8 Online, 0 Offline.
Endpoint: http://10.124.12.141:9000 http://10.124.12.142:9000
AccessKey: shahril
SecretKey: shahril123

Browser Access:
http://10.124.12.141:9000 http://10.124.12.142:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://10.124.12.141:9000 shahril shahril123

Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide

これで、サーバー1で構成が完了し、サーバー2で同じ手順を繰り返して構成します。

すべてが完了したら、結果のテストに進むことができます

4。テストフェーズ

すべてが終わったら、minioサービスの使いやすさを見てみましょう。上記の構成に示されているように、ブラウザーを介してUIのダッシュボードにアクセスできます。この例では、 http://10.124.12.141:9000にログインしてみましょう。 アクセスキーshahril および秘密鍵shahril123 構成どおり。

結果は以下のように表示されます:

完了すると、バケットダッシュボードにリダイレクトされます。それでは、最初のバケットを作成しましょう。

プラスボタンの付いたアイコンフォルダをクリックし、最初のバケットに myloveという名前を付けます。 。以下に示す例:

完了すると、新しいバケットが作成され、下のスクリーンショットのように左側のパネルに表示されます。

完了すると、新しいバケットが作成され、下のスクリーンショットのように左側のパネルに表示されます。

次に、ローカル側からファイルを追加してバケットに挿入しましょう

以下に示すように、新しいファイルがバケットに正常にアップロードされていることがわかります。

分散の概念が適切に実装されていることを確認します。別のサーバーを介してminioダッシュボードにアクセスして簡単なテストを行いましょう。他のサーバーのURLはhttp://10.124.12.142:9000

予想どおり、挿入したバケットとファイルは、上記のように他のサーバーのURLにも存在します。

それでは、別のテストを行いましょう。今回は、 mcというクライアントコンソールを使用してminioサーバーにアクセスする別のワークステーションを使用します。 。

クライアント側から、ファイルを作成してから既存のバケットにアップロードします。

最終的な結果として、ダッシュボードから、クライアント側からアップロードされた新しいファイルが自動的に存在することがわかります。

まず、クライアントワークステーションを開き、minioクライアントパッケージをダウンロードします。例を以下に示します:

 [[email protected] ~]# wget https://dl.min.io/client/mc/release/linux-amd64/mc 
--2019-09-30 11:47:38-- https://dl.min.io/client/mc/release/linux-amd64/mc
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16592896 (16M) [application/octet-stream]
Saving to: ‘mc’

100%[==============================================================================>] 16,592,896 741KB/s in 1m 59s

2019-09-30 11:49:37 (137 KB/s) - ‘mc’ saved [16592896/16592896]

[[email protected] ~]# chmod +x mc

次に、クライアント側から構成を行い、createaccesskeyとsecretを使用して専用バケットにアクセスします。以下の例:

 [[email protected] ~]# ./mc config host add myminio http://10.124.12.142:9000 shahril shahril123 
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `myminio` successfully.

構成が完了すると、既存のバケット内のコンテンツを確認できるようになります。以下の例:

 [[email protected] ~]# ./mc ls myminio 
[2019-09-30 11:16:25 +08] 0B mylove/

[[email protected] ~]# ./mc ls myminio/mylove/
[2019-09-30 11:16:25 +08] 55KiB myself.jpg

次に、既存のファイルを作成するか、クライアント側からバケットにアップロードします。以下の例:-

 [[email protected] ~]# ./mc cp new_file.txt myminio/mylove 
new_file.txt: 38 B / 38 B ???????????????????????????????????????????????????????????????? 100.00% 1.02 KiB/s 0s
[[email protected] ~]#

[[email protected] ~]# ./mc ls myminio/mylove/
[2019-09-30 11:16:25 +08] 55KiB myself.jpg
[2019-09-30 11:58:16 +08] 38B new_file.txt

完了したら、ダッシュボード側からサーバーURLのいずれかを介して更新すると、予想どおり、新しいファイルが以下のように表示されます。

以下のように右側の共有アイコンをクリックすると、画像の完全なリンクが表示されます。これは、curlまたはAPIを介してアプリケーション側で使用できるバケット内の各オブジェクトの一意のリンクです。

いいぞ!これで、Minioを使用してオンプレミスでセルフホストストレージサービスを正常にセットアップおよび構成できました。詳細については、こちらのドキュメントを確認してください


Linux
  1. クラウドサーバーのRAMを理解する

  2. 初心者向けの Ubuntu サーバー

  3. NTP サーバーのアーキテクチャ

  1. 無制限のEメールとストレージ用にVirtualminを使用してEメールサーバーをセットアップする

  2. ストレージ サーバー - SAS HBA カードを別のモデルに交換する

  3. archlinux で X サーバーをセットアップする際の startx エラー

  1. ループデバイスパーティションが表示されませんか?

  2. MSSQLServerのログ配布を構成する

  3. Linux マシンに接続されているすべてのストレージ デバイスを見つける