GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einrichten des MinIO-Servers für die Nutzung der Speicherarchitektur

In diesem Tutorial werde ich erklären, wie man einen MinIO-Server für die Nutzung der Speicherarchitektur einrichtet. Für alle, die noch nicht wissen, was MinIO ist:Es ist ein hochleistungsfähiges, verteiltes Objektspeichersystem. Es ist softwaredefiniert, läuft auf branchenüblicher Hardware und ist zu 100 % Open Source. Es wurde speziell entwickelt, um Objekten als einschichtige Architektur zu dienen, um alle erforderlichen Funktionen ohne Kompromisse zu erreichen. Das Ergebnis wird als Cloud-nativer Objektserver angesehen, der gleichzeitig skalierbar und leichtgewichtig ist.

Da die Welt des Cloud-Engineerings immer reifer geworden ist, kommen mir Dinge in den Sinn, warum wir überhaupt MinIO brauchen?

Berücksichtigen Sie, dass Sie beim Bereitstellen Ihrer Lösung in der Cloud möglicherweise Lösungsspeicher wie AWS S3, Azure Blob Storage und Alibaba OSS verwenden. Gleiches gilt für das Konzept, wenn Ihre Lösung weiterhin vor Ort verbleibt, da Minio als Alternative zur Speicherarchitektur dient, genau wie der bereitgestellte Cloud-Speicherdienst.



1. Wie funktioniert es?

In einem einfachen Konzept besteht Minio aus 2 Teilen - dem Client-Teil und dem Server-Teil. Dieses Konzept beinhaltet auch ein Dashboard über Web-UI oder Dateibrowser. Jede Client- und Serverseite ist relativ einfach einzurichten, und wenn Sie mit CLI (Command Line Interface) vertraut sind, werden Sie es leicht verstehen.

Wenn wir es jedoch auf Produktionsebene entwerfen, muss alles verteilt werden, was bedeutet, dass die bereitgestellte Lösung sicherstellen muss, dass sie in großem Maßstab gut funktioniert, sich selbst erweitert und für hohe Verfügbarkeit bereit ist. Um dies zu berücksichtigen, hat minio ein eigenes Konzept namens Distributed Erasure Code .

Dieses Konzept ist ein zuverlässiger Ansatz, um Daten über mehrere Laufwerke hinweg zu fragmentieren und wieder abzurufen, selbst wenn einige der Laufwerke nicht verfügbar sind. Durch die Verwendung dieses Konzepts können Sie die Hälfte der Laufwerke verlieren und trotzdem Ihre Daten sicher haben

In diesem Tutorial zeige ich Ihnen, wie Sie den MinIO-Server als verteilten Löschcode installieren und konfigurieren. Danach werfen wir einen kurzen Blick auf die Client-Seite, wie man den MinIO-Dienst als Endbenutzer nutzt.

2. Installationsphase

Für die Installationsphase werde ich 2 Server als Minio-Cluster konfigurieren, um die Konfiguration des verteilten Löschcodes vorzubereiten.

Jetzt listen wir 4 Festplatten auf, die wir verwenden, um sie als Blockgerät für die Minio-Nutzung zu partitionieren. Da sich unsere Architektur für die Einrichtung mehrerer Server entschieden hat, müssen mindestens 2 Laufwerke für einen Server vorhanden sein. Wenn Sie jedoch einen einzelnen Server verwenden, beträgt die Mindestanforderung an Laufwerke 1. Detaillierte Anforderungen, die für das Design des Löschcodes erforderlich sind, können angezeigt werden hier .

Unten sind die Schritte:

 [[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

Wie Sie oben sehen können, sind auf unserer Seite 4 Laufwerke in unserem Server mit jeweils 8 GB Größe gemountet.

Als Nächstes erstellen wir eine Partition von jedem Laufwerk und erstellen dann ein dediziertes Verzeichnis, das in jede Partition eingebunden wird, die wir erstellen werden. Unten sind die Schritte.

 
[[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] ~]#

Wenn Sie fertig sind, wiederholen Sie den gleichen Vorgang, um eine Partition auf den verbleibenden Laufwerken zu erstellen, und hängen Sie sie dann in jedes Verzeichnis ein, das wir erstellt haben. Als Endergebnis sollten Sie schließlich die Ausgabe wie unten sehen:-

 [[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

In Ordnung, da die Voraussetzungen für Laufwerke für Server 1 erfüllt sind, wiederholen Sie die gleiche Konfiguration auf Server 2 wie oben.

3. Konfigurationsphase

Nachdem beide Serverkonfigurationen abgeschlossen sind, fahren wir mit der Installation des minio-Dienstes fort. Laden Sie zunächst das Minio-Paket wie unten gezeigt herunter:

 [[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

Wiederholen Sie nun dasselbe wie oben auf Server 2.

Wenn alles fertig ist, beginnen wir mit der Minio-Konfiguration. Wir definieren den MINIO_ACCESS_KEY und MINIO_SECRET_KEY als Authentifizierungszugang. Die Konfiguration ist wie folgt:-

 [[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

Nun ist die Konfiguration auf Server 1 abgeschlossen, wiederholen Sie den gleichen Schritt auf Server 2 für die Konfiguration.

Sobald alles erledigt ist, können wir mit dem Testen des Ergebnisses fortfahren

4. Testphase

Wenn alles fertig ist, sehen wir uns die Benutzerfreundlichkeit von Minio-Diensten an. Wie in der obigen Konfiguration gezeigt, können wir über den Browser auf das Dashboard der Benutzeroberfläche zugreifen. Melden wir uns für unser Beispiel bei http://10.124.12.141:9000 an mit Zugangsschlüssel shahril und geheimer Schlüssel shahril123 wie konfiguriert.

Das Ergebnis wird wie folgt angezeigt:

Sobald dies erledigt ist, werden wir zum Bucket-Dashboard weitergeleitet. Lassen Sie uns jetzt unseren ersten Bucket erstellen.

Klicken Sie auf das Ordnersymbol mit der Plus-Schaltfläche und nennen Sie unseren ersten Bucket mylove . Beispiel wie unten gezeigt:

Sobald Sie fertig sind, werden Sie feststellen, dass ein neuer Bucket erstellt und im linken Bereich wie im folgenden Screenshot angezeigt wird.

Sobald Sie fertig sind, werden Sie feststellen, dass ein neuer Bucket erstellt und im linken Bereich wie im folgenden Screenshot angezeigt wird.

Als Nächstes fügen wir alle Dateien von Ihrer lokalen Seite hinzu, um sie in den Bucket einzufügen

Sie werden feststellen, dass die neue Datei wie unten gezeigt erfolgreich in den Bucket hochgeladen wurde.

Um sicherzustellen, dass das verteilte Konzept gut umgesetzt wird. Machen wir einen einfachen Test, indem wir über einen anderen Server auf das Minio-Dashboard zugreifen. Die andere Server-URL ist http://10.124.12.142:9000

Wie erwartet sind der Bucket und die Dateien, die wir eingefügt haben, auch in anderen Server-URLs vorhanden, wie oben gezeigt.

Machen wir jetzt einen weiteren Test. Dieses Mal verwenden wir eine andere Workstation, die über die Client-Konsole namens mc auf unseren Minio-Server zugreift .

Auf der Clientseite erstellen wir eine Datei und laden sie dann in den vorhandenen Bucket hoch.

Als Endergebnis erwarten wir dann vom Dashboard zu sehen, dass die neue Datei, die von der Client-Seite hochgeladen wurde, automatisch existiert.

Öffnen Sie zunächst die Client-Workstation und laden Sie das Minio-Client-Paket herunter. Unten sehen Sie ein Beispiel:

 [[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

Nehmen Sie dann die Konfiguration auf der Clientseite vor, um auf den dedizierten Bucket zuzugreifen, indem Sie Zugriffsschlüssel und Geheimnis erstellen. Beispiel wie unten:

 [[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.

Nach der Konfiguration sollten Sie den Inhalt im vorhandenen Bucket sehen können. Beispiel wie unten:

 [[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

Erstellen Sie jetzt eine vorhandene Datei von der Clientseite oder laden Sie sie in den Bucket hoch. Beispiel wie unten:-

 [[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

Sobald Sie fertig sind, sollten Sie wie erwartet beim Aktualisieren von der Dashboard-Seite über eine der Server-URLs sehen, dass die neue Datei dort wie unten angezeigt wird .

Sie sollten den vollständigen Link des Bildes sehen, wenn Sie wie unten auf der rechten Seite auf das Teilen-Symbol klicken. Dies ist der eindeutige Link jedes Objekts innerhalb des Buckets, den Sie auf der Anwendungsseite über Curl oder API verwenden können.

Daumen hoch! Jetzt haben wir mit Minio erfolgreich einen selbst gehosteten Speicherdienst vor Ort eingerichtet und konfiguriert. Weitere Einzelheiten finden Sie in der Dokumentation hier


Linux
  1. Loopdevice-Partitionen werden nicht angezeigt?

  2. Finden Sie alle Speichergeräte, die an eine Linux-Maschine angeschlossen sind

  3. NTP-Serverarchitektur

  4. Speicherserver – Austausch der SAS-HBA-Karte gegen ein anderes Modell

  5. Linux-Befehl zum Warten auf das Hochfahren eines SSH-Servers

Installieren Sie Ubuntu Server 16.04 zum Einrichten Ihres eigenen Medienservers

Einrichten einer LVM-Partition auf einem Linux-Server

SiteApps für Joomla einrichten

Einrichten eines Remote-Hostwinds-Servers für cPanel/WHM-Sicherungen

Graylog-Überwachungsserver unter Ubuntu Linux für Überwachungsserver/-dienste

Anleitung zum Einrichten eines SFTP-Servers unter Linux