Ndewo, Habr!
Taa, achọrọ m ikwu banyere ahụmịhe anyị na ịmegharị ndabere nke nnukwu data sitere na nchekwa Nextcloud na nhazi dị iche iche. M na-arụ ọrụ dị ka ọdụ ọrụ na Molniya AK, ebe anyị na-eme nhazi nhazi nke usoro IT Nextcloud maka nchekwa data. Gụnyere, nke nwere usoro ekesa, yana redundancy.
Nsogbu ndị sitere na njirimara nke nrụnye bụ na enwere ọtụtụ data. Ntugharị nke Nextcloud wetara, redundancy, ihe gbasara onwe ya na ihe ndị ọzọ na-emepụta ọtụtụ oyiri.
prehistory
Mgbe ị na-elekọta Nextcloud, nsogbu nke ịhazi nkwado ndabere dị irè na-ebilite, nke a ghaghị ezoro ezo, ebe ọ bụ na data bara uru.
Anyị na-enye nhọrọ maka ịchekwa ndabere n'ebe anyị ma ọ bụ na ndị ahịa na igwe dị iche na Nextcloud, nke chọrọ mgbanwe na-akpaghị aka na usoro nchịkwa.
Enwere ọtụtụ ndị ahịa, ha niile nwere nhazi dị iche iche, na ha niile na saịtị nke ha yana njirimara nke ha. Nke a bụ usoro ọkọlọtọ mgbe saịtị ahụ dum bụ nke gị, na nkwado ndabere na mpaghara okpueze adịghị mma.
Mbụ, ka anyị leba anya na data ntinye. Anyị chọrọ:
- Scalability n'usoro nke otu ọnụ ma ọ bụ ọtụtụ. Maka nnukwu nrụnye anyị na-eji minio dị ka nchekwa.
- Chọpụta maka nsogbu na ịme nkwado ndabere.
- Ịkwesịrị idowe nkwado ndabere na mpaghara gị na ndị ahịa gị yana / ma ọ bụ anyị na ha.
- Nweta nsogbu ngwa ngwa na ngwa ngwa.
- Ndị ahịa na nrụnye dị nnọọ iche na ibe ha - enweghị ike nweta otu.
- Ọsọ mgbake kwesịrị ịdị ntakịrị na ọnọdụ abụọ: mgbake zuru oke (ọdachi), otu nchekwa ehichapụrụ site na mmejọ.
- Achọrọ ọrụ mwepu.

Iji dozie nsogbu nke ijikwa ndabere, anyị arụnyere GitLab. Nkọwa ndị ọzọ site na aka.
N'ezie, ọ bụghị anyị bụ ndị mbụ na-edozi nsogbu dị otú ahụ, ma ọ dị anyị ka ahụmahụ anyị bara uru na nke siri ike nweta nwere ike ịmasị anyị ma anyị dị njikere ịkọrọ ya.
Ebe ọ bụ na ụlọ ọrụ anyị nwere amụma isi mmalite, anyị nọ na-achọ ngwọta isi mmalite. N'aka nke ya, anyị na-ekerịta mmepe anyị ma bipute ha. Dịka ọmụmaatụ, na GitHub enwere , nke anyị na-enye ndị ahịa, na-eme ka nchekwa data dịkwuo mma ma ọ bụrụ na ihichapụ mberede ma ọ bụ kpachapụrụ anya.
Ngwa ndabere
Anyị malitere ịchọ ụzọ ngwọta anyị site n'ịhọrọ ihe ndabere e kere eke.
Tar + gzip mgbe niile anaghị arụ ọrụ nke ọma - emegharịrị data ahụ. Mmụba na-enwekarị mgbanwe ole na ole n'ezie, yana ọtụtụ data dị n'ime otu faịlụ na-emegharị ugboro ugboro.
Enwere nsogbu ọzọ - redundancy nke nchekwa data ekesa. Anyị na-eji minio na data ya bụ nke anaghị arụ ọrụ. Ma ọ bụ na ị ga-eme nkwado ndabere na mpaghara site na minio n'onwe ya - buo ya ma jiri ohere niile dị n'etiti usoro faịlụ ahụ, na, ọ dịghị ihe dị mkpa, enwere ike ichefu ụfọdụ bọket na meta-ozi. Ma ọ bụ jiri mwepu.
Ngwa nkwado nwere mpịaji dị na ebe mepere emepe (na Habré enwere ) na ndị ikpeazụ anyị bụ и . Ntụle anyị nke ngwa abụọ a dị n'okpuru, mana ugbu a, anyị ga-agwa gị otu anyị si hazie atụmatụ ahụ dum.
Ijikwa ndabere
Borg na Restic dị mma, mana ọ nweghị ngwaahịa nwere usoro njikwa etiti. Maka ebumnuche nke njikwa na njikwa, anyị ahọrọla ngwá ọrụ anyị mejupụtalarị, na-enweghị nke anyị enweghị ike iche n'echiche ọrụ anyị, gụnyere akpaaka - nke a bụ CI / CD a ma ama - GitLab.
Echiche a dị ka ndị a: a na-etinye gitlab-runner na oghere ọ bụla na-echekwa data Nextcloud. Onye na-agba ọsọ na-agba ọsọ edemede na nhazi oge nke na-enyocha usoro ndabere, ma malite Borg ma ọ bụ Restic.
Gịnị ka anyị nwetara? Nzaghachi sitere na mkpochapụ, njikwa dị mma maka mgbanwe, nkọwa ma ọ bụrụ na enwere njehie.
ebe a anyị biputere ihe atụ nke edemede maka ọrụ dị iche iche, anyị mechaa tinye ya na ndabere nke ọ bụghị naanị Nextcloud, kamakwa ọtụtụ ọrụ ndị ọzọ. Enwekwara onye nhazi oge ebe ahụ ma ọ bụrụ na ịchọghị iji aka hazie ya (ma anyị achọghị) na .gitlab-ci.yml
Enweghị ụzọ isi gbanwee oge CI/CD na Gitlab API, mana ọ dị obere. Ọ dị mkpa ka a mụbaa, sị ya 1d.
GitLab, ọ dabara nke ọma, nwere ike ịmalite ọ bụghị naanị dịka ntinye aka, mana naanị dịka usoro nhazi, nke a bụ ihe anyị chọrọ.
Ugbu a gbasara edemede wrapper.
Anyị debere ọnọdụ ndị a maka edemede a:
- Ekwesịrị ịmalite ya ma onye na-agba ọsọ yana aka site na njikwa nwere otu ọrụ ahụ.
- A ga-enwerịrị ndị njikwa njehie:
- koodu nloghachi.
- chọọ eriri na log. Dịka ọmụmaatụ, maka anyị, njehie nwere ike ịbụ ozi nke mmemme ahụ anaghị ewere na ọ dị ize ndụ.
- Na-ahazi oge nkwụsị. Oge ndu ga-abụrịrị ezi uche.
- Anyị chọrọ ndekọ ndekọ zuru oke. Mana naanị ma ọ bụrụ na enwere njehie.
- A na-emekwa ọtụtụ ule tupu ịmalite.
- Obere ego maka ịdị mma anyị hụrụ na ọ bara uru n'oge usoro nkwado:
- A na-edekọ mmalite na njedebe na syslog nke igwe mpaghara. Nke a na-enyere aka jikọọ njehie sistemu yana ọrụ ndabere.
- Akụkụ nke ndekọ njehie, ọ bụrụ na ọ bụla, na-emepụta na stdout, a na-ede akwụkwọ ndekọ dum na faịlụ dị iche. Ọ dị mma ilele CI ozugbo wee nyochaa njehie ahụ ma ọ bụrụ na ọ dị ntakịrị.
- Ụdị nbibi.
A na-echekwa ndekọ zuru ezu dị ka ihe arụrụ arụ na GitLab; Anyị na-ede script na bash.
Anyị ga-enwe obi ụtọ ịtụle aro na nkọwa ọ bụla gbasara isi mmalite - welcome.
Olee otú nke a na-arụ ọrụ
A na-ewepụta onye na-agba ọsọ nwere onye na-eme Bash na ọnụ nkwado ndabere. Dị ka onye nhazi oge si kwuo, ọrụ CI / CD na-amalite na ntụgharị pụrụ iche. Onye na-agba ọsọ na-ebupụta akwụkwọ mpịakọta zuru ụwa ọnụ maka ọrụ ndị dị otú ahụ, ọ na-enyocha ịdị irè nke ebe nchekwa nchekwa, ebe ugwu na ihe niile anyị chọrọ, wee kwadoo ma kpochapụ nke ochie. A na-eziga nkwado ndabere nke emechara n'onwe ya na S3.
Anyị na-arụ ọrụ dị ka atụmatụ a si dị - ọ bụ onye na-eweta AWS mpụga ma ọ bụ nke Russia (ọ na-adị ngwa ngwa na data anaghị ahapụ Russian Federation). Ma ọ bụ anyị wụnye ụyọkọ minio dị iche iche maka onye ahịa na saịtị ya maka ebumnuche ndị a. Anyị na-emekarị nke a maka ihe nchekwa, mgbe onye ahịa achọghị ka data ahụ hapụ sekit ha ma ọlị.
Anyị ejighị njirimara izipu ndabere site na ssh. Nke a anaghị agbakwunye nchekwa, yana ike netwọkụ nke onye na-eweta S3 dị elu karịa otu igwe ssh anyị.
Iji chebe igwe mpaghara gị n'aka onye na-agba ọsọ, ebe ọ nwere ike ihichapụ data na S3, ị ga-emerịrị nsụgharị.
Ndabere na-ezochi ndabere mgbe niile.
Borg nwere ọnọdụ ezoro ezo none, mana anyị anaghị akwado ịgbanye ya. Na ọnọdụ a, ọ bụghị naanị na a gaghị enwe ezoro ezo, mana a naghị agbakọ checksum nke ihe a na-ede, nke pụtara na a ga-enyocha iguzosi ike n'ezi ihe naanị n'ụzọ na-edoghị anya, na-eji index.
Onye nhazi nhazi dị iche na-enyocha nkwado ndabere maka izi ezi nke ndeksi na ọdịnaya. Nyocha ahụ na-adị nwayọọ ma dị ogologo, ya mere anyị na-agba ya iche iche otu ugboro n'ọnwa. Ọ nwere ike were ọtụtụ ụbọchị.
Gụọ na Russian
Ọrụ isi
prepareọzụzụtestchecknlele njikeremaincommandisi otuforcepostscriptọrụ a na-eme na njedebe ma ọ bụ site na njehie. Anyị na-eji ya ihichapụ nkebi ahụ.
Ọrụ ọrụ
cleanupAnyị na-edekọ njehie ma ọ bụ hichapụ faịlụ ndekọ.checklogtugharia ndekọ ahụ maka ọnọdụ ahịrị na njehie.retonye na-apụ apụ.checktimeoutlelee maka nkwụsị oge.
Environment
VERBOSE=1Anyị na-egosipụta njehie na ihuenyo ozugbo (stdout).SAVELOGSONSUCCES=1zọpụta log n'elu ihe ịga nke ọma.INIT_REPO_IF_NOT_EXIST=1Mepụta ebe nchekwa ma ọ bụrụ na ọ dịghị. Agbanyụrụ na ndabara.TIMEOUToge kachasị maka isi ọrụ. Ị nwere ike ịtọ ya ka 'm', 'h' ma ọ bụ 'd' na njedebe.
Ụdị nchekwa maka mbipụta ochie. Ebube:
KEEP_DAILY=7KEEP_WEEKLY=4KEEP_MONTHLY=6
Mgbanwe n'ime edemede ahụ
ERROR_STRING- eriri maka ndenye ndebanye aha maka njehie.EXTRACT_ERROR_STRING- okwu maka eriri ngosi ma ọ bụrụ na njehie.KILL_TIMEOUT_SIGNAL- mgbaàmà maka igbu mmadụ ma ọ bụrụ na oge agwụla.TAIL- ole eriri eriri nwere mperi na ihuenyo.COLORMSG- agba nke ozi (edo edo edo edo).
Edemede ahụ, nke a na-akpọ wordpress, nwere aha ọnọdụ, aghụghọ ya bụ na ọ na-akwadokwa nchekwa data mysql. Nke a pụtara na enwere ike iji ya maka nrụnye Nexcloud otu ọnụ, ebe ị nwekwara ike ịkwado nchekwa data. Ọ dị mma ọ bụghị naanị na ihe niile dị n'otu ebe, kamakwa ọdịnaya nke nchekwa data dị nso na ọdịnaya nke faịlụ, ebe ọ bụ na oge dị iche dị ntakịrị.
Restic vs Borg
Enwekwara ntụnyere n'etiti Borg na Restic , na anyị enweghị ọrụ nke ime naanị ọzọ, ma nke anyị. Ọ dị anyị mkpa ka ọ ga-esi lelee data anyị, yana nkọwa anyị. Anyị na-eweta ha.
Nhọpụta nhọrọ anyị, na mgbakwunye na nke a kpọtụrụ aha (mwepu, mgbake ngwa ngwa, wdg):
- Iguzogide ọrụ emechabeghị. Lelee maka igbu -9.
- Nha na diski.
- Ihe achọrọ maka akụrụngwa (CPU, ebe nchekwa).
- Ogo blobs echekwara.
- Na-arụ ọrụ na S3.
- Nyochaa iguzosi ike n'ezi ihe.
Maka nnwale, anyị were otu onye ahịa nwere ezigbo data yana mkpokọta 1,6 TB.
Usoro.
Borg amaghị otú e si arụ ọrụ ozugbo na S3, na anyị mounted disk dị ka a fuse, site . Restic zigara ya na S3 n'onwe ya.
Goofys na-arụ ọrụ ngwa ngwa na nke ọma, ma enwere , nke na-eme ka ọrụ ahụ dịkwuo ngwa ngwa. Ọ bụ na ọkwa beta, na, n'eziokwu, anyị dara na mfu data n'oge ule (ndị ọzọ). Mana ihe dị mma bụ na usoro ndabere n'onwe ya anaghị achọ ọtụtụ ọgụgụ, mana ọtụtụ n'ime ederede, yabụ anyị na-eji cache naanị n'oge nlele iguzosi ike n'ezi ihe.
Iji belata mmetụta nke netwọkụ, anyị na-eji onye na-eweta mpaghara - Yandex Cloud.
Nsonaazụ nyocha atụnyere.
- Gbuo -9 na ịmalitegharịa ọzọ nwere ihe ịga nke ọma.
- Nha na diski. Borg nwere ike mpikota onu, ya mere nsonaazụ ya dị ka a tụrụ anya ya.
Onye nkwado
size
Borg
562Gb
Ime Obodo
628Gb
- Site na CPU
Borg n'onwe ya na-eri obere ihe, yana mkpakọ ndabara, mana a ga-enyocha ya yana usoro goofys. Na mkpokọta, ha na-atụnyere ma jiri ihe dị ka cores 1,2 n'otu igwe mebere nnwale ahụ. - Ebe nchekwa. Restic bụ ihe dịka 0,5GB, Borg dị ihe dịka 200MB. Mana nke a bụ ihe na-abaghị uru ma e jiri ya tụnyere cache faịlụ sistemụ. Ya mere, ọ bụ ihe amamihe na-ekenye ọzọ ebe nchekwa.
- Ọdịiche dị na nha blob dị ịrịba ama.
Onye nkwado
size
Borg
ihe dịka 500MB
Ime Obodo
ihe dịka 5MB
- Ahụmahụ dị na Restic's S3 mara mma. Ịrụ ọrụ na Borg site na goofys anaghị ebute ajụjụ ọ bụla, ma ekwuru na ọ bụ ihe amamihe dị na ya ime umount mgbe nkwado ndabere na mpaghara zuru ezu iji tọgharịa cache kpamkpam. Ihe dị iche iche nke S3 bụ na agaghị eziga chunks ndị a na-agbapụtaghị na ịwụ ahụ, nke pụtara na data ezughị ezu na-eduga na nnukwu mmebi.
- Nlele iguzosi ike n'ezi ihe na-arụ ọrụ nke ọma n'ọnọdụ abụọ ahụ, mana ọsọ dị iche iche.
Restic Awa 3,5.
Borg, ya na nchekwa nchekwa 100GB SSD - Awa 5.Odika otu nsonaazụ ọsọ ọsọ ma ọ bụrụ na data dị na diski mpaghara.
Borg na-agụ ozugbo site na S3 na-enweghị cache Awa 33. Ogologo ogologo.
Isi ala bụ na Borg nwere ike ịpịkọta ma nwee nnukwu blobs - nke na-eme ka nchekwa na GET/PUT arụ ọrụ na S3 dị ọnụ ala. Mana nke a na-abịa na ọnụ ahịa nke nkwenye siri ike na nke dị nwayọ. Banyere ọsọ mgbake, anyị ahụghị ihe ọ bụla dị iche. Restic na-ewe nkwado ndabere na mpaghara (mgbe nke mbụ gasịrị) obere oge, mana ọ bụghị nke ukwuu.
N'ikpeazụ ma ọ dịghị ihe ọzọ na nhọrọ bụ nha obodo.
Na anyị họọrọ borg.
Okwu ole na ole gbasara mkpakọ
Borg nwere algọridim mkpakọ ọhụrụ dị mma na ngwa agha ya - zstd. Ogo mkpakọ adịghị njọ karịa gzip, mana ọ dị ngwa ngwa. Ma atụnyere na ọsọ na ndabara lz4.
Dịka ọmụmaatụ, a na-ejikọta MySQL nchekwa data ugboro abụọ karịa lz4 n'otu ọsọ ahụ. Agbanyeghị, ahụmịhe na ezigbo data na-egosi na enwere obere ihe dị iche na oke mkpakọ nke ọnụ Nextcloud.
Borg nwere ọnọdụ mkpakọ ego karịa - ọ bụrụ na faịlụ ahụ nwere nnukwu entropy, mgbe ahụ anaghị etinye mkpakọ ma ọlị, nke na-abawanye ọsọ. Kwanyere site na nhọrọ mgbe ị na-eke
-C auto,zstd
maka zstd algọridim
Yabụ na nhọrọ a, ma e jiri ya tụnyere mkpakọ ndabara, anyị nwetara
560Gb na 562Gb n'otu n'otu. Data sitere na ihe atụ dị n'elu, ka m chetara gị, na-enweghị mkpakọ, nsonaazụ ya bụ 628Gb. Nsonaazụ nke 2GB dị iche tụrụ anyị n'anya, mana anyị chere na anyị ga-ahọrọ ya ma emechaa. auto,zstd.
Usoro nkwenye ndabere
Dị ka onye nhazi oge si kwuo, a na-ewepụta igwe mebere ozugbo site na onye na-eweta ya ma ọ bụ site na onye ahịa, nke na-ebelata ibu netwọkụ nke ukwuu. Dịkarịa ala, ọ dị ọnụ ala karịa ibuli ya n'onwe gị na ịnya ụgbọ ala.
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/N'iji otu atụmatụ ahụ, anyị na-elele faịlụ na antivirus (mgbe eziokwu). E kwuwerị, ndị ọrụ na-ebugo ihe dị iche iche na Nextcloud na ọ bụghị onye ọ bụla nwere antivirus. Ime nyocha n'oge ịwụsa na-ewe oge buru ibu ma na-egbochi azụmahịa.
A na-enweta scalability site na ndị na-agba ọsọ na ọnụ ụzọ dị iche iche nwere mkpado dị iche iche.
Nleba anya anyị na-anakọta ọkwa ndabere site na GitLab API n'otu windo ma ọ bụrụ na ọ dị mkpa, a na-achọpụta nsogbu n'ụzọ dị mfe yana dịka ọ dị mfe.
nkwubi
N'ihi ya, anyị maara nke ọma na anyị na-eme nkwado ndabere na mpaghara, na nkwado ndabere anyị dị irè, nsogbu ndị na-ebute na ha na-ewe obere oge ma dozie ya na ọkwa nke onye nchịkwa ọrụ. Ndabere na-ewe obere ohere ma e jiri ya tụnyere tar.gz ma ọ bụ Bacula.
isi: www.habr.com
