GitLab e u thusa joang ho boloka polokelo e kholo ea NextCloud

Hey Habr!

Kajeno ke batla ho bua ka boiphihlelo ba rona ba ho iketsetsa backup ea data e kholo ho tsoa ho Nextcloud storages ka meralo e fapaneng. Ke sebetsa joalo ka seteishene sa lits'ebeletso ho Molniya AK, moo re etsang taolo ea tlhophiso ea lits'ebetso tsa IT; Nextcloud e sebelisetsoa ho boloka data. Ho kenyeletsoa, ​​ka sebopeho se ajoang, se nang le redundancy.

Mathata a hlahang ho tsoa ho likarolo tsa lits'ebetso ke hore ho na le data e ngata. Phetolelo e fanoeng ke Nextcloud, redundancy, mabaka a ikhethileng, le tse ling li theha likopi tse ngata.

prehistory

Ha o tsamaisa Nextcloud, ho hlaha bothata ba ho hlophisa backup e sebetsang, e tlamehang ho ngolisoa, hobane data e bohlokoa.

Re fana ka likhetho tsa ho boloka li-backups sebakeng sa rona kapa ho moreki mochining o arohaneng le Nextcloud, e hlokang mokhoa o bonolo oa tsamaiso.

Ho na le bareki ba bangata, kaofela ha bona ba na le litlhophiso tse fapaneng, 'me kaofela li sebakeng sa bona sa marang-rang le ka litšobotsi tsa bona. Ona ke mokhoa o tloaelehileng ha sebaka sohle e le sa hau, 'me li-backups li entsoe ka meqhaka; ha e lumellane hantle.

Pele, a re shebeng data ea ho kenya. Re hloka:

  • Scalability ho latela node e le 'ngoe kapa tse' maloa. Bakeng sa lisebelisoa tse kholo re sebelisa minio e le polokelo.
  • Fumana ka mathata a ho etsa li-backups.
  • U hloka ho boloka backup le bareki ba hau le/kapa le rona.
  • Sebetsana le mathata kapele le ha bonolo.
  • Bareki le lits'ebetso li fapane haholo ho tse ling - ho tšoana ho ke ke ha finyelloa.
  • Lebelo la ho hlaphoheloa le lokela ho ba le fokolang maemong a mabeli: ho hlaphoheloa ka botlalo (koluoa), foldara e le 'ngoe e hlakotsoe ka phoso.
  • Mosebetsi oa deduplication oa hlokahala.

GitLab e u thusa joang ho boloka polokelo e kholo ea NextCloud

Ho rarolla bothata ba ho laola li-backups, re kentse GitLab. Lintlha tse ling ka tackle.

Ha e le hantle, ha se rona ba pele ba ho rarolla bothata bo joalo, empa ho bonahala ho rona hore phihlelo ea rona e sebetsang, e boima e ka ba e thahasellisang 'me re itokiselitse ho e arolelana.

Kaha k'hamphani ea rona e na le leano la mohloli o bulehileng, re ne re batla tharollo ea mohloli o bulehileng. Ka lehlakoreng le leng, re arolelana lintlafatso tsa rona le ho li beha. Ka mohlala, ho GitHub ho na le plugin ea rona bakeng sa Nextcloud, eo re fanang ka eona ho bareki, ho ntlafatsa ts'ireletso ea data haeba ho ka tlosoa ka phoso kapa ka boomo.

Lisebelisoa tsa bekapo

Re ile ra qala mokhoa oa rona oa ho batla tharollo ka ho khetha sesebelisoa sa ho etsa backup.

Hangata tar + gzip ha e sebetse hantle - lintlha li kopitsoa. Hangata keketseho e na le liphetoho tse fokolang haholo, 'me boitsebiso bo bongata ka har'a faele e le' ngoe boa phetoa.
Ho na le bothata bo bong - ho fokotseha ha polokelo ea data e ajoang. Re sebelisa minio mme data ea eona ha e na thuso. Kapa u ne u tlameha ho etsa bekapo ka minio ka boeona - e jarolle 'me u sebelise li-spacers tsohle pakeng tsa tsamaiso ea faele,' me, ha ho bohlokoa hakaalo, ho na le kotsi ea ho lebala ka tse ling tsa linkho le boitsebiso ba meta. Kapa sebelisa deduplication.

Lisebelisoa tsa bekapo tse nang le likopi li fumaneha mohloling o bulehileng (ho Habré ho ne ho le teng Lingoloa mabapi le sehlooho sena) le makgaolakgang a rona e ne e le borg и Thibela. Papiso ea rona ea likopo tsena tse peli e ka tlase, empa hajoale re tla u joetsa hore na re hlophisitse leano lohle joang.

Ho laola li-backups

Borg le Restic li ntle, empa ha ho sehlahisoa se nang le mochini oa taolo o bohareng. Bakeng sa morero oa tsamaiso le taolo, re khethile sesebelisoa seo re seng re se kentse tšebetsong, ntle le seo re ke keng ra nahana ka mosebetsi oa rona, ho kenyelletsa le automation - ena ke CI / CD e tsebahalang - GitLab.

Mohopolo o tjena: gitlab-runner e kentsoe sebakeng se seng le se seng se bolokang data ea Nextcloud. Semathi se tsamaisa sengoloa kemisong e lekola ts'ebetso ea bekapo, 'me se qala Borg kapa Restic.

Re fumane eng? Maikutlo ho tsoa ts'ebetsong, taolo e bonolo holim'a liphetoho, lintlha ha ho ka ba le phoso.

mona mona ho GitHub re kentse mehlala ea sengoloa bakeng sa mesebetsi e fapaneng, mme ra qetella re e hokela ho bekapo eseng feela Nextcloud, empa le lits'ebeletso tse ling tse ngata. Hape ho na le kemiso moo, haeba u sa batle ho e hlophisa ka letsoho ('me ha re batle) le .gitlab-ci.yml

Ha ho na mokhoa oa ho fetola nako ea CI / CD ho Gitlab API leha ho le joalo, empa e nyane. E tlameha ho eketseha, ho bolela 1d.

GitLab, ka lehlohonolo, e ka qala eseng feela ho latela boitlamo, empa ho latela kemiso, sena ke sona seo re se hlokang.

Joale mabapi le script ea wrapper.

Re beha maemo a latelang bakeng sa script ena:

  • E lokela ho qalisoa ka bobeli ke semathi le ka letsoho ho tloha ho console ka ts'ebetso e tšoanang.
  • E tlameha ho ba le bahlokomeli ba liphoso:
  • khoutu ea ho khutlisa.
  • batla kgwele ka hara logi. Ka mohlala, ho rona phoso e ka 'na ea e-ba molaetsa oo lenaneo le sa o nkeng o le kotsi.
  • E sebetsa e felile. Nako ea ho tsamaea e lokela ho ba e lekaneng.
  • Re hloka log e qaqileng haholo. Empa feela ha ho ka ba le phoso.
  • Litlhahlobo tse 'maloa le tsona li etsoa pele li qala.
  • Libonase tse nyane bakeng sa boiketlo tseo re li fumaneng li le molemo nakong ea ts'ehetso:
  • Qalo le qetello li tlalehiloe ho syslog ea mochini oa lehae. Sena se thusa ho hokahanya liphoso tsa sistimi le ts'ebetso ea backup.
  • Karolo ea tlaleho ea phoso, haeba e teng, e hlahisoa ho stdout, log eohle e ngoletsoe faele e arohaneng. Ho bonolo ho sheba CI hang-hang le ho lekola phoso haeba e le nyane.
  • Mekhoa ea ho lokisa liphoso.

Log e felletseng e bolokoa e le ntho ea maiketsetso ho GitLab; haeba ho se na phoso, log e hlakotsoe. Re ngola script ka bash.

Re tla thabela ho nahana ka litlhahiso le maikutlo mabapi le mohloli o bulehileng - amohelehile.

Joang mosebetsing ona

Semathi se nang le executor ea Bash se hlahisoa sebakeng sa polokelo. Ho ea ka kemiso, mosebetsi oa CI/CD o qalisoa ka turnip e khethehileng. Semathi se hlahisa sengoloa sa bokahohleng bakeng sa mesebetsi e joalo, se lekola bonnete ba polokelo ea polokelo, lintlha tsa ho hloa le tsohle tseo re li batlang, ebe li tšehetsa le ho hloekisa ea khale. Backup e phethiloeng ka boeona e romelloa ho S3.

Re sebetsa ho latela morero ona - ke mofani oa AWS oa kantle kapa se tšoanang le Serussia (e potlakile mme data ha e tlohe Russia Federation). Kapa re kenya sehlopha se arohaneng sa minio bakeng sa moreki sebakeng sa hae sa marang-rang bakeng sa merero ena. Hangata re etsa sena ka mabaka a ts'ireletso, ha moreki a sa batle hore data e tlohe potoloho ea bona ho hang.

Ha rea ​​sebelisa tšobotsi ea ho romella bekapo ka ssh. Sena ha se kenye ts'ireletso, 'me matla a marang-rang a mofani oa S3 a phahame haholo ho feta mochine oa rona o le mong oa ssh.

E le ho sireletsa mochine oa hau oa sebakeng seo ho tloha ho mohatelli, kaha a ka hlakola data ho S3, o tlameha ho nolofalletsa phetolelo.
The bekapo kamehla encrypts bekapo.

Borg e na le mokhoa o sa ngolisoang none, empa ka matla ha re khothaletse ho e bulela. Ka mokhoa ona, ho ke ke ha e-ba le encryption feela, empa checksum ea se ngotsoeng ha e baloe, ho bolelang hore botšepehi bo ka hlahlojoa feela ka tsela e sa tobang, ho sebelisa li-index.

Sehlophisi se arohaneng se hlahloba li-backups bakeng sa botšepehi ba li-index le litaba. Cheke e lieha ebile e telele, kahoo re e tsamaisa ka thoko hang ka khoeli. E ka nka matsatsi a 'maloa.

Balame ka Serussia

Mesebetsi ea sehlooho

  • prepare koetliso
  • testcheck ho itokisetsa ho hlahloba
  • maincommand sehlopha sa mantlha
  • forcepostscript mosebetsi o etsoang qetellong kapa ka phoso. Re e sebelisa ho theola karohano.

Mesebetsi ea litšebeletso

  • cleanup Re ngola liphoso kapa re hlakola faele ea log.
  • checklog Hlalosa logi bakeng sa ho hlaha ha mola o nang le phoso.
  • ret tsoa ho mohlokomedi.
  • checktimeout hlahloba nako.

tikoloho e khahlang

  • VERBOSE=1 Re hlahisa liphoso skrineng hang-hang (stdout).
  • SAVELOGSONSUCCES=1 boloka log holim'a katleho.
  • INIT_REPO_IF_NOT_EXIST=1 Etsa sebaka sa polokelo haeba se le sieo. E emisitsoe ka ho sa feleng.
  • TIMEOUT nako e telele bakeng sa ts'ebetso e kholo. U ka e beha joalo ka 'm', 'h' kapa 'd' qetellong.

Mokhoa oa ho boloka likopi tsa khale. Ea kamehla:

  • KEEP_DAILY=7
  • KEEP_WEEKLY=4
  • KEEP_MONTHLY=6

Liphetoho tse ka hare ho script

  • ERROR_STRING — khoele bakeng sa cheke ho log bakeng sa phoso.
  • EXTRACT_ERROR_STRING - polelo bakeng sa khoele ea pontšo haeba phoso.
  • KILL_TIMEOUT_SIGNAL - lets'oao la ho bolaea haeba nako e felile.
  • TAIL - ke likhoele tse kae tse nang le liphoso skrineng.
  • COLORMSG — mmala wa molaetsa (tshehla kamehla).

Script eo, e bitsoang wordpress, e na le lebitso la maemo, leqheka la eona ke hore e boetse e tšehetsa database ea mysql. Sena se bolela hore e ka sebelisoa bakeng sa lits'ebetso tsa Nexcloud tsa node e le 'ngoe, moo o ka boela oa boloka database. Ntho e bonolo ha se feela hore ntho e 'ngoe le e' ngoe e sebakeng se le seng, empa hape le likahare tsa database li haufi le litaba tsa lifaele, kaha phapang ea nako e nyenyane.

Restic vs Borg

Ho boetse ho na le papiso lipakeng tsa Borg le Restic mona Habre, ’me re ne re se na mosebetsi oa ho etsa e ’ngoe feela, empa ea rōna. Ho ne ho le bohlokoa ho rona hore na e tla shebahala joang ho data ea rona, ka lintlha tsa rona. Re ba tlisa.

Mekhoa ea rona ea khetho, ho kenyelletsa le e seng e boletsoe (ho fokotsa, ho hlaphoheloa kapele, joalo-joalo):

  • Ho hanyetsa mosebetsi o sa phethoang. Hlahloba ho bolaea -9.
  • Boholo ho disk.
  • Tlhokahalo ea lisebelisoa (CPU, memori).
  • Boholo ba li-blobs tse bolokiloeng.
  • Ho sebetsa le S3.
  • Ho hlahloba botšepehi.

Bakeng sa tlhahlobo, re nkile moreki a le mong ea nang le data ea 'nete le boholo ba 1,6 TB.
Maemo.

Borg ha a tsebe ho sebetsa ka ho toba le S3, 'me re mounted disk e le fuse, ka tsela bokhopo. Restic o e rometse ho S3 ka boeona.

Li-Goofys li sebetsa ka potlako le hantle, 'me li teng "diskcache module", e leng se potlakisang mosebetsi le ho feta. E boemong ba beta, 'me, ka 'nete, re ile ra senyeha ka tahlehelo ea data nakong ea liteko (tse ling). Empa molemo ke hore ts'ebetso ea "backup" ka boeona ha e hloke ho bala haholo, empa hangata ho ngola, kahoo re sebelisa cache feela nakong ea tlhahlobo ea botšepehi.

Ho fokotsa tšusumetso ea marang-rang, re sebelisitse mofani oa lehae - Yandex Cloud.

Liphetho tsa liteko tsa papiso.

  • Kill -9 ka ho qala bocha ka bobeli li atlehile.
  • Boholo ho disk. Borg e ka hatella, kahoo liphetho li lebeletsoe.

Backuper
boholo

borg
562GB

Thibela
628GB

  • Ka CPU
    Borg ka boeona e ja hanyane, ka khatello ea kamehla, empa e tlameha ho hlahlojoa hammoho le ts'ebetso ea goofys. Ka kakaretso, lia bapisoa 'me li sebelisa li-cores tse ka bang 1,2 mochining o tšoanang oa tlhahlobo.
  • Mohopolo. Restic e ka ba 0,5GB, Borg e batla e le 200MB. Empa sena sohle ha se letho ha se bapisoa le cache ea faele ea sistimi. Kahoo ho eletsoa ho abela memori e eketsehileng.
  • Phapang ea boholo ba blob e ne e hlolla.

Backuper
boholo

borg
hoo e ka bang 500MB

Thibela
hoo e ka bang 5MB

  • Phihlelo ea Restic's S3 e ntle haholo. Ho sebetsa le Borg ka li-goofys ha ho phahamise lipotso, empa ho hlokometsoe hore ho bohlokoa ho etsa umount ka mor'a hore bekapo e phetheloe ho hlophisa cache ka botlalo. Ntho e ikhethang ea S3 ke hore li-chunks tse tlase-tlase li ke ke tsa romelloa ka nkhong, ho bolelang hore data e sa tlatsoang ka botlalo e baka tšenyo e kholo.
  • Tlhahlobo ea botšepehi e sebetsa hantle maemong ao ka bobeli, empa lebelo le fapane haholo.
    Restic Lihora tsa 3,5.
    Borg, e nang le cache ea faele ea 100GB SSD - Lihora tsa 5.Hoo e ka bang sephetho se tšoanang sa lebelo haeba data e le disk ea lehae.
    Borg e bala ka kotloloho ho tsoa ho S3 ntle le cache Lihora tsa 33. E telele haholo.

Taba ea bohlokoa ke hore Borg e ka hatella 'me e na le li-blobs tse kholoanyane - e leng se etsang hore ts'ebetso ea polokelo le GET/PUT ho S3 e be theko e tlase. Empa sena se tla ka litšenyehelo tsa netefatso e rarahaneng le e liehang ho feta. Mabapi le lebelo la ho hlaphoheloa, ha rea ​​ka ra hlokomela phapang leha e le efe. Restic e nka li-backups tse latelang (kamora ea pele) nako e teletsana, empa eseng haholo.

Qetellong, khethong e ne e le boholo ba sechaba.

'Me re khetha borg.

Mantsoe a seng makae ka compression

Borg e na le algorithm e ncha e ntle ea compression sebakeng sa eona sa sesole - zstd. Boleng ba compression ha bo bobe ho feta gzip, empa bo potlakile haholo. E ka bapisoang ka lebelo le lz4 ea kamehla.

Mohlala, thotobolo ea database ea MySQL e hatelloa habeli ho feta lz4 ka lebelo le ts'oanang. Leha ho le joalo, phihlelo e nang le data ea sebele e bontša hore ho na le phapang e fokolang haholo ka tekanyo ea compression ea node ea Nextcloud.

Borg e na le mokhoa oa ho hatella oa bonase - haeba faele e na le entropy e phahameng, joale compression ha e sebelisoe ho hang, e leng ho eketsang lebelo. E nolofalitsoe ke khetho ha u theha
-C auto,zstd
bakeng sa algorithm ea zstd
Kahoo ka khetho ena, ha e bapisoa le compression ea kamehla, re na le eona
560Gb le 562Gb ka ho latellana. Lintlha tse tsoang mohlaleng o ka holimo, e-re ke u hopotse, ntle le ho hatella sephetho ke 628Gb. Sephetho sa phapang ea 2GB se ile sa re makatsa, empa re ne re nahana hore re tla e khetha. auto,zstd.

Mokhoa oa ho netefatsa bekapo

Ho ea ka kemiso, mochine oa sebele o qalisoa ka ho toba ho mofani kapa ho tsoa ho mofani, e leng ho fokotsang mojaro oa marang-rang haholo. Bonyane e theko e tlaase ho feta ho e phahamisa le ho khanna sephethephethe.

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/

Re sebelisa morero o tšoanang, re hlahloba lifaele ka antivirus (kamora 'nete). Ntle le moo, basebelisi ba kenya lintho tse fapaneng ho Nextcloud mme ha se motho e mong le e mong ea nang le antivirus. Ho etsa litlhahlobo ka nako ea ho tšela ho nka nako e ngata haholo mme ho sitisa khoebo.

Scalability e finyelloa ka ho matha limathi libakeng tse fapaneng tse nang le li-tag tse fapaneng.
Tekolo ea rona e bokella li-backups ka GitLab API ka fensetere e le 'ngoe; ha ho hlokahala, mathata a bonoa habonolo mme a fumaneha habonolo feela.

fihlela qeto e

Ka lebaka leo, re tseba hantle hore re etsa li-backups, hore li-backups tsa rona li nepahetse, mathata a hlahang ka bona a nka nako e nyane mme a rarolloa boemong ba mookameli oa mosebetsi. Li-backups li nka sebaka se senyenyane haholo ha se bapisoa le tar.gz kapa Bacula.

Source: www.habr.com

Eketsa ka tlhaloso