Как да

Настройване на клъстер за разпределено разпределение на обекти SeaweedFS на Ubuntu 20.04

Настройване на клъстер за разпределено разпределение на обекти SeaweedFS на Ubuntu 20.04

С нарастването на информацията в тази епоха на свързаност, много приложения изискват повече данни за описване на клиенти, за хранене на AI, за изготвяне на големи проекти за данни и т.н. За да се справим с нарастващия петабайт мащаб на информация; необходими са ефективни, надеждни и стабилни системи, които да позволят бърза обработка, съхранение и извличане на данните. Има вече изградени системи за обработка на такива количества данни в мащаб, включително Ceph, GlusterFS, HDFS, MinIO и SeawedFS. Всички те са блестящи по своята същност и по начина, по който се справят със съхранението на предмети и в това ръководство ще се спрем на SeawedFS. Ще видим неговите характеристики, след което ще се потопим в инсталирането му. Преди всичко останало, нека се запознаем с SeawedFS.

SeaweedFS е разпределено обектно хранилище и файлова система за бързо съхранение и обслужване на милиарди файлове! Магазинът за обекти има O (1) търсене на диск, прозрачна интеграция в облак. Filer поддържа активна-активна репликация на клъстери, Kubernetes, POSIX, S3 API, криптиране, Erasure кодиране за топло съхранение, FUSE монтиране, Hadoop, WebDAV. Източник: SeawedFS GitHub Space

SeaweedFS стартира като Object Store за ефективно обработване на малки файлове. Вместо да управлява всички метаданни на файлове в централен мастер, централният мастер управлява само обеми на файлове и позволява на тези сървъри за обем да управляват файлове и техните метаданни. Това облекчава едновременния натиск от централния мастер и разпространява метаданните на файлове в сървъри за обем, позволявайки по-бърз достъп до файлове (O (1), обикновено само една операция за четене на диск. Източник: SeawedFS GitHub Space

Морските водорасли имат две цели:

Характеристики на SeaweedFS

Морските водорасли имат следните характеристики, които да се показват на света

Инсталиране на SeaweedFS на Ubuntu 20.04

Сега към частта, в която обуваме ботушите, ръкавиците и влизаме във фермата, за да инсталираме SeaweedFS, обработени и добре напоени на нашата Ubuntu 20.04 сървър. Преди да набутаме лопатата в калта, изпълнете следните стъпки, за да инсталирате първо Go, който се изисква от SeeweedFS.

Стъпка 1: Подгответе вашия сървър

Това е много важна стъпка, тъй като ще инсталираме най-новия софтуер и корекции, преди да пристъпим към инсталирането на SeaweedFS и Go. Ние също ще инсталираме инструменти, от които се нуждаем и тук.

sudo apt актуализация sudo apt инсталиране vim curl wget zip git -y sudo apt install компилация-съществено autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev -y

Стъпка 2: Изтеглете и инсталирайте Go

Можете да използвате Golang, наличен в хранилището на APT или изтегляне от източника.

Метод 1: Инсталиране от APT хранилище:

Изпълнете командите по-долу, за да инсталирате Golang на Ubuntu от репозитории на APT.

sudo apt инсталирате golang

Метод 2: Инсталирайте ръчно

Посетете страницата за изтегляне Go, за да изтеглите най-новата версия на Go tarball, достъпна както следва:

cd ~ wget -c https: // golang.org / dl / go1.15.5.linux-amd64.катран.gz -O - | sudo tar -xz -C / usr / local

След като приключим, трябва да добавим „/ usr / local / go / bin”Директория към променливата на средата PATH, така че sever ще намери изпълнимите двоични файлове Go. Направете това, като добавите следния ред или към / и т.н. / профил файл (за системна инсталация) или $ НАЧАЛО /.профил файл (за текущата потребителска инсталация):

echo "PATH за експортиране = $ PATH: / usr / local / go / bin" | sudo tee -a / etc / profile #### За текущото потребителско инсталационно ехо "export PATH = $ PATH: / usr / local / go / bin" | тройник -a $ НАЧАЛО /.профил

В зависимост от редактирания от вас файл, за да може новата променлива на средата PATH да бъде заредена в текущата сесия на обвивката:

$ източник ~ /.profile # Или $ source / etc / profile

Стъпка 3: Плащане в хранилището на SeaweedFS

За да инсталираме SeaweedFS, трябва да получим необходимите файлове в нашия сървър. Всички източници са в GitHub и затова нека клонираме хранилището и пристъпим към инсталиране.

cd ~ git clone https: // github.com / chrislusf / морски водорасли.git

Стъпка 4: Изтеглете, компилирайте и инсталирайте SeaweedFS

След като всички източници са клонирани, влезте в новата директория и инсталирайте проекта SeaweedFS, като изпълните следната команда

$ cd ~ / seaweedfs $ make install ## Напредък на инсталацията $ go get -d ./ weed / go: изтегляне на github.com / chrislusf / raft v1.0.3 go: изтегляне на github.com / golang / protobuf v1.4.2 go: изтегляне на github.com / gorilla / mux v1.7.4 go: изтегляне на google.голанг.org / grpc v1.29.1 движение: изтегляне на github.com / google / uuid v1.1.1 движение: изтегляне на github.com / syndtr / goleveldb v1.0.0 go: изтегляне go.и т.н.io / etcd v0.5.0-алфа.5.0.20200425165423-262c93980547 go: изтегляне на github.com / klauspost / crc32 v1.2.0

След като направите това, ще намерите изпълнимия файл “плевел”Във вашия $ GOPATH / bin директория. За съжаление, когато се инсталира плевел, той създава $ GOPATH под текущата ви домашна директория. Тук ще намерите трева “~ / go / bin / weed„. Така че, за да разрешим този проблем, ще копираме двоичните файлове на SeaweedFS на по-ранното място, където е инсталиран Go Стъпка 2 като този:

sudo cp ~ / go / bin / weed / usr / local / bin /

Сега "плевелКомандата е в променливата на средата PATH и вече можем да продължим да конфигурираме SeaweedFS удобно, както е илюстрирано в следващите стъпки.

$ weed версия версия 30GB 2.12 6d30b21b linux amd64

Стъпка 5: Пример за използване на водорасли FS

За да разберем простите примери, които ще бъдат представени в тази стъпка, ще бъде чудесно, ако първо обгърнем ума си изцяло с работния механизъм на SeaweedFS. Архитектурата е доста проста. Действителните данни се съхраняват в томове на възли за съхранение (които могат да се намират в един и същ сървър или в различни сървъри). Един сървър на том може да има множество томове и може както да поддържа достъп за четене и запис с основно удостоверяване. Източник: Документация за морски водорасли

Всички томове се управляват от главен сървър, който съдържа идентификация на тома към картографиране на сървър на том.

Вместо да управлява парчета, както правят разпределените файлови системи, SeaweedFS управлява обеми от данни в главния сървър. Всеки обем данни е с размер около 32 GB и може да побере много файлове. И всеки възел за съхранение може да има много обеми данни. Така че главният възел трябва само да съхранява метаданните за обемите, което е сравнително малко количество данни и обикновено е стабилно. Източник: Документация за морски водорасли

По подразбиране главният възел работи порт 9333, и томовите възли се изпълняват на порт 8080. За да визуализираме това, ще стартираме един главен възел и два възела на тома порт 8080 и 8081 съответно. В идеалния случай, както беше споменато, те трябва да се стартират от различни машини, но ние ще използваме един сървър като пример. Ако възнамерявате да стартирате томовете на различни сървъри, уверете се, че -mserver IP адресът сочи към главния. Освен това портът на главното устройство трябва да бъде достъпен от сървърите / възлите на тома.

SeaweedFS използва HTTP REST операции, за да чети пиши, и Изтрий. Отговорите са във формат JSON или JSONP.

Стартиране на Master Server

Тъй като е направен отворен, главният възел работи порт 9333 по подразбиране. Можем да стартираме главния сървър, както следва:

Вариант 1: Ръчният начин

$ weed master & I1126 20:22:17 6485 file_util.go: 23] Папка / tmp Разрешение: -rwxrwxrwx I1126 20:22:17 6485 master.go: 168] ток: 172.22.3.196: 9333 връстници: I1126 20:22:17 6485 master_server.go: 107] Ограничението на размера на обема е 30000 MB I1126 20:22:17 6485 master_server.go: 192] adminScripts: I1126 20:22:17 6485 master.go: 122] Стартирайте Водорасли Master 30GB 2.12 a1021570 на 0.0.0.0: 9333 I1126 20:22:17 6485 raft_server.go: 70] Стартиране на RaftServer със 172.22.3.196: 9333 I1126 20:22:17 6485 сървър за плотове.go: 129] текущ лидер на клъстера:

Вариант 2: Стартирайте master с помощта на Systemd

Можете да стартирате главното устройство с помощта на Systemd, като създадете неговия единичен файл, както следва:

sudo tee / etc / systemd / system / seaweedmaster.обслужване<

След актуализиране на файла трябва да презаредите демона и да стартирате мастер, както е показано

sudo systemctl daemon-reload sudo systemctl старт seaweedmaster sudo systemctl активиране на seaweedmaster

След това проверете състоянието му

$ systemctl статус seaweedmaster -l ● seaweedmaster.услуга - SeaweedFS Master Loaded: заредено (/ etc / systemd / system / seaweedmaster.обслужване; хора с увреждания; предварително зададен от доставчика: активиран) Активен: активен (работи) от понеделник 2020-11-30 08:11:37 UTC; Преди 2s Основен PID: 1653 (плевел) Задачи: 10 (ограничение: 2204) Памет: 11.8M CGroup: / система.резен / майстор на водорасли.услуга └─1653 / usr / local / go / bin / weed master

Стартирайте сървъри за обем

След като главното устройство е готово и изчаква томовете, вече можем да имаме увереността да стартира томовете, използвайки командите по-долу. Първо ще създадем примерни директории.

mkdir / tmp / данни1, данни2, данни3, данни4

След това нека създадем първите томове, както е показано по-долу. (Първата е командата и това, което следва, е изходът на черупката)

Вариант 1: Ръчният начин

$ weed volume -dir = "/ tmp / data1" -max = 5 -mserver = "localhost: 9333" -port = 8080 & I1126 20:37:24 6595 disk_location.go: 133] Магазинът е стартиран на директория: / tmp / data1 с 0 тома макс. 5 I1126 20:37:24 6595 disk_location.go: 136] Магазинът е стартиран на dir: / tmp / data1 с 0 ec shards I1126 20:37:24 6595 обем.go: 331] Стартирайте сървър за обем на водорасли 30GB 2.12 a1021570 на 0.0.0.0: 8080 I1126 20:37:24 6595 volume_grpc_client_to_master.go: 52] Старт на сървъра за обем с главни възли на семена: [localhost: 9333] I1126 20:37:24 6595 volume_grpc_client_to_master.go: 114] Heartbeat към: localhost: 9333 I1126 20:37:24 6507 възел.go: 278] topo добавя дете по подразбиране DataDataCenter I1126 20:37:24 6507 възел.go: 278] topo: DefaultDataCenter добавя дете DefaultRack I1126 20:37:24 6507 възел.go: 278] topo: DefaultDataCenter: DefaultRack добавя дете 172.22.3.196: 8080 I1126 20:37:24 6507 master_grpc_server.go: 73] добавен сървър за обем 172.22.3.196: 8080 I1126 20:37:24 6595 volume_grpc_client_to_master.go: 135] Сървърът на тома намери нов главен newLeader: 172.22.3.196: 9333 вместо localhost: 9333 W1126 20:37:24 6507 master_grpc_server.go: 57] SendHeartbeat.172 серия.22.3.196: 8080: rpc грешка: код = анулиран desc = контекст анулиран I1126 20:37:24 6507 възел.go: 294] topo: DefaultDataCenter: DefaultRack премахва 172.22.3.196: 8080 I1126 20:37:24 6507 master_grpc_server.go: 29] отпишете откачен сървър за обем 172.22.3.196: 8080 I1126 20:37:27 6595 volume_grpc_client_to_master.go: 114] Сърдечен ритъм до: 172.22.3.196: 9333 I1126 20:37:27 6507 възел.go: 278] topo: DefaultDataCenter: DefaultRack добавя дете 172.22.3.196: 8080 I1126 20:37:27 6507 master_grpc_server.go: 73] добавен сървър за обем 172.22.3.196: 8080

След това създайте втория, както следва, както следва. (Първата е командата и това, което следва, е изходът на черупката)

$ weed volume -dir = "/ tmp / data2" -max = 10 -mserver = "localhost: 9333" -port = 8081 & I1126 20:38:56 6612 disk_location.go: 133] Магазинът е стартиран на директория: / tmp / data2 с 0 тома макс. 10 I1126 20:38:56 6612 disk_location.go: 136] Магазинът е стартиран на реж.: / tmp / data2 с 0 ec shards I1126 20:38:56 6612 volume_grpc_client_to_master.go: 52] Старт на сървъра за обем с главни възли на семена: [localhost: 9333] I1126 20:38:56 6612 том.go: 331] Стартирайте сървър за обем на водорасли 30GB 2.12 a1021570 на 0.0.0.0: 8081 I1126 20:38:56 6612 volume_grpc_client_to_master.go: 114] Heartbeat към: localhost: 9333 I1126 20:38:56 6507 възел.go: 278] topo: DefaultDataCenter: DefaultRack добавя дете 172.22.3.196: 8081 I1126 20:38:56 6507 master_grpc_server.go: 73] добавен сървър за обем 172.22.3.196: 8081 I1126 20:38:56 6612 volume_grpc_client_to_master.go: 135] Сървърът за обем намери нов главен newLeader: 172.22.3.196: 9333 вместо localhost: 9333 W1126 20:38:56 6507 master_grpc_server.go: 57] SendHeartbeat.172 серия.22.3.196: 8081: rpc грешка: код = анулиран desc = контекст анулиран I1126 20:38:56 6507 възел.go: 294] topo: DefaultDataCenter: DefaultRack премахва 172.22.3.196: 8081 I1126 20:38:56 6507 master_grpc_server.go: 29] отпишете откачен сървър за обем 172.22.3.196: 8081 I1126 20:38:59 6612 volume_grpc_client_to_master.go: 114] Сърдечен ритъм до: 172.22.3.196: 9333 I1126 20:38:59 6507 възел.go: 278] topo: DefaultDataCenter: DefaultRack добавя дете 172.22.3.196: 8081 I1126 20:38:59 6507 master_grpc_server.go: 73] добавен сървър за обем 172.22.3.196: 8081

Вариант 2: Използване на SystemD

За да стартираме воулите с помощта на Systemd, ще трябва да създадем два или повече файла с обем, в случай че имате нужда от повече. Това е толкова просто, както следва:

За том1

$ sudo vim / etc / systemd / system / seaweedvolume1.услуга [Unit] Описание = SeaweedFS Volume After = мрежа.target [услуга] Тип = прост потребител = root група = root ExecStart = / usr / local / go / bin / weed volume -dir = "/ tmp / data2" -max = 10 -mserver = "172.22.3.196: 9333 "-port = 8081 WorkingDirectory = / usr / local / go / bin / SyslogIdentifier = seaweedfs-volume [Install] WantedBy = multi-user.мишена

Заменете пътя на силата на звука с вашата правилна стойност, след това стартирайте и активирайте.

sudo systemctl daemon-reload sudo systemctl start seaweedvolume1.service sudo systemctl enable seaweedvolume1.обслужване 

Проверка на състоянието:

$ systemctl статус seaweedvolume1 ● seaweedvolume1.услуга - Натоварени с обем морски водорасли: зареден (/ etc / systemd / system / seaweedvolume1.обслужване; хора с увреждания; предварително зададен от доставчика: активиран) Активен: активен (работи) от понеделник 2020-11-30 08:24:43 UTC; Преди 3s Основен PID: 2063 (плевел) Задачи: 9 (ограничение: 2204) Памет: 9.8M CGroup: / система.обем / морски водорасли1.услуга └─2063 / usr / local / go / bin / weed volume -dir = / tmp / data3 -max = 10 -mserver = localhost: 9333 -port = 8081 -ip = 172.22.3.196

За том2

$ sudo vim / etc / systemd / system / seaweedvolume2.услуга [Unit] Описание = SeaweedFS Volume After = мрежа.target [услуга] Тип = прост потребител = root група = root ExecStart = / usr / local / go / bin / weed volume -dir = "/ tmp / data1" -max = 5 -mserver = "172.22.3.196: 9333 "-port = 8080 WorkingDirectory = / usr / local / go / bin / SyslogIdentifier = seaweedfs-volume2 [Install] WantedBy = multi-user.мишена

След актуализиране на файловете ще трябва да презаредим демона, както е показано

sudo systemctl daemon-reload sudo systemctl старт seaweedvolume2 sudo systemctl разреши seaweedvolume2

След това проверете статусите им

sudo systemctl status seaweedvolume2 ● seaweedvolume2.услуга - Натоварени с обем морски водорасли: зареден (/ etc / systemd / system / seaweedvolume2.обслужване; хора с увреждания; предварително зададен от доставчика: активиран) Активен: активен (работи) от понеделник 2020-11-30 08:29:22 UTC; Преди 5s Основен PID: 2103 (плевел) Задачи: 10 (ограничение: 2204) Памет: 10.3M CGroup: / система.парче / обем водорасли2.услуга └─2103 / usr / local / go / bin / weed volume -dir = / tmp / data4 -max = 5 -mserver = localhost: 9333 -port = 8080 -ip = 172.22.3.196

Напишете примерен файл

Качването на файл в обекта SeaweedFS е интересно. Първо трябва да изпратим HTTP POST, PUT или GET заявка до / dir / assign за да получите идентификатор на файл (fid) и url сървър на том:

$ curl http: // localhost: 9333 / dir / assign "fid": "7,0101406762", "url": "172.22.3.196: 8080 "," publicUrl ":" 172.22.3.196: 8080 "," брой ": 1

След като разполагаме с тези подробности, както е показано по-горе, следващата стъпка е да съхраните съдържанието на файла. За да направим това, ще трябва да изпратим HTTP многокомпонентна POST заявка до url + '/' + идентификатор на файла (fid) от отговора. Нашият фид е 7,0101406762, url е 172.22.3.196: 8080. Нека изпратим заявката по този начин. Ще получите отговор, както е показано под него.

$ curl -F [имейл защитен] / home / tech / teleport-logo.png http: // 172.22.3.196: 8080 / 7,0101406762 "name": "лого за телепортиране.png "," размер ": 70974," eTag ":" ef8deb64899176d3de492f2fa9951e14 "

Актуализирайте файл, вече изпратен до Object Store

Актуализирането е по-просто, отколкото можете да си представите. Трябва просто да изпратите същата команда, както по-горе, но сега с новия файл, с който възнамерявате да замените съществуващия. Ще поддържате fid и url.

curl -F [имейл защитен] / home / tech / teleport-logo-updated.png http: // 172.22.3.196: 8080 / 7,0101406762

Изтриване на файл от Object Store

За да се отървете от файл, който вече сте съхранили в SeaweedFS, просто трябва да изпратите HTTP DELETE заявка до същия url + '/' + идентификатор на файл (fid) URL:

curl -X ИЗТРИВАНЕ http: // 172.22.3.196: 8080 / 7,0101406762

Четене на запазен файл

След като сместите файловете си, можете да ги прочетете доста лесно. Първо погледнете URL адресите на сървъра за обем по файла volumeId, както е показано в този пример:

$ curl http: // http: // 172.22.3.196: 9333 / реж. / Справка?volumeId = 7 "volumeId": "7", "location": ["url": "172.22.3.196: 8080 "," publicUrl ":" 172.22.3.196: 8080 "]

Тъй като томовете не се движат често, можете да кеширате резултатите през повечето време, за да увеличите скоростта и производителността на вашата уникална реализация. В зависимост от типа на репликацията, един том може да има множество места за реплика. Просто изберете произволно едно място за четене.

Сега отворете браузъра или приложението, което предпочитате да използвате, за да видите файла, който сте съхранили в SeaweedFS, и го насочете към URL адреса, който получихме по-горе. В случай, че имате защитна стена, разрешете порта, до който ще имате достъп

sudo ufw позволяват 8080

http: // 172.22.3.196: 8080 / 7,0101406762

Екранна снимка на файла е споделена по-долу в този пример

Ако искате по-хубав URL, можете да използвате един от тези алтернативни формати на URL:

 http: // 172.22.3.196: 8080/7/0101406762 / ваше_ предпочитано_име.jpg http: // 172.22.3.196: 8080/7/0101406762.jpg http: // 172.22.3.196: 8080 / 7,0101406762.jpg http: // 172.22.3.196: 8080/7/0101406762 http: // 172.22.3.196: 8080 / 7,0101406762

Ако искате да получите мащабирана версия на изображение, можете да добавите някои параметри. Примери са споделени по-долу:

http: // 172.22.3.196: 8080/7/0101406762.jpg?височина = 200 и ширина = 200 http: // 172.22.3.196: 8080/7/0101406762.jpg?височина = 200 & ширина = 200 & режим = годни http: // 172.22.3.196: 8080/7/0101406762.jpg?височина = 200 & ширина = 200 & режим = запълване

Има толкова много повече, че Seaweed е в състояние да направи, като например да постигне No point of failure чрез използването на множество сървъри и множество томове. Вижте документацията на SeaweedFS на GitHub, за да намерите повече за този прекрасен инструмент за съхранение на обекти.

Заключителни бележки

SeaweedFS може да се окаже доста безценно във вашите проекти, особено ако включва съхранение и извличане на големи количества данни под формата на обекти. В случай, че имате приложения, които изискват извличане на снимки и такъв вид данни, тогава SeaweedFS е добро място за настаняване. Опитай! Междувременно ние продължаваме да оценяваме вашето време в блога и безмилостната подкрепа, която сте излъчвали досега. Можете да прочетете други подобни ръководства, споделени по-долу.

EKS Kubernetes Постоянно съхранение с EFS услуга за съхранение

Настройте GlusterFS съхранение с Heketi на CentOS 8 / CentOS 7

Как да създавам и изтривам томове на GlusterFS

Настройте S3 съвместим сървър за съхранение на обекти с Minio

Как да получите достъп до местоположението на приложенията на Microsoft Store
Замисляли ли сте се някога къде са инсталирани всички приложения на Microsoft Store на вашето устройство? Няма да можете да намерите действителното ме...
Как да преинсталирам приложението Microsoft Store на Windows 10
От въвеждането на Windows 10 версия 2004 през май 2020 г., той идва с някои функции по подразбиране, които ви позволяват да изтриете приложения едно п...
Как да персонализирате съобщение за вход в Windows 10 с помощта на редактора на системния регистър
Ако искате да покажете съобщение на потребителите, докато влизате в системата. Windows предоставя опция за това. Съобщението може да има заглавие по в...