SeaweedFS je open source, jednoduchý a vysoce škálovatelný distribuovaný souborový systém pro rychlé ukládání a obsluhu miliard souborů. Je velmi podobný jiným souborovým systémům včetně Ceph, GlusterFS a HDFS. Lze jej snadno integrovat do cloudu a dosáhnout rychlého přístupu bez jakýchkoli změn na straně klienta. Má bohatou sadu funkcí, včetně automatického převzetí služeb při selhání hlavních serverů, vypršení platnosti automatického vstupu TTL, paralelního zpracování, zpracování velkých a malých souborů, přístupu k libovolnému souboru s nízkou latencí a mnoha dalších.
V tomto tutoriálu vám ukážeme, jak nastavit cluster SeaweedFS na serveru Ubuntu 20.04.
Předpoklady
- Server se serverem Ubuntu 20.04.
- Na serveru je nakonfigurováno heslo uživatele root.
Začínáme
Před spuštěním se doporučuje aktualizovat systémové balíčky na nejnovější verzi. Můžete je aktualizovat pomocí následujícího příkazu:
apt-get update -y
Jakmile budou všechny balíčky aktualizovány, budete muset na váš server nainstalovat některé další požadované závislosti. Všechny je můžete nainstalovat spuštěním následujícího příkazu:
apt-get install build-essential autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev unzip -y
Po instalaci všech závislostí musíte také nainstalovat Golang do vašeho systému. Můžete jej nainstalovat pomocí následujícího příkazu:
apt-get install golang -y
Po dokončení instalace můžete přejít k dalšímu kroku.
Instalovat SeaweedFS
Ve výchozím nastavení není SeaweedFS k dispozici ve výchozím úložišti Ubuntu 20.04. Budete jej tedy muset stáhnout a zkompilovat ze zdroje.
Nejprve si stáhněte nejnovější verzi SeaweedFS z úložiště Git pomocí následujícího příkazu:
klon git https://github.com/chrislusf/seaweedfs.git
Po dokončení stahování změňte adresář na SeaweedFS a nainstalujte jej pomocí následujícího příkazu:
cd ~/seaweedfs
provést instalaci
Výše uvedený příkaz nainstaluje binární soubor SeaweedFS do adresáře ~/go/bin/. Nyní zkopírujte nainstalovaný binární soubor do adresáře /usr/loca/bin pomocí následujícího příkazu:
cp ~/go/bin/weed /usr/local/bin/
Dále ověřte nainstalovanou verzi SeaweedFS pomocí následujícího příkazu:
weed verze
Měli byste získat následující výstup:
verze 30 GB 2.14 4211601e linux amd64
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Vytvoření souboru Systemd Service pro hlavní server
Nejprve budete muset vytvořit soubor služby systemd pro správu služby SeaweedFS. Můžete jej vytvořit spuštěním následujícího příkazu:
nano /etc/systemd/system/seaweedmaster.service
Přidejte následující řádky:
[Unit]Description=SeaweedFS MasterAfter=network.target[Service]Type=simpleUser=rootGroup=rootExecStart=/usr/local/bin/weed masterWorkingDirectory=/usr/local/bin/SyslogIdentifier=seaweedls]-master[Install WantedBy=multi-user.target
Uložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále spusťte službu SeaweedFS a povolte její spuštění při restartu systému pomocí následujícího příkazu:
systemctl spustit seaweedmaster
systemctl povolit seaweedmaster
Stav hlavního serveru SeaweedFS můžete ověřit pomocí následujícího příkazu:
stav systemctl seaweedmaster
Měli byste získat následující výstup:
? seaweedmaster.service - SeaweedFS Master Načteno:načteno (/etc/systemd/system/seaweedmaster.service; zakázáno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od St 2020-12-09 08:30:06 UTC; Před 3s Hlavní PID:25740 (tráva) Úkoly:10 (limit:4691) Paměť:8,0M CGroup:/system.slice/seaweedmaster.service ??25740 /usr/local/bin/weed masterDec 09 08:30:004 ubuntu seaweedfs-master[25740]:I1209 08:30:06 25740 master_server.go:107] Limit velikosti objemu je 30 000 MBDec 09 08:30:06 ubuntu2004 seaweedfs-master[2516295go:04:0 :192] adminScripts:Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]:I1209 08:30:06 25740 master.go:122] Start Seaweed Master 30GB 2.14 42308.03 06 ubuntu2004 seaweedfs-master[25740]:I1209 08:30:06 25740 raft_server.go:70] Spuštění RaftServeru s 69.87.216.36:9333Dec 09 08:30-2051 09.09. 25740 raft_server.go:129] aktuální vedoucí clusteru:Dec 09 08:30:06 ubuntu2004 seaweedfs-master[25740]:I1209 08:30:06 25740 master.go:146] Spusťte Seaweed 2e 12e, 14pc server na 30 GB 09 08:30:08 ubuntu2004 seaweedfs-master[25740]:I1209 08 :30:08 25740 masterclient.go:78] Nebyl nalezen žádný stávající vůdce! Prosinec 09 08:30:08 ubuntu2004 seaweedfs-master[25740]:I1209 08:30:08 25740 raft_server.go:154] Inicializace nového 9Dec clusteru 30:08 ubuntu2004 seaweedfs-master[25740]:I1209 08:30:08 25740 master_server.go:141] událost změny vedoucího:=> 69.87.216.36:9333Dec 09 09 0258:30 sec 08:30:08 25740 master_server.go:143] [ 69.87.216.36:9333 ] 69.87.216.36:9333 se stává>
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Vytvoření a spuštění svazkových serverů
V tomto okamžiku se hlavní server spustí a čeká na svazky. Nejprve vytvořte dva adresáře svazků pomocí následujícího příkazu:
mkdir /mnt/{vol1,vol2}
Dále vytvořte soubor služby systemd pro správu svazku1 pomocí následujícího příkazu:
nano /etc/systemd/system/seaweedvolume1.service
Přidejte následující řádky:
[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
Uložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reload
Dále spusťte službu Volume1 a povolte její spuštění při restartu systému:
systemctl spustit seaweedvolume1.service
systemctl povolit seaweedvolume1.service
Stav služby Volume1 můžete ověřit pomocí následujícího příkazu:
stav systemctl seaweedvolume1
Měli byste dostat následující výstup:
? seaweedvolume1.service - SeaweedFS Volume Loaded:načteno (/etc/systemd/system/seaweedvolume1.service; zakázáno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od St 2020-12-09 08:31:14 UTC; Před 4s Hlavní PID:25870 (plevel) Úkoly:9 (limit:4691) Paměť:7,3M CGroup:/system.slice/seaweedvolume1.service ??25870 /usr/local/bin/weed volume -dir=/mnt/vol1 -max=10 -mserver=69.87.216.36:9333 -port=8081Dec 09 08:31:14 ubuntu2004 systemd[1]:Spuštěno SeaweedFS Volume.Dec 09 08:31:14 ubuntu2004:01volume9 seaweed[08:31:14 seaweed] 31:14 25870 file_util.go:23] Složka /mnt/vol1 Oprávnění:-rwxr-xr-xDec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]:I1209 08:258:01 disk_go:14 Obchod byl zahájen dir:/mnt/vol1 s 0 svazky>Dec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]:I1209 08:31:14 25870 disk_location.go:157] Obchod byl zahájen dne dir:/mnt with 0 ec shardsDec 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]:I1209 08:31:14 25870 volume_grpc_client_to_master.go:52] Spuštění serveru se seedem 204. prosince:1. prosince 2004 25870]:I1209 08:31:14 25870 volume.go:334] Spusťte server pro objem mořských řas 30 GB 2.14 4211601e na 0.0.>De c 09 08:31:14 ubuntu2004 seaweedfs-volume[25870]:I1209 08:31:14 25870 volume_grpc_client_to_master.go:114] Prezenční signál na:69.87.216.36:9Dále vytvořte soubor služby systemd pro Volume2 pomocí následujícího příkazu:
nano /etc/systemd/system/seaweedvolume2.servicePřidejte následující řádky:
[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.targetUložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:
systemctl daemon-reloadDále spusťte službu Volume2 a povolte její spuštění při restartu systému:
systemctl spustit seaweedvolume2.service
systemctl povolit seaweedvolume2.serviceStav služby Volume2 můžete ověřit pomocí následujícího příkazu:
stav systemctl seaweedvolume2Měli byste získat následující výstup:
? seaweedvolume2.service - SeaweedFS Volume Loaded:načteno (/etc/systemd/system/seaweedvolume2.service; zakázáno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od St 2020-12-09 08:32:03 UTC; Před 4s Hlavní PID:25921 (plevel) Úkoly:10 (limit:4691) Paměť:7,7M CGroup:/system.slice/seaweedvolume2.service ??25921 /usr/local/bin/weed volume -dir=/mnt/vol2 -max=5 -mserver=69.87.216.36:9333 -port=8080Dec 09 08:32:03 ubuntu2004 systemd[1]:Spuštěno SeaweedFS Volume.Dec 09 08:32:03 ubuntu2004-voluu209saweedfs] 32:03 25921 file_util.go:23] Složka /mnt/vol2 Oprávnění:-rwxr-xr-xDec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]:I1209 08:2592:03 Obchod začal dne dir:/mnt/vol2 s 0 svazky>prosinec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]:I1209 08:32:03 25921 disk_location.go:157] Store/volume byl spuštěn dne dir:/mnt with 0 ec Shar>Dec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]:I1209 08:32:03 25921 volume.go:334] Spustit server s mořskými řasami 30 GB 2.14 90 3081:303 ubuntu2004 seaweedfs-volume2[25921]:I1209 08:32:03 25921 volume_grpc_client_to_master.go:52] Spuštění serveru svazku se semenem ma>D ec 09 08:32:03 ubuntu2004 seaweedfs-volume2[25921]:I1209 08:32:03 25921 volume_grpc_client_to_master.go:114] Prezenční signál na:69.87:933.36Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Zapsat ukázkový soubor do svazku
Nejprve budete muset odeslat požadavek HTTP POST, PUT nebo GET, abyste získali ID souboru a adresu URL serveru svazku. Můžete to udělat pomocí následujícího příkazu:
curl http://localhost:9333/dir/assignV následujícím výstupu byste měli vidět ID souboru a adresu URL serveru svazku:
{"fid":"7,016bad1bc0","url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080","count":1}Dále přidejte ukázkový soubor s názvem file1.png do svazku pomocí ID souboru a adresy URL svazku, jak je uvedeno níže:
curl -F [e-mail chráněný]/root/file1.png http://69.87.216.36:8080/7,016bad1bc0Měli byste získat následující výstup:
{"name":"file1.png","size":74912,"eTag":"7a6511cbeda98ca00346544ca2968046"}Jakmile nahrajete soubor na svazek, můžete si jej přečíst pomocí následujícího příkazu:
curl http://69.87.216.36:9333/dir/lookup?volumeId=7Měli byste získat následující výstup:
{"volumeId":"7","locations":[{"url":"69.87.216.36:8080","publicUrl":"69.87.216.36:8080"}]}Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Přístup k SeaweedFS
Nyní můžete přistupovat k SeaweedFS pomocí adresy URL http://your-server-ip:8080/7,016bad1bc0 a zobrazit soubor, který jste uložili v úložišti objektů SeaweedFS:
Svůj soubor, který jste nahráli dříve, můžete vidět na výše uvedené obrazovce.
Závěr
Gratulujeme! úspěšně jste nainstalovali a nakonfigurovali cluster SeaweedFS na serveru Ubuntu 20.04. Další informace naleznete na stránce dokumentace SeaweedFS. Pokud máte nějaké dotazy, neváhejte se mě zeptat.
Ubuntu