Erstellen eines FastDFS-Dateisystems in Docker (Tutorial mit mehreren Images)

Erstellen eines FastDFS-Dateisystems in Docker (Tutorial mit mehreren Images)

Über FastDFS

FastDFS ist ein Open-Source-leichtes, verteiltes Dateisystem, das in der Programmiersprache C entwickelt wurde. Es verwaltet Dateien. Seine Hauptfunktionen umfassen: Dateispeicherung, Dateisynchronisierung, Dateizugriff (Dateiupload/-download) usw. Es eignet sich besonders für dateibasierte Onlinedienste wie Bild-Websites, Video-Websites usw.

Randbemerkung: FastDFS ist ein persönliches Projekt von Yu Qing von Alibaba. Seit der Entwicklung von FastDFS als Open Source im Jahr 2008 genießt es bei einigen Internet-Startups großes Ansehen. Die Open-Source-Adresse von GitHub lautet: https://github.com/happyfish100/fastdfs

Dieser Artikel basiert auf Docker. Der Hauptinhalt ist wie folgt:

1. Suche nach Bildern

Führen Sie den Befehl aus:

Docker-Suche Fastdfs

Dann sucht die Schnittstelle nach vielen Bildern. Welches soll ich auswählen?

Wie üblich sollten wir denjenigen mit der größten Anzahl an Sternen auswählen. Wie bitte? Du machst Dir Sorgen um die Startnummer und hast Angst gehackt zu werden? Ok, gehen wir zum Bild-Repository und schauen uns das an:

Ergänzung: Tatsächlich können wir einige Unterschiede erkennen, wenn wir uns die Beschreibungen dieser Images ansehen. Beispielsweise ist ygqygq2/fastdfs-nginx ein Image, das Fastdfs mit Nginx integriert. Daher stellt sich eine neue Frage: Warum Nginx integrieren? Denn für Fastdfs ist nach der Installation nur der lokale Zugriff möglich ... Ich lade Dateien für den Zugriff hoch. Um also Webzugriff bereitzustellen, muss Nginx integriert werden. Wenn Sie Nginx jedoch selbst verwenden möchten, wählen Sie es definitiv nicht. Das Season/Fastdfs-Image ist relativ rein. Dieser Artikel basiert auf dem Season/Fastdfs-Image. Die Nginx-Konfiguration wird später ebenfalls enthalten sein ...

2. Installieren Sie das Image

Führen Sie den Befehl aus:

Docker-Pull-Saison/FastDFS:1.2

Der Grund, warum wir Version 1.2 gewählt haben, besteht darin, zu verhindern, dass dieser Artikel nach einem weiteren Update für die neueste Version ungeeignet ist. Die Ausführungs-Screenshots sind wie folgt:

3.

Erstellen Sie einen Container und mounten Sie das Verzeichnis

Bevor wir einen Container erstellen, sprechen wir kurz über FastDFS. Das FastDFS-System hat drei Rollen:

  • 跟蹤服務器: Der Tracker-Server ist hauptsächlich für die Planung und den Ausgleich verantwortlich. Er ist für die Verwaltung aller Speicherserver und -gruppen verantwortlich. Nach dem Start stellt jeder Speicher eine Verbindung zu Tracker her, um die Gruppe zu informieren, zu der er gehört, und um regelmäßige Heartbeats aufrechtzuerhalten.
  • 存儲服務器: Speicherserver bieten hauptsächlich Kapazitäts- und Backup-Dienste. Sie sind in Gruppen organisiert und jede Gruppe kann mehrere Speicherserver haben, deren Daten gegenseitig gesichert werden.
  • 客戶端: Der Server, der Daten hoch- und herunterlädt, also der Server, auf dem unser eigenes Projekt bereitgestellt wird.

Apropos, ich möchte meinen Freunden sagen, dass wir als Nächstes möglicherweise drei Container erstellen: einen Tracking-Server-Container, einen Storage-Server-Container und einen Client-Container …

3.1. Erstellen Sie die erforderlichen Verzeichnisse

Wir erstellen zunächst einige erforderliche Verzeichnisse (Datenverzeichnis, Datenspeicherverzeichnis usw.) und führen den Befehl aus:

mkdir -p /usr/local/server/fastdfs/tracker/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/storage/pfad

3.2. Einen Tracker-Container erstellen (Tracking-Server-Container)

Führen Sie den Befehl aus:

docker run -id --name tracker \
-p 22122:22122 \
--restart=immer --net host \
-v /usr/local/server/fastdfs/tracker/data:/fastdfs/tracker/data \
Saison/FastDFS:1.2 Tracker

Lassen Sie mich den obigen Befehl wiederholen:

  • -d: Den Container im Hintergrund ausführen
  • -p: gibt den Netzwerkport an, der im Container verwendet wird und dem von uns verwendeten Host zugeordnet werden soll
  • --name: Gibt den Namen des zu erstellenden Containers an
  • -v: Verzeichnis zwischen Container und Host mounten

3.3. Erstellen Sie einen Speichercontainer (Speicherservercontainer)

Ausführungsbefehl ( nicht der endgültige Ausführungsbefehl, bitte ändern Sie ihn in Ihre eigene IP-Adresse):

docker run -id --name Speicher \
--restart=immer --net host \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-e TRACKER_SERVER="10.211.55.4:22122" \
Saison/FastDFS:1.2 Speicher

3.4.Client-Test

Nachdem die beiden Container erstellt wurden, sie aber zu diesem Zeitpunkt noch nicht wirklich verknüpft sind, rufen wir den Tracker-Container auf und testen ihn über client.conf:

Docker Exec -it Tracker Bash
cd /etc/fdfs/
ls
cat-Client.conf

Die Ausgabe client.conf enthält die Standardkonfiguration. Wir können die track_server -Adresse finden:

Versuchen Sie, eine Verbindung herzustellen:

fdfs_monitor client.conf

Dann erhalten Sie etwa Folgendes:

FEHLER – Datei: ../common/connection_pool.c, Zeile: 84, Verbindung zu 192.168.209.121:22122 fehlgeschlagen, Fehlernummer: 110, Fehlerinfo: Zeitüberschreitung bei der Verbindung

Das heißt, bevor die Client-Konfiguration geändert wird, stellt der Standard-Tracker eine Verbindung zur Adresse 192.168.209.121 her. Der nächste Schritt besteht daher darin, die Client-Konfigurationsdatei zu konfigurieren.

3.4. Ändern Sie die Konfigurationsdatei client.conf

Nachdem Sie den Tracker-Container über docker exec -it tracker bash können Sie den vim-Befehl „vi“ nicht verwenden. Kopieren Sie daher einfach die Konfigurationsdatei „client.conf“, ändern Sie sie auf dem Hostcomputer und fügen Sie sie dann wieder ein.

Führen Sie den Befehl aus:

docker cp trakcer:/etc/fdfs/client.conf /usr/local/server/fastdfs/

Wir kopieren die Konfigurationsdatei über den Docker-Befehl in das Verzeichnis /usr/local/server/fastdfs/ .

Wir bearbeiten diese Datei und ändern die tracker_url Adresse ( vi client.conf ):

Speichern Sie die Änderungen nach der Modifikation und ersetzen Sie anschließend die modifizierte Datei wieder. Anweisungsbefehl:

docker cp /usr/local/server/fastdfs/client.conf tracker:/etc/fdfs

An diesem Punkt wurde die Konfigurationsdatei geändert. Als Nächstes erstellen wir einen Datei-Upload-Test.

4. Datei-Upload-Test

Führen Sie den Befehl aus, um den Tracker-Container aufzurufen:

Docker Exec -it Tracker Bash

Erstellen Sie einfach eine txt-Datei:

echo "schöneroo" > schöneroo.txt

Laden Sie dann die Datei niceyoo.txt mit dem Befehl fdfs_upload_file auf den Server hoch:

fdfs_upload_datei /etc/fdfs/client.conf niceyoo.txt

Wenn zu diesem Zeitpunkt folgender Fehler gemeldet wird:

Erstellen Sie dann diesen Pfad und überspringen Sie ihn, wenn keiner vorhanden ist:

mkdir -p /home/yuqing/fastdfs

Erstellen Sie das Verzeichnis und versuchen Sie die Übermittlung erneut:

Wir kopieren den Dateinamen: group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt . Dieser Name wird später als Zugriffsdateipfad bei der Konfiguration von nginx verwendet.

Da wir das Host-Verzeichnis zuvor gemountet haben, gehen wir zu cd /usr/local/server/fastdfs um einen Blick darauf zu werfen:

cd /usr/local/server/fastdfs/data/storage/data
ls

Die Ausgabe lautet wie folgt:

5. Nginx konfigurieren

Wie in der vorherigen Ergänzung erwähnt, können die hochgeladenen Dateien standardmäßig nur lokal aufgerufen werden. Dies ist natürlich definitiv nicht akzeptabel, daher müssen wir Nginx so konfigurieren, dass wir den Effekt des Webzugriffs erzielen können.

Erstellen Sie das nginx-Verzeichnis:

mkdir -p /usr/local/server/fastdfs/nginx/

Kopieren Sie die Nginx-Konfigurationsdatei in den Speichercontainer:

Docker CP-Speicher: /etc/nginx/conf/nginx.conf /usr/local/server/fastdfs/nginx/

Ändern Sie die Konfiguration in nginx:

vi /usr/local/server/fastdfs/nginx/nginx.conf

Suchen Sie den lokalen Knoten und ändern Sie ihn wie folgt:

 Standort / {
    root /fastdfs/Speicherpfad/Daten;
    ngx_fastdfs_module;
 }

Die entsprechenden Screenshots sind wie folgt:

Der nächste Schritt besteht darin, den Nginx-Container zu erstellen und ihn auf die gerade erstellte Konfigurationsdatei zu verweisen.

Freunde, die nginx nicht installiert haben, können auch die folgenden Anweisungen ausführen. Standardmäßig hilft es Ihnen, das Image abzurufen und zu installieren.

Hinweis: Bitte ändern Sie die IP-Adresse vor der Ausführung

docker run -id --name fastdfs_nginx \
--restart=immer \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-v /usr/local/server/fastdfs/nginx/nginx.conf:/etc/nginx/conf/nginx.conf \
-p 8888:80 \
-e TRACKER_SERVER=10.211.55.4:22122 \
Saison/FastDFS:1.2 nginx

Schauen wir uns an dieser Stelle die erstellten und gestarteten Container an:

Testen wir die zuvor hochgeladene Datei group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt und führen den folgenden Befehl aus:

curl -i http://127.0.0.1:8888/group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt

Ausführungsergebnis:

An diesem Punkt wurde der gesamte Prozess erfolgreich erstellt. Greifen wir über den Browser darauf zu:

Wie wird es im Projekt verwendet, nachdem der Bau abgeschlossen ist?

SpringBoot integriert FastDFS-Abhängigkeit, um den Dateiupload zu implementieren

Dies ist das Ende dieses Artikels zum Erstellen des FastDFS-Dateisystems in Docker (Tutorial mit mehreren Bildern). Weitere relevante Inhalte zum Erstellen von FastDFS in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detailliertes Beispiel zur Installation eines FastDfs-Dateiservers mit Docker Compose
  • Einige Hinweise zur Installation eines Fastdfs-Images im Docker
  • So installieren Sie FastDFS in Docker
  • So stellen Sie FastDFS in Docker bereit
  • So verwenden Sie Docker Compose zum Erstellen eines FastDFS-Dateiservers

<<:  Zusammenfassung einiger Tipps zum MySQL-Indexwissen

>>:  Ein Beispiel für die Verwendung von CSS-Methoden zur Erzielung von Modularität

Artikel empfehlen

JavaScript implementiert das mobile Puzzlespiel mit neun Rastern

In diesem Artikel wird der spezifische Code für J...

Detailliertes Tutorial zum Herunterladen von MySQL unter Windows 10

MySQL-Versionen werden in Enterprise Edition und ...

So entfernen Sie in Linux ganz einfach installierte Quellpakete

Schritt 1: Stow installieren In diesem Beispiel v...

Tutorial zur Installation von MYSQL8.X auf Centos

MySQL-Installation (4, 5, 6 können weggelassen we...

So stellen Sie MySQL 5.7- und 8.0-Master-Slave-Cluster mit Docker bereit

> MySQL 5.7 Cluster Master und Slave bereitste...

So installieren Sie MySQL 8.0 und melden sich bei MySQL unter MacOS an

Folgen Sie dem offiziellen Tutorial, laden Sie da...

CSS-Animation kombiniert mit SVG zur Erzeugung eines Energieflusseffekts

Der endgültige Effekt ist wie folgt: Die Animatio...

jQuery-Plugin zur Implementierung des Suchverlaufs

Jeden Tag ein jQuery-Plugin – um einen Suchverlau...

Tabellen dynamisch in HTML hinzufügen_PowerNode Java Academy

Ohne weitere Umschweife werde ich den Code direkt...

Docker erstellt Redis5.0 und mountet Daten

Inhaltsverzeichnis 1. Einfaches Einbinden persist...