SeaweedFS ist ein einfaches und hochskalierbares verteiltes Open-Source-Dateisystem zum schnellen Speichern und Bereitstellen von Milliarden von Dateien. Es ist anderen Dateisystemen sehr ähnlich, einschließlich Ceph, GlusterFS und HDFS. Es kann einfach in die Cloud integriert werden und erreicht sowohl eine schnelle Zugriffszeit als auch ohne clientseitige Änderungen. Es verfügt über eine Vielzahl von Funktionen, darunter automatisches Master-Server-Failover, automatischer Ablauf der TTL-Eingabe, parallele Verarbeitung, Handhabung großer und kleiner Dateien, Zugriff auf beliebige Dateien mit geringer Latenz und vieles mehr.
In diesem Tutorial zeigen wir Ihnen, wie Sie den SeaweedFS-Cluster auf einem Ubuntu 20.04-Server einrichten.
Voraussetzungen
- Ein Server, auf dem Ubuntu 20.04-Server ausgeführt wird.
- Auf dem Server ist ein Root-Passwort konfiguriert.
Erste Schritte
Bevor Sie beginnen, wird empfohlen, Ihre Systempakete auf die neueste Version zu aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:
apt-get update -y
Sobald alle Pakete aktualisiert sind, müssen Sie einige andere erforderliche Abhängigkeiten auf Ihrem Server installieren. Sie können alle installieren, indem Sie den folgenden Befehl ausführen:
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
Nachdem Sie alle Abhängigkeiten installiert haben, müssen Sie auch Golang in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:
apt-get install golang -y
Sobald die Installation abgeschlossen ist, können Sie mit dem nächsten Schritt fortfahren.
Installieren Sie SeaweedFS
Standardmäßig ist das SeaweedFS nicht im Standard-Repository von Ubuntu 20.04 verfügbar. Sie müssen es also von der Quelle herunterladen und kompilieren.
Laden Sie zunächst die neueste Version von SeaweedFS aus dem Git-Repository mit dem folgenden Befehl herunter:
git-Klon https://github.com/chrislusf/seaweedfs.git
Wechseln Sie nach Abschluss des Downloads in das Verzeichnis SeaweedFS und installieren Sie es mit dem folgenden Befehl:
cd ~/seaweedfs
make install
Der obige Befehl installiert die SeaweedFS-Binärdatei im Verzeichnis ~/go/bin/. Kopieren Sie nun die installierte Binärdatei mit dem folgenden Befehl in das Verzeichnis /usr/loca/bin:
cp ~/go/bin/weed /usr/local/bin/
Überprüfen Sie als Nächstes die installierte Version von SeaweedFS mit dem folgenden Befehl:
Unkrautversion
Sie sollten die folgende Ausgabe erhalten:
Version 30GB 2.14 4211601e Linux amd64
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Erstellen Sie eine Systemd-Dienstdatei für Master
Zuerst müssen Sie eine systemd-Dienstdatei erstellen, um den SeaweedFS-Dienst zu verwalten. Sie können es erstellen, indem Sie den folgenden Befehl ausführen:
nano /etc/systemd/system/seaweedmaster.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=SeaweedFS MasterAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed masterWorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-master[Installieren] WantedBy=multi-user.target
Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Starten Sie als Nächstes den SeaweedFS-Dienst und aktivieren Sie ihn mit dem folgenden Befehl, damit er beim Systemneustart startet:
systemctl start seaweedmaster
systemctl enable seaweedmaster
Sie können den Status des SeaweedFS-Masters mit dem folgenden Befehl überprüfen:
systemctl status seaweedmaster
Sie sollten die folgende Ausgabe erhalten:
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Volume-Server erstellen und starten
An diesem Punkt wird der Master-Server gestartet und wartet auf die Volumes. Erstellen Sie zunächst zwei Volume-Verzeichnisse mit dem folgenden Befehl:
mkdir /mnt/{vol1,vol2}
Erstellen Sie als Nächstes eine systemd-Dienstdatei, um Volume1 mit dem folgenden Befehl zu verwalten:
nano /etc/systemd/system/seaweedvolume1.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=SeaweedFS VolumeAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed volume -dir="/mnt/vol1" -max=10 -mserver="69.87.216.36:9333" -port=8081WorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-volume[Install]WantedBy=multi-user.target
Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Starten Sie als Nächstes den Volume1-Dienst und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:
systemctl start seaweedvolume1.service
systemctl enable seaweedvolume1.service
Sie können den Status des Volume1-Dienstes mit dem folgenden Befehl überprüfen:
systemctl status seaweedvolume1
Sie sollten die folgende Ausgabe erhalten:
Erstellen Sie als Nächstes mit dem folgenden Befehl eine systemd-Dienstdatei für Volume2:
nano /etc/systemd/system/seaweedvolume2.service
Fügen Sie die folgenden Zeilen hinzu:
[Unit]Description=SeaweedFS VolumeAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed volume -dir="/mnt/vol2" -max=5 -mserver="69.87.216.36:9333" -port=8080WorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedfs-volume2[Install]WantedBy=multi-user.target
Speichern und schließen Sie die Datei und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:
systemctl daemon-reload
Starten Sie als Nächstes den Volume2-Dienst und aktivieren Sie ihn so, dass er beim Systemneustart gestartet wird:
systemctl start seaweedvolume2.service
systemctl enable seaweedvolume2.service
Sie können den Status des Volume2-Dienstes mit dem folgenden Befehl überprüfen:
systemctl status seaweedvolume2
Sie sollten die folgende Ausgabe erhalten:
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Schreiben Sie eine Beispieldatei auf das Volume
Zuerst müssen Sie eine HTTP-POST-, PUT- oder GET-Anforderung senden, um eine Datei-ID und eine Volume-Server-URL zu erhalten. Sie können dies mit dem folgenden Befehl tun:
curl http://localhost:9333/dir/assign
Sie sollten die Datei-ID und die Volume-Server-URL in der folgenden Ausgabe sehen:
{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}
Fügen Sie als Nächstes eine Beispieldatei mit dem Namen file1.png zum Volume hinzu, indem Sie die Datei-ID und die Volume-URL wie unten gezeigt verwenden:
curl -F [email protected]/root/file1.png http://69.87.216.36:8080/7,016bad1bc0
Sie sollten die folgende Ausgabe erhalten:
{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}
Sobald Sie eine Datei auf das Volume hochgeladen haben, können Sie sie mit dem folgenden Befehl lesen:
curl http://69.87.216.36:9333/dir/lookup?volumeId=7
Sie sollten die folgende Ausgabe erhalten:
{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}
Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Zugriff auf SeaweedFS
Sie können jetzt über die URL http://your-server-ip:8080/7,016bad1bc0 auf SeaweedFS zugreifen, um die Datei anzuzeigen, die Sie im SeaweedFS-Objektspeicher gespeichert haben:
Sie können Ihre Datei, die Sie zuvor hochgeladen haben, im obigen Bildschirm sehen.
Schlussfolgerung
Herzliche Glückwünsche! Sie haben den SeaweedFS-Cluster erfolgreich auf dem Ubuntu 20.04-Server installiert und konfiguriert. Weitere Informationen finden Sie auf der SeaweedFS-Dokumentationsseite. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.