Pehea e kōkua ai ʻo GitLab iā ʻoe e hoʻopaʻa i nā waihona nui NextCloud

E Habr!

I kēia lā makemake wau e kamaʻilio e pili ana i kā mākou ʻike i ka hoʻopaʻa ʻana i ka ʻikepili nui mai Nextcloud storages i nā hoʻonohonoho like ʻole. Hana wau ma ke ʻano he kikowaena lawelawe ma Molniya AK, kahi mākou e hana ai i ka hoʻonohonoho hoʻonohonoho ʻana o nā ʻōnaehana IT; Hoʻohana ʻia ʻo Nextcloud no ka mālama ʻana i ka ʻikepili. Me, me kahi hoʻolālā mahele, me ka redundancy.

ʻO nā pilikia e puka mai ana mai nā hiʻohiʻona o nā mea hoʻonohonoho he nui ka ʻikepili. ʻO ka hoʻololi ʻana i hāʻawi ʻia e Nextcloud, redundancy, kumu kumu, a me nā mea hou aku e hana i nā kope he nui.

prehistory

I ka lawelawe ʻana iā Nextcloud, ua kū mai ka pilikia o ka hoʻonohonoho ʻana i kahi kākoʻo kūpono, pono e hoʻopili ʻia, no ka mea he waiwai ka ʻikepili.

Hāʻawi mākou i nā koho no ka mālama ʻana i nā backup ma ko mākou wahi a i ʻole ma ka mea kūʻai aku ma nā mīkini ʻokoʻa mai Nextcloud, kahi e koi ai i kahi ala maʻalahi i ka hoʻokele.

Nui nā mea kūʻai aku, ʻo lākou āpau me nā hoʻonohonoho like ʻole, a me nā mea āpau ma kā lākou mau pūnaewele ponoʻī a me kā lākou mau hiʻohiʻona. He ʻenehana maʻamau kēia inā iā ʻoe ka pūnaewele holoʻokoʻa, a ua hana ʻia nā waihona mai nā lei aliʻi; ʻaʻole kūpono ia.

ʻO ka mua, e nānā kākou i ka ʻikepili hoʻokomo. Pono mākou:

  • Scalability ma ke ʻano o hoʻokahi node a i ʻole. No nā hoʻokomo nui, hoʻohana mākou i ka minio e mālama ai.
  • E ʻike e pili ana i nā pilikia me ka hana ʻana i nā waihona.
  • Pono ʻoe e mālama i kahi waihona me kāu mau mea kūʻai aku a/a i ʻole me mākou.
  • E hoʻoponopono i nā pilikia me ka wikiwiki a me ka maʻalahi.
  • ʻOkoʻa loa nā mea kūʻai aku a me nā mea hoʻonohonoho - ʻaʻole hiki ke hoʻokō ʻia ke kūlike.
  • Pono e liʻiliʻi ka wikiwiki o ka hoʻihoʻi ʻana i nā hiʻohiʻona ʻelua: hoʻōla piha (pōʻino), hoʻokahi waihona i holoi ʻia me ka hewa.
  • Pono ka hana deduplication.

Pehea e kōkua ai ʻo GitLab iā ʻoe e hoʻopaʻa i nā waihona nui NextCloud

No ka hoʻoponopono i ka pilikia o ka mālama ʻana i nā backup, ua hoʻokomo mākou iā GitLab. Nā kikoʻī hou aʻe ma ke kāʻei.

ʻOiaʻiʻo, ʻaʻole mākou ka mea mua e hoʻoponopono i kēlā pilikia, akā me he mea lā iā mākou he mea hoihoi a mākaukau mākou e kaʻana like.

No ka mea he kulekele open source kā mākou hui, ke ʻimi nei mākou i kahi hopena open source. Ma ka huli ʻana, kaʻana like mākou i kā mākou hoʻomohala ʻana a kau aku iā lākou. No ka laʻana, aia ma GitHub kā mākou plugin no Nextcloud, ka mea a mākou e hāʻawi aku ai i nā mea kūʻai aku, e hoʻonui ana i ka palekana ʻikepili i ka wā o ka holoi ʻia ʻana a i ʻole ka manaʻo.

Mea paahana waihona

Hoʻomaka mākou i kā mākou ʻimi ʻana i nā ala hoʻonā ma ke koho ʻana i kahi mea hana hoʻihoʻi.

ʻAʻole hana maikaʻi ka tar + gzip maʻamau - ua kope ʻia ka ʻikepili. He liʻiliʻi loa nā loli maoli i ka hoʻonui ʻana, a ua hana hou ʻia ka nui o ka ʻikepili i loko o kahi faila.
Aia kekahi pilikia ʻē aʻe - ʻo ka redundancy o ka mālama ʻana i ka ʻikepili i puʻunaue ʻia. Hoʻohana mākou i ka minio a ʻoi aku ka nui o kāna ʻikepili. A i ʻole ʻoe e hana i kahi hoʻihoʻi ma o ka minio ponoʻī - e hoʻouka a hoʻohana i nā spacers āpau ma waena o ka ʻōnaehana faila, a, ʻaʻohe mea nui, aia ka pilikia o ka poina e pili ana i kekahi o nā bākeke a me ka ʻike-meta. A i ʻole e hoʻohana i ka deduplication.

Loaʻa nā mea hana hoʻihoʻi me ka kope ʻana ma ka open source (ma Habré aia nāʻatikala e pili ana i kēia kumuhana) a ʻo kā mākou mea hope loa ʻO Borg и Mea hoʻomaha. Aia ma lalo kā mākou hoʻohālikelike o nā noi ʻelua, akā i kēia manawa e haʻi mākou iā ʻoe pehea mākou i hoʻonohonoho ai i ka papahana holoʻokoʻa.

Mālama i nā waihona

Maikaʻi ʻo Borg a me Restic, akā ʻaʻohe huahana i loaʻa kahi ʻano mana kikowaena. No ke kumu o ka hoʻokele a me ka mana, ua koho mākou i kahi mea hana a mākou i hoʻokō ai, me ka ʻole o ka mea hiki ʻole iā mākou ke noʻonoʻo i kā mākou hana, me ka automation - ʻo ia ka CI / CD kaulana - GitLab.

Penei ka manaʻo: ua kau ʻia ʻo gitlab-runner ma kēlā me kēia node e mālama ana i ka ʻikepili Nextcloud. Holo ka mea holo i kahi palapala ma ka papa kuhikuhi e nānā i ke kaʻina hana hoʻihoʻi, a hoʻokuʻu iā Borg a i ʻole Restic.

He aha ka mea i loaʻa iā mākou? Manaʻo mai ka hoʻokō ʻana, ka mana kūpono i nā loli, nā kikoʻī inā he hewa.

ʻaneʻi maanei ma GitHub ua kau mākou i nā hiʻohiʻona o ka palapala no nā hana like ʻole, a ua hoʻopau mākou i ka hoʻopili ʻana iā ia i ke kākoʻo o Nextcloud wale nō, akā he nui nā lawelawe ʻē aʻe. Aia kekahi mea hoʻonohonoho ma laila inā ʻaʻole ʻoe makemake e hoʻonohonoho me ka lima (a ʻaʻole mākou makemake) a me .gitlab-ci.yml

ʻAʻohe ala e hoʻololi ai i ka manawa CI/CD i ka Gitlab API akā he liʻiliʻi. Pono e hoʻonui ʻia, e ʻōlelo 1d.

ʻO GitLab, ʻoi aku ka maikaʻi, hiki ke hoʻomaka ʻaʻole wale e like me kahi hana, akā e like me ka papa kuhikuhi, ʻo ia ka mea a mākou e pono ai.

I kēia manawa e pili ana i ka palapala wrapper.

Hoʻonoho mākou i kēia mau kūlana no kēia palapala:

  • Pono e hoʻokuʻu ʻia e ka mea holo a me ka lima mai ka console me ka hana like.
  • Pono nā mea hana hewa:
  • code hoʻihoʻi.
  • e ʻimi i kahi kaula ma ka lāʻau. No ka laʻana, no mākou he hewa paha he leka i manaʻo ʻole ʻia e ka papahana he make.
  • Hoʻopau manawa hana. Pono pono ka manawa alakaʻi.
  • Pono mākou i kahi log kikoʻī loa. Akā inā he hewa wale nō.
  • Hoʻokō ʻia kekahi mau hoʻokolohua ma mua o ka hoʻomaka ʻana.
  • ʻO nā bonus liʻiliʻi no ka maʻalahi a mākou i ʻike pono ai i ke kaʻina hana kākoʻo:
  • Hoʻopaʻa ʻia ka hoʻomaka a me ka hopena ma ka syslog o ka mīkini kūloko. Kōkua kēia i ka hoʻohui ʻana i nā hewa ʻōnaehana a me ka hana hoʻihoʻi.
  • ʻO kahi hapa o ka log error, inā loaʻa, ua hoʻopuka ʻia i stdout, ua kākau ʻia ka log holoʻokoʻa i kahi faila ʻokoʻa. He mea maʻalahi ke nānā koke iā CI a loiloi i ka hewa inā he mea liʻiliʻi.
  • Nā ʻano hana debug.

Mālama ʻia ka log piha ma ke ʻano he artifact ma GitLab; inā ʻaʻohe hewa, holoi ʻia ka log. Kākau mākou i ka palapala ma bash.

E hauʻoli mākou e noʻonoʻo i nā manaʻo a me nā manaʻo e pili ana i ka open source - welcome.

Pehea hana i keia hana

Hoʻokuʻu ʻia kahi mea holo me kahi Bash executor ma ka node backup. Wahi a ka mea hoʻonohonoho, hoʻomaka ʻia ka hana CI / CD i kahi turnip kūikawā. Hoʻopuka ka mea holo i kahi palapala hoʻopili āpau no ia mau hana, nānā ia i ka pono o ka waihona waihona, nā wahi mauna a me nā mea āpau a mākou e makemake ai, a laila hoʻihoʻi a hoʻomaʻemaʻe i ka mea kahiko. Hoʻouna ʻia ka waihona hoʻopau iā S3.

Ke hana nei mākou e like me kēia hoʻolālā - he mea hoʻolako AWS waho a i ʻole kahi like ʻo Rūsia (ʻoi aku ka wikiwiki a ʻaʻole haʻalele ka ʻikepili i ka Russian Federation). A i ʻole mākou e hoʻokomo i kahi hui minio ʻokoʻa no ka mea kūʻai aku ma kāna pūnaewele no kēia mau kumu. Hana mākou i kēia no nā kumu palekana, inā ʻaʻole makemake ka mea kūʻai aku i ka ʻikepili e haʻalele i kā lākou kaapuni.

ʻAʻole mākou i hoʻohana i ka hiʻohiʻona o ka hoʻouna ʻana i ka backup ma o ssh. ʻAʻole kēia e hoʻohui i ka palekana, a ʻoi aku ka kiʻekiʻe o ka ʻoihana pūnaewele o ka mea hoʻolako S3 ma mua o kā mākou mīkini ssh hoʻokahi.

I mea e pale ai i kāu mīkini kūloko mai kahi hacker, no ka mea hiki iā ia ke holoi i ka ʻikepili ma S3, pono ʻoe e hoʻololi i ka versioning.
Hoʻopili mau ka waihona i ka waihona.

He ʻano hoʻopunipuni ʻole ko Borg none, akā ʻaʻole ikaika mākou e hoʻohuli iā ia. Ma kēiaʻano,ʻaʻole wale ka hoʻopunipuni, akā,ʻaʻole i heluʻia ka checksum o nā mea i kākauʻia,ʻo ia hoʻi, hiki ke nānā ponoʻoleʻia ka pono, me ka hoʻohanaʻana i nā indexes.

Hoʻokaʻawale kahi mea hoʻonohonoho hoʻonohonoho i nā waihona no ka pololei o nā kuhikuhi a me nā ʻike. He lohi a lōʻihi ka helu, no laila e holo kaʻawale mākou i hoʻokahi mahina. He mau lā paha.

Readme ma ka ʻōlelo Lūkini

Nā hana nui

  • prepare hoʻomākaukau
  • testcheck mākaʻikaʻi mākaukau
  • maincommand hui kumu
  • forcepostscript he hana i hoʻokō ʻia ma ka hopena a i ʻole ma ka hewa. Hoʻohana mākou iā ia e wehe i ka pā.

Nā hana lawelawe

  • cleanup Hoʻopaʻa mākou i nā hewa a holoi paha i ka faila log.
  • checklog hoʻokaʻawale i ka log no ka loaʻa ʻana o kahi laina me kahi hewa.
  • ret mea hoʻopuka puka.
  • checktimeout e nānā no ka manawa pau.

'ia

  • VERBOSE=1 Hōʻike koke mākou i nā hewa ma ka pale (stdout).
  • SAVELOGSONSUCCES=1 mālama i ka log ma luna o ka holomua.
  • INIT_REPO_IF_NOT_EXIST=1 E hana i kahi waihona inā ʻaʻole. Hoʻopaʻa ʻia e ka paʻamau.
  • TIMEOUT manawa lōʻihi no ka hana nui. Hiki iā ʻoe ke hoʻonohonoho iā 'm', 'h' a i ʻole 'd' ma ka hopena.

Ke ʻano mālama no nā kope kahiko. Paʻamau:

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

Nā mea hoʻololi i loko o ka palapala

  • ERROR_STRING — ke kaula no ka helu helu helu no ka hewa.
  • EXTRACT_ERROR_STRING - ka ʻōlelo no ka hōʻike string inā hewa.
  • KILL_TIMEOUT_SIGNAL - hōʻailona no ka pepehi ʻana inā pau ka manawa.
  • TAIL — ehia mau kaula me ka hewa ma ka pale.
  • COLORMSG — kala o ka memo (paʻamau melemele).

ʻO kēlā palapala, i kapa ʻia ʻo wordpress, he inoa kūlana, ʻo kāna hoʻopunipuni ʻo ia hoʻi e hoʻihoʻi i ka waihona mysql. ʻO ia ke ʻano hiki ke hoʻohana ʻia no ka hoʻokomo ʻana o Nexcloud node hoʻokahi, kahi e hiki ai iā ʻoe ke hoʻihoʻi i ka waihona. ʻAʻole wale ka ʻoluʻolu o nā mea āpau ma kahi hoʻokahi, akā ʻo nā mea i loko o ka waihona e pili kokoke ana i nā mea o nā faila, ʻoiai he liʻiliʻi ka ʻokoʻa o ka manawa.

Restic vs Borg

Aia kekahi hoʻohālikelike ma waena o Borg a me Restic maanei ma Habré, a ʻaʻole i loaʻa iā mākou ka hana o ka hana ʻana i kahi ʻē aʻe, akā ʻo kā mākou ponoʻī. He mea nui ia iā mākou pehea e nānā ai i kā mākou ʻikepili, me kā mākou kikoʻī. Lawe mākou iā lākou.

ʻO kā mākou koho koho, ma kahi o nā mea i ʻōlelo ʻia (deduplication, hoʻihoʻi wikiwiki, etc.):

  • Ke kū'ē i ka hana i pauʻole. E nānā no ka pepehi -9.
  • Nui ma ka diski.
  • Pono no nā kumuwaiwai (CPU, hoʻomanaʻo).
  • Ka nui o nā ʻōpala i mālama ʻia.
  • Hana pū me S3.
  • Nānā pono.

No ka hoʻāʻo ʻana, lawe mākou i hoʻokahi mea kūʻai aku me ka ʻikepili maoli a me ka nui o 1,6 TB.
Nā kūlana.

ʻAʻole ʻike ʻo Borg i ka hana pololei me S3, a ua kau mākou i ka disk ma ke ʻano he fuse, ma o nā mea lapuwale. Ua hoʻouna ʻo Restic iā S3 ponoʻī.

Hana wikiwiki a maikaʻi ʻo Goofys, a aia nō kōmi hoʻokoe ʻokoʻa, ka mea e hooikaika nui ai i ka hana. Aia ia i ka pae beta, a, ʻoiaʻiʻo, ua hāʻule mākou me ka nalowale o ka ʻikepili i ka wā o nā hoʻokolohua (nā mea ʻē aʻe). Akā ʻo ka ʻoluʻolu, ʻo ke kaʻina hana hoʻihoʻi ponoʻī ʻaʻole makemake i ka heluhelu nui, akā ʻo ka hapa nui o ke kākau ʻana, no laila hoʻohana mākou i ka cache i ka wā o ka nānā pono ʻana.

No ka ho'ēmiʻana i ka mana o ka pūnaewele, ua hoʻohana mākou i kahi mea hoʻolako kūloko - Yandex Cloud.

Nā hualoaʻa hoʻohālikelike hoʻohālikelike.

  • Kill -9 me ka hoʻomaka hou ʻana ua kūleʻa ʻelua.
  • Nui ma ka diski. Hiki iā Borg ke hoʻopaʻa, no laila ua like nā hopena e like me ka mea i manaʻo ʻia.

Backuper
ka nui

ʻO Borg
562Gb

Mea hoʻomaha
628Gb

  • Ma ka CPU
    Hoʻopau liʻiliʻi ʻo Borg ponoʻī, me ka hoʻopili paʻamau, akā pono e loiloi pū ʻia me ke kaʻina goofys. Ma ka huina, hoʻohālikelike lākou a hoʻohana ma kahi o 1,2 cores ma ka mīkini virtual hoʻāʻo like.
  • Hoʻomanaʻo. ʻO ka hoʻomaha ma kahi o 0,5GB, ʻo Borg ma kahi o 200MB. Akā, he mea ʻole kēia i ka hoʻohālikelike ʻana i ka cache file system. No laila, pono e hoʻokaʻawale i ka hoʻomanaʻo hou aku.
  • ʻIke ʻia ka ʻokoʻa o ka nui o ka blob.

Backuper
ka nui

ʻO Borg
ma kahi o 500MB

Mea hoʻomaha
ma kahi o 5MB

  • Maikaʻi ka ʻike me Restic's S3. ʻO ka hana pū me Borg ma o goofys ʻaʻole ia e hoʻāla i kekahi nīnau, akā ua ʻike ʻia he mea pono e hana i ka umount ma hope o ka pau ʻana o ka waihona e hoʻonohonoho hou i ka cache. ʻO ka hiʻohiʻona o S3, ʻaʻole e hoʻouna ʻia nā ʻāpana ma lalo o ka paila i ka bākeke, ʻo ia hoʻi, ʻo ka hoʻopiha piha ʻole ʻana o ka ʻikepili e alakaʻi i ka pōʻino nui.
  • Hana maikaʻi ka nānā pono i nā hihia ʻelua, akā ʻokoʻa ka wikiwiki.
    Hoʻomaha Nā hola 3,5.
    Borg, me kahi waihona waihona 100GB SSD - Nā hola 5.E like me ka hopena o ka wikiwiki inā aia ka ʻikepili ma kahi diski kūloko.
    Heluhelu pololei ʻo Borg mai S3 me ka ʻole kahi huna Nā hola 33. He lōʻihi loa.

ʻO ka laina lalo, hiki iā Borg ke hoʻopaʻa a loaʻa iā ia nā blobs nui aʻe - e ʻoi aku ka maʻalahi o ka mālama ʻana a me ka hana GET/PUT ma S3. Akā hiki mai kēia ma ke kumukūʻai o ka hōʻoia ʻoi aku ka paʻakikī a me ka lohi. No ka wikiwiki o ka hoʻihoʻi ʻana, ʻaʻole mākou i ʻike i kahi ʻokoʻa. Lawe ʻo Restic i nā hoʻihoʻi ma hope (ma hope o ka mua) i kahi manawa lōʻihi, akā ʻaʻole nui.

ʻO ka mea hope akā ʻaʻole ka mea liʻiliʻi loa i ka koho ʻana ʻo ka nui o ke kaiāulu.

A koho mākou i ka borg.

ʻO kekahi mau huaʻōlelo e pili ana i ka hoʻopili

Loaʻa iā Borg kahi algorithm compression hou maikaʻi loa i kāna arsenal - zstd. ʻAʻole ʻoi aku ka maikaʻi o ka paʻi ma mua o ka gzip, akā ʻoi aku ka wikiwiki. A hoʻohālikelike i ka wikiwiki me ka lz4 paʻamau.

No ka laʻana, ua hoʻopaʻa ʻia kahi waihona waihona MySQL i ʻelua manawa ʻoi aku ka maikaʻi ma mua o lz4 ma ka wikiwiki like. Eia naʻe, hōʻike ka ʻike me ka ʻikepili maoli he liʻiliʻi loa ka ʻokoʻa i ka ratio hoʻoemi o ka node Nextcloud.

Loaʻa iā Borg kahi mode compression bonus maikaʻi loa - inā he entropy kiʻekiʻe ka faila, a laila ʻaʻole i hoʻopili ʻia ka compression, e hoʻonui ai i ka wikiwiki. Hoʻohana ʻia e ke koho i ka wā e hana ai
-C auto,zstd
no ka zstd algorithm
No laila me kēia koho, i ka hoʻohālikelike ʻana me ka hoʻoemi paʻamau, ua loaʻa iā mākou
560Gb a me 562Gb pakahi. ʻO ka ʻikepili mai ka laʻana ma luna, e hoʻomanaʻo wau iā ʻoe, me ka ʻole o ka hoʻopā ʻana i ka hopena he 628Gb. ʻO ka hopena o kahi ʻokoʻa 2GB ua kāhāhā mākou, akā manaʻo mākou e koho mākou ma hope o nā mea āpau. auto,zstd.

ʻano hōʻoia hoʻihoʻi

Wahi a ka mea hoʻonohonoho, hoʻokuʻu pololei ʻia ka mīkini virtual mai ka mea hoʻolako a i ʻole mai ka mea kūʻai aku, e hōʻemi nui ana i ka ukana pūnaewele. ʻOi aku ka liʻiliʻi ma mua o ka hoʻoulu ʻana iā ʻoe iho a me ka hoʻokele kaʻa.

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/

Ke hoʻohana nei i ka hoʻolālā like, nānā mākou i nā faila me kahi antivirus (ma hope o ka ʻoiaʻiʻo). Ma hope o nā mea a pau, hoʻouka nā mea hoʻohana i nā mea like ʻole i Nextcloud a ʻaʻole i loaʻa i kēlā me kēia mea he antivirus. ʻO ka mālama ʻana i ka nānā ʻana i ka manawa o ka ninini ʻana i ka manawa nui a keakea i ka ʻoihana.

Loaʻa ka Scalability ma ka holo ʻana i nā mea holo ma nā node like ʻole me nā hōʻailona like ʻole.
ʻO kā mākou nānā ʻana e hōʻiliʻili i nā kūlana hoʻihoʻi ma o ka GitLab API i hoʻokahi puka makani; inā pono, ʻike maʻalahi nā pilikia a e like me ka maʻalahi o ka localized.

hopena

ʻO ka hopena, ʻike maopopo mākou ua hana mākou i nā waihona, ua kūpono kā mākou waihona, nā pilikia e kū mai ana me lākou e liʻiliʻi ka manawa a ua hoʻoholo ʻia ma ke kiʻekiʻe o ka luna dute. He wahi liʻiliʻi loa ka waihona i hoʻohālikelike ʻia me tar.gz a i ʻole Bacula.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka