Äau Habr!
Å odien es vÄlos runÄt par mÅ«su pieredzi, automatizÄjot lielo datu dublÄÅ”anu no Nextcloud krÄtuvÄm dažÄdÄs konfigurÄcijÄs. StrÄdÄju par degvielas uzpildes staciju Molnija AK, kur veicam IT sistÄmu konfigurÄcijas pÄrvaldÄ«bu, datu uzglabÄÅ”anai tiek izmantots Nextcloud. Tai skaitÄ, ar sadalÄ«tu struktÅ«ru, ar atlaiÅ”anu.
ProblÄmas, kas rodas no instalÄciju funkcijÄm, ir tÄdas, ka ir daudz datu. Nextcloud nodroÅ”inÄtÄ versija, dublÄÅ”ana, subjektÄ«vi iemesli un daudz kas cits rada daudz dublikÄtu.
AizvÄsture
AdministrÄjot Nextcloud, rodas efektÄ«vas dublÄÅ”anas organizÄÅ”anas problÄma, kas ir jÄÅ”ifrÄ, jo dati ir vÄrtÄ«gi.
MÄs piedÄvÄjam iespÄjas saglabÄt dublÄjumus pie mums vai pie klienta atseviŔķÄs iekÄrtÄs no Nextcloud, kas prasa elastÄ«gu automatizÄtu pieeju administrÄÅ”anai.
Ir daudz klientu, visi ar dažÄdÄm konfigurÄcijÄm, un visi atrodas savÄs vietnÄs un ar savÄm Ä«paŔībÄm. Tas ir standarta paÅÄmiens, kad visa vietne pieder jums un dublÄjumkopijas tiek veidotas no kronÄm; tas neatbilst labi.
Vispirms apskatīsim ievades datus. Mums vajag:
- MÄrogojamÄ«ba viena vai vairÄku mezglu izteiksmÄ. LielÄm instalÄcijÄm mÄs izmantojam minio kÄ krÄtuvi.
- Uzziniet par problÄmÄm, kas saistÄ«tas ar dublÄÅ”anas veikÅ”anu.
- Jums ir jÄveido rezerves kopija ar saviem klientiem un/vai pie mums.
- Ätri un viegli risiniet problÄmas.
- Klienti un instalÄcijas ļoti atŔķiras viens no otra ā vienveidÄ«bu nevar panÄkt.
- AtkopÅ”anas Ätrumam jÄbÅ«t minimÄlam divos gadÄ«jumos: pilnÄ«ga atkopÅ”ana (katastrofa), viena mape ir kļūdaini izdzÄsta.
- NepiecieÅ”ama deduplikÄcijas funkcija.
Lai atrisinÄtu dublÄjumu pÄrvaldÄ«bas problÄmu, mÄs instalÄjÄm GitLab. SÄ«kÄka informÄcija pÄc rÄ«kiem.
Protams, mÄs neesam pirmie, kas risina Å”Ädu problÄmu, taÄu mums Ŕķiet, ka mÅ«su praktiskÄ, grÅ«ti iegÅ«tÄ pieredze var bÅ«t interesanta un esam gatavi ar to dalÄ«ties.
TÄ kÄ mÅ«su uzÅÄmumam ir atvÄrtÄ pirmkoda politika, mÄs meklÄjÄm atvÄrtÄ koda risinÄjumu. SavukÄrt mÄs dalÄmies ar savÄm norisÄm un ievietojam tÄs. PiemÄram, vietnÄ GitHub ir
DublÄÅ”anas rÄ«ki
MÄs sÄkÄm meklÄt risinÄjumu metodes, izvÄloties rezerves izveides rÄ«ku.
ParastÄ tar + gzip nedarbojas labi - dati tiek dublÄti. Pieaugums bieži satur ļoti maz faktisko izmaiÅu, un liela daļa datu vienÄ failÄ tiek atkÄrtoti.
Ir vÄl viena problÄma - izkliedÄtÄs datu krÄtuves dublÄÅ”ana. MÄs izmantojam minio, un tÄ dati bÅ«tÄ«bÄ ir lieki. Vai arÄ« jums bija jÄizveido dublÄjums caur paÅ”u minio - ielÄdÄjiet to un izmantojiet visus starplikas starp failu sistÄmu, un, kas ir ne mazÄk svarÄ«gi, pastÄv risks aizmirst par dažiem spaiÅiem un metainformÄciju. Vai arÄ« izmantojiet dedublikÄciju.
DublÄÅ”anas rÄ«ki ar dublÄÅ”anu ir pieejami atvÄrtÄ avotÄ (HabrĆ© bija
DublÄjumu pÄrvaldÄ«ba
Borg un Restic ir labi, taÄu nevienam no izstrÄdÄjumiem nav centralizÄta vadÄ«bas mehÄnisma. PÄrvaldÄ«bas un kontroles nolÅ«kos izvÄlÄjÄmies jau ieviestu rÄ«ku, bez kura nevaram iedomÄties savu darbu, tajÄ skaitÄ automatizÄciju ā tas ir visiem labi zinÄmais CI/CD ā GitLab.
Ideja ir Å”Äda: gitlab-runner ir instalÄts katrÄ mezglÄ, kurÄ tiek glabÄti Nextcloud dati. SkrÄjÄjs izpilda skriptu pÄc grafika, kas uzrauga dublÄÅ”anas procesu, un tas palaiž Borg vai Restic.
Ko mÄs saÅÄmÄm? Atsauksmes par izpildi, Ärta izmaiÅu kontrole, informÄcija kļūdas gadÄ«jumÄ.
Ŕeit ir
Gitlab API vÄl nevar mainÄ«t CI/CD taimautu, taÄu tas ir mazs. Tas ir jÄpalielina, teiksim 1d
.
Par laimi GitLab var palaist ne tikai saskaÅÄ ar apÅemÅ”anos, bet tikai saskaÅÄ ar grafiku, tas ir tieÅ”i tas, kas mums nepiecieÅ”ams.
Tagad par iesaiÅojuma skriptu.
Å im skriptam mÄs uzstÄdÄ«jÄm Å”Ädus nosacÄ«jumus:
- To vajadzÄtu palaist gan skrÄjÄjam, gan ar roku no konsoles ar tÄdu paÅ”u funkcionalitÄti.
- Ir jÄbÅ«t kļūdu apstrÄdÄtÄjiem:
- atgrieŔanas kods.
- meklÄjiet virkni žurnÄlÄ. PiemÄram, mums kļūda var bÅ«t ziÅojums, ko programma neuzskata par liktenÄ«gu.
- ApstrÄdes noildze. Izpildes laikam jÄbÅ«t saprÄtÄ«gam.
- Mums ir nepiecieÅ”ams ļoti detalizÄts žurnÄls. Bet tikai kļūdas gadÄ«jumÄ.
- Pirms palaiÅ”anas tiek veikti arÄ« vairÄki testi.
- Nelieli bonusi ÄrtÄ«bÄm, kas mums noderÄja atbalsta procesÄ:
- SÄkums un beigas tiek ierakstÄ«ti vietÄjÄs maŔīnas sistÄmas žurnÄlÄ. Tas palÄ«dz savienot sistÄmas kļūdas un dublÄÅ”anas darbÄ«bu.
- Daļa kļūdu žurnÄla, ja tÄda ir, tiek izvadÄ«ta uz stdout, viss žurnÄls tiek ierakstÄ«ts atseviÅ”Ä·Ä failÄ. Ir Ärti uzreiz apskatÄ«t CI un novÄrtÄt kļūdu, ja tÄ ir triviÄla.
- AtkļūdoŔanas režīmi.
Pilns žurnÄls tiek saglabÄts kÄ artefakts pakalpojumÄ GitLab; ja kļūdas nav, žurnÄls tiek dzÄsts. MÄs rakstÄm skriptu bash valodÄ.
MÄs ar prieku izskatÄ«sim visus ieteikumus un komentÄrus saistÄ«bÄ ar atvÄrto pirmkodu ā laipni lÅ«dzam.
KÄ tas darbojas
Rezerves mezglÄ tiek palaists skrÄjÄjs ar Bash izpildÄ«tÄju. SaskaÅÄ ar plÄnotÄju, darbs CI/CD tiek palaists Ä«paÅ”Ä rÄceÅÄ. SkrÄjÄjs palaiž universÄlu iesaiÅojuma skriptu Å”Ädiem uzdevumiem, pÄrbauda dublÄjuma repozitorija derÄ«gumu, pievienoÅ”anas punktus un visu, ko mÄs vÄlamies, pÄc tam izveido dublÄjumu un notÄ«ra veco. Pati pabeigtÄ dublÄÅ”ana tiek nosÅ«tÄ«ta uz S3.
MÄs strÄdÄjam pÄc Ŕīs shÄmas - tas ir ÄrÄjs AWS nodroÅ”inÄtÄjs vai Krievijas ekvivalents (tas ir ÄtrÄks un dati neiziet no Krievijas FederÄcijas). Vai arÄ« Å”im nolÅ«kam mÄs instalÄjam klientam viÅa vietnÄ atseviŔķu minio klasteru. MÄs parasti to darÄm droŔības apsvÄrumu dÄļ, kad klients nevÄlas, lai dati vispÄr izietu no viÅa Ä·Ädes.
MÄs neizmantojÄm dublÄjuma sÅ«tÄ«Å”anas funkciju, izmantojot ssh. Tas nepalielina droŔību, un S3 nodroÅ”inÄtÄja tÄ«kla iespÄjas ir daudz augstÄkas nekÄ mÅ«su vienai ssh maŔīnai.
Lai aizsargÄtu savu vietÄjo datoru no hakera, jo viÅÅ” var izdzÄst datus S3, jums ir jÄiespÄjo versiju izveide.
DublÄjums vienmÄr Å”ifrÄ dublÄjumu.
Borgam ir neÅ”ifrÄts režīms none
, taÄu mÄs stingri neiesakÄm to ieslÄgt. Å ajÄ režīmÄ ne tikai nebÅ«s Å”ifrÄÅ”anas, bet arÄ« netiek aprÄÄ·inÄta rakstÄ«tÄ kontrolsumma, kas nozÄ«mÄ, ka integritÄti var pÄrbaudÄ«t tikai netieÅ”i, izmantojot indeksus.
AtseviŔķs plÄnotÄjs pÄrbauda dublÄjumkopiju indeksu un satura integritÄti. PÄrbaude ir lÄna un ilga, tÄpÄc reizi mÄnesÄ« to veicam atseviŔķi. Tas var ilgt vairÄkas dienas.
Lasi mani krievu valodÄ
GalvenÄs funkcijas
prepare
treniÅÅ”testcheck
gatavÄ«bas pÄrbaudemaincommand
galvenÄ komandaforcepostscript
funkcija, kas tiek izpildÄ«ta beigÄs vai kļūdas dÄļ. MÄs to izmantojam, lai atvienotu nodalÄ«jumu.
Servisa funkcijas
cleanup
MÄs ierakstÄm kļūdas vai izdzÄÅ”am žurnÄla failu.checklog
parsÄjiet žurnÄlu, lai atrastu rindu ar kļūdu.ret
izejas apstrÄdÄtÄjs.checktimeout
pÄrbaudiet taimautu.
vide
VERBOSE=1
MÄs nekavÄjoties parÄdÄm kļūdas ekrÄnÄ (stdout).SAVELOGSONSUCCES=1
veiksmes gadÄ«jumÄ saglabÄjiet žurnÄlu.INIT_REPO_IF_NOT_EXIST=1
Izveidojiet repozitoriju, ja tÄ neeksistÄ. AtspÄjots pÄc noklusÄjuma.TIMEOUT
maksimÄlais laiks galvenajai darbÄ«bai. BeigÄs varat to iestatÄ«t kÄ "m", "h" vai "d".
Vecu kopiju uzglabÄÅ”anas režīms. NoklusÄjums:
KEEP_DAILY=7
KEEP_WEEKLY=4
KEEP_MONTHLY=6
MainÄ«gie lielumi skripta iekÅ”pusÄ
ERROR_STRING
ā virkne kļūdu reÄ£istrÄcijas žurnÄlam.EXTRACT_ERROR_STRING
ā izteiksme rÄdÄ«t virkni, ja kļūda.KILL_TIMEOUT_SIGNAL
ā signÄls nogalinÄÅ”anai, ja taimauts.TAIL
ā cik virkÅu ar kļūdÄm ekrÄnÄ.COLORMSG
ā ziÅojuma krÄsa (pÄc noklusÄjuma dzeltena).
Å im skriptam, ko sauc par WordPress, ir nosacÄ«ts nosaukums, tÄ viltÄ«ba ir tÄda, ka tas dublÄ arÄ« mysql datubÄzi. Tas nozÄ«mÄ, ka to var izmantot viena mezgla Nexcloud instalÄcijÄm, kur varat arÄ« dublÄt datubÄzi. ÄrtÄ«bas ir ne tikai tas, ka viss ir vienuviet, bet arÄ« datu bÄzes saturs ir tuvu failu saturam, jo āālaika starpÄ«ba ir minimÄla.
Restiks pret Borgu
Ir arÄ« salÄ«dzinÄjumi starp Borg un Restic
MÅ«su atlases kritÄriji, papildus jau nosauktajiem (dedublikÄcija, Ätra atkopÅ”ana utt.):
- IzturÄ«ba pret nepabeigtiem darbiem. PÄrbaudÄ«t, vai nav nogalinÄts -9.
- IzmÄrs diskÄ.
- PrasÄ«bas pÄc resursiem (CPU, atmiÅa).
- UzglabÄto lÄsumu lielums.
- Darbs ar S3.
- IntegritÄtes pÄrbaude.
TestÄÅ”anai paÅÄmÄm vienu klientu ar reÄliem datiem un kopÄjo izmÄru 1,6 TB.
Nosacījumi
Borgs nezina, kÄ strÄdÄt tieÅ”i ar S3, un mÄs uzstÄdÄ«jÄm disku kÄ droÅ”inÄtÄju, izmantojot
Goofys strÄdÄ Ä¼oti Ätri un labi, un tÄdi ir
Lai samazinÄtu tÄ«kla ietekmi, mÄs izmantojÄm vietÄjo pakalpojumu sniedzÄju - Yandex Cloud.
SalÄ«dzinoÅ”Äs pÄrbaudes rezultÄti.
- NogalinÄt -9 ar turpmÄku restartÄÅ”anu abi bija veiksmÄ«gi.
- IzmÄrs diskÄ. Borgs var saspiest, tÄpÄc rezultÄti ir tÄdi, kÄ gaidÄ«ts.
Rezerves kopija
IzmÄrs
Borg
562Gb
Atpūta
628Gb
- PÄc CPU
Pats Borgs patÄrÄ maz, ar noklusÄjuma kompresiju, bet tas jÄvÄrtÄ kopÄ ar goofys procesu. KopumÄ tie ir salÄ«dzinÄmi un izmanto aptuveni 1,2 kodolus vienÄ testa virtuÄlajÄ maŔīnÄ. - AtmiÅa. Restic ir aptuveni 0,5 GB, Borg ir aptuveni 200 MB. Bet tas viss ir nenozÄ«mÄ«gs, salÄ«dzinot ar sistÄmas faila keÅ”atmiÅu. TÄpÄc ir ieteicams pieŔķirt vairÄk atmiÅas.
- LÄses lieluma atŔķirÄ«ba bija pÄrsteidzoÅ”a.
Rezerves kopija
IzmÄrs
Borg
apmÄram 500 MB
Atpūta
apmÄram 5 MB
- Restic S3 pieredze ir lieliska. Darbs ar Borg, izmantojot goofys, nerada nekÄdus jautÄjumus, taÄu ir atzÄ«mÄts, ka ir ieteicams veikt umount pÄc tam, kad dublÄÅ”ana ir pabeigta, lai pilnÄ«bÄ atiestatÄ«tu keÅ”atmiÅu. S3 Ä«patnÄ«ba ir tÄda, ka nepietiekami sÅ«knÄti gabali nekad netiks nosÅ«tÄ«ti uz spaini, kas nozÄ«mÄ, ka nepilnÄ«gi aizpildÄ«ti dati rada lielus bojÄjumus.
- IntegritÄtes pÄrbaude darbojas labi abos gadÄ«jumos, taÄu Ätrums ievÄrojami atŔķiras.
Restic 3,5 stundas.
Borg, ar 100 GB SSD failu keÅ”atmiÅu - 5 stundas.ApmÄram tÄds pats Ätrums, ja dati atrodas lokÄlajÄ diskÄ.
Borgs lasa tieÅ”i no S3 bez keÅ”atmiÅas 33 stundas. BriesmÄ«gi garÅ”.
BÅ«tÄ«ba ir tÄda, ka Borg var saspiest un tam ir lielÄki lÄsumi, kas padara uzglabÄÅ”anas un GET/PUT operÄcijas S3 lÄtÄkas. TaÄu tas maksÄ sarežģītÄku un lÄnÄku verifikÄciju. RunÄjot par atkopÅ”anas Ätrumu, mÄs nepamanÄ«jÄm nekÄdas atŔķirÄ«bas. NÄkamÄs dublÄjumkopijas (pÄc pirmÄs) Restic aizÅem nedaudz ilgÄk, bet ne ievÄrojami.
PÄdÄjais, bet ne mazÄk svarÄ«gais izvÄlÄ bija kopienas lielums.
Un mÄs izvÄlÄjÄmies borgu.
Daži vÄrdi par kompresiju
Borga arsenÄlÄ ir lielisks jauns saspieÅ”anas algoritms - zstd. Kompresijas kvalitÄte nav sliktÄka par gzip, bet daudz ÄtrÄka. Un ÄtrumÄ salÄ«dzinÄms ar noklusÄjuma lz4.
PiemÄram, MySQL datu bÄzes dump ir saspiests divas reizes labÄk nekÄ lz4 ar tÄdu paÅ”u Ätrumu. TomÄr pieredze ar reÄliem datiem rÄda, ka Nextcloud mezgla kompresijas pakÄpÄ ir ļoti maz atŔķirÄ«bu.
Borgam ir diezgan bonusa saspieÅ”anas režīms - ja failam ir augsta entropija, tad kompresija netiek pielietota vispÄr, kas palielina Ätrumu. Veidojot, iespÄjota opcija
-C auto,zstd
zstd algoritmam
TÄtad, izmantojot Å”o opciju, mÄs saÅÄmÄm, salÄ«dzinot ar noklusÄjuma saspieÅ”anu
560Gb un 562Gb attiecÄ«gi. IepriekÅ” minÄtÄ piemÄra dati, ļaujiet man jums atgÄdinÄt, bez saspieÅ”anas rezultÄts ir 628Gb. 2GB starpÄ«bas rezultÄts mÅ«s nedaudz pÄrsteidza, taÄu domÄjÄm, ka tomÄr izvÄlÄsimies to. auto,zstd
.
Rezerves pÄrbaudes metode
SaskaÅÄ ar plÄnotÄja teikto, virtuÄlÄ maŔīna tiek palaista tieÅ”i no pakalpojumu sniedzÄja vai no klienta, kas ievÄrojami samazina tÄ«kla slodzi. Vismaz tas ir lÄtÄk nekÄ paÅ”am celt un vadÄ«t satiksmi.
goofys --cache "--free:5%:/mnt/cache" -o allow_other --endpoint https://storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com /mnt/goofys
export BORG_PASSCOMMAND="cat /home/borg/.borg-passphrase"
borg list /mnt/goofys/borg1/
borg check --debug -p --verify-data /mnt/goofys/borg1/
Izmantojot to paÅ”u shÄmu, mÄs pÄrbaudÄm failus ar antivÄ«rusu (pÄc fakta). Galu galÄ lietotÄji Nextcloud augÅ”upielÄdÄ dažÄdas lietas, un ne visiem ir antivÄ«russ. PÄrbaužu veikÅ”ana lieÅ”anas laikÄ aizÅem pÄrÄk daudz laika un traucÄ uzÅÄmÄjdarbÄ«bu.
MÄrogojamÄ«ba tiek panÄkta, palaižot skrÄjÄjus dažÄdos mezglos ar dažÄdiem tagiem.
MÅ«su uzraudzÄ«ba vienÄ logÄ apkopo rezerves statusus, izmantojot GitLab API; ja nepiecieÅ”ams, problÄmas ir viegli pamanÄmas un tikpat viegli lokalizÄjamas.
SecinÄjums
RezultÄtÄ mÄs droÅ”i zinÄm, ka veidojam dublÄjumkopijas, ka mÅ«su dublÄjumkopijas ir derÄ«gas, problÄmas, kas ar tÄm rodas, aizÅem maz laika un tiek atrisinÄtas dežūras administratora lÄ«menÄ«. DublÄjumkopijas aizÅem ļoti maz vietas, salÄ«dzinot ar tar.gz vai Bacula.
Avots: www.habr.com