Mar a chuidicheas GitLab thu gus cùl-taic a dhèanamh de stòran mòra NextCloud

Hi Habr!

An-diugh tha mi airson bruidhinn mun eòlas againn ann a bhith ag fèin-ghluasad cùl-taic dàta mòr bho stòradh Nextcloud ann an diofar rèiteachaidhean. Bidh mi ag obair mar stèisean seirbheis aig Molniya AK, far am bi sinn a’ riaghladh rèiteachaidhean siostaman IT; Tha Nextcloud air a chleachdadh airson stòradh dàta. A’ gabhail a-steach, le structar sgaoilte, le call obrach.

Is e na duilgheadasan a tha ag èirigh bho fheartan an stàlaidh gu bheil tòrr dàta ann. Tha dreachan air a thoirt seachad le Nextcloud, call dreuchd, adhbharan cuspaireil, agus barrachd a’ cruthachadh mòran dhùblaidhean.

ro-eachdraidheil

Nuair a bhios tu a’ rianachd Nextcloud, tha an duilgheadas ann a bhith a’ cur air dòigh cùl-taic èifeachdach, a dh’ fheumar a chrioptachadh, leis gu bheil an dàta luachmhor.

Bidh sinn a’ tabhann roghainnean airson cùl-taic a stòradh nar n-àite no aig an luchd-ceannach air innealan air leth bho Nextcloud, a dh’ fheumas dòigh-obrach sùbailte fèin-ghluasadach a thaobh rianachd.

Tha mòran luchd-dèiligidh ann, iad uile le diofar rèiteachaidhean, agus iad uile air na làraichean aca fhèin agus leis na feartan aca fhèin. Is e dòigh àbhaisteach a tha seo nuair a bhuineas an làrach gu lèir leat, agus gu bheil cùl-taic air an dèanamh le crùin; chan eil e a’ freagairt gu math.

An toiseach, leig dhuinn sùil a thoirt air an dàta cuir a-steach. Feumaidh sinn:

  • Scalability a thaobh aon nód no grunn. Airson ionadan mòra bidh sinn a’ cleachdadh minio mar stòradh.
  • Faigh a-mach mu dhuilgheadasan le coileanadh cùl-taic.
  • Feumaidh tu cùl-taic a chumail leis an luchd-dèiligidh agad agus / no còmhla rinn.
  • Dèiligeadh ri duilgheadasan gu luath agus gu furasta.
  • Tha teachdaichean agus ionadan gu math eadar-dhealaichte bho chèile - chan urrainnear èideadh a choileanadh.
  • Bu chòir an astar ath-bheothachaidh a bhith cho beag ann an dà shuidheachadh: làn ath-bheothachadh (mòr-thubaist), aon phasgan air a dhubhadh às le mearachd.
  • Tha feum air gnìomh dùblachadh.

Mar a chuidicheas GitLab thu gus cùl-taic a dhèanamh de stòran mòra NextCloud

Gus fuasgladh fhaighinn air an duilgheadas a thaobh riaghladh cùl-taic, chuir sinn a-steach GitLab. Tuilleadh mion-fhiosrachaidh le teacsa.

Gu dearbh, chan e sinne a’ chiad fheadhainn a dh’ fhuasglas a leithid de dhuilgheadas, ach tha e coltach dhuinn gum faod ar n-eòlas practaigeach, cruaidh a bhith inntinneach agus tha sinn deiseil airson a roinn.

Leis gu bheil poileasaidh stòr fosgailte aig a’ chompanaidh againn, bha sinn a’ coimhead airson fuasgladh le còd fosgailte. An uair sin, bidh sinn a’ roinn ar leasachaidhean agus gan postadh. Mar eisimpleir, air GitHub tha ar plugan airson Nextcloud, a bheir sinn seachad do luchd-cleachdaidh, ag àrdachadh tèarainteachd dàta gun fhios nach tèid a dhubhadh às gun fhiosta no a dh’aona ghnothach.

Innealan cùl-taic

Thòisich sinn ar rannsachadh airson dòighean fuasglaidh le bhith a’ taghadh inneal cruthachaidh cùl-taic.

Chan eil tar + gzip cunbhalach ag obair gu math - tha an dàta air a dhùblachadh. Gu tric chan eil ach glè bheag de dh’ atharraichean ann an àrdachadh, agus tha mòran den dàta ann an aon fhaidhle air ath-aithris.
Tha duilgheadas eile ann - dìth stòradh dàta sgaoilte. Bidh sinn a’ cleachdadh minio agus gu bunaiteach tha an dàta aige gun fheum. No dh'fheumadh tu cùl-taic a dhèanamh tro minio fhèin - luchdaich e agus cleachd a h-uile beàrn eadar an siostam faidhle, agus, gun a bhith cho cudromach, tha cunnart ann gun dìochuimhnich thu cuid de bhucaid agus meata-fhiosrachadh. No cleachd dùblachadh.

Tha innealan cùl-taic le dùblachadh rim faighinn ann an stòr fosgailte (air Habré bha artaigilean mun chuspair seo) agus bha ar luchd-crìochnachaidh Borg и Restic. Tha ar coimeas eadar an dà iarrtas gu h-ìosal, ach airson a-nis innsidh sinn dhut mar a chuir sinn air dòigh an sgeama gu lèir.

A’ riaghladh cùl-taic

Tha Borg agus Restic math, ach chan eil uidheamachd smachd meadhanaichte aig toradh sam bith. Airson adhbhar riaghlaidh agus smachd, thagh sinn inneal a tha sinn air a chuir an gnìomh mar-thà, às aonais sin chan urrainn dhuinn smaoineachadh air ar n-obair, a’ toirt a-steach fèin-ghluasad - is e seo an CI / CD ainmeil - GitLab.

Tha am beachd mar a leanas: tha gitlab-runner air a chuir a-steach air gach nód a’ stòradh dàta Nextcloud. Bidh an ruitheadair a’ ruith sgriobt air clàr a bhios a’ cumail sùil air a’ phròiseas cùl-taic, agus bidh e a’ cur Borg no Restic air bhog.

Dè fhuair sinn? Fios air ais bho choileanadh, smachd goireasach air atharrachaidhean, mion-fhiosrachadh gun fhios nach bi mearachd ann.

an seo an seo air GitHub chuir sinn eisimpleirean den sgriobt airson diofar ghnìomhan, agus chrìochnaich sinn ga cheangal ri cùl-taic chan e a-mhàin Nextcloud, ach cuideachd mòran de sheirbheisean eile. Tha clàr-ama ann cuideachd mura h-eil thu airson a rèiteachadh le làimh (agus chan eil sinn ag iarraidh) agus .gitlab-ci.yml

Chan eil dòigh ann air an ùine CI/CD atharrachadh anns an Gitlab API fhathast, ach tha e beag. Feumar a mheudachadh, can gu 1d.

Faodaidh GitLab, gu fortanach, a chuir air bhog chan ann a-mhàin a rèir gealltanas, ach dìreach a rèir clàr-ama, is e seo dìreach a tha a dhìth oirnn.

A-nis mu dheidhinn an sgriobt wrapper.

Shuidhich sinn na cumhaichean a leanas airson an sgriobt seo:

  • Bu chòir dha a bhith air a chuir air bhog an dà chuid leis an ruitheadair agus le làimh bhon consol leis an aon ghnìomhachd.
  • Feumaidh luchd-làimhseachaidh mhearachdan a bhith ann:
  • còd tilleadh.
  • lorg sreang anns a’ chlàr. Mar eisimpleir, dhuinne faodaidh mearachd a bhith na theachdaireachd nach eil am prògram den bheachd gu bheil e marbhtach.
  • Ùine giollachd. Feumaidh an ùine stiùiridh a bhith reusanta.
  • Feumaidh sinn log gu math mionaideach. Ach a-mhàin ann an cùis mearachd.
  • Bithear a’ dèanamh grunn dheuchainnean cuideachd mus tòisich iad.
  • Bònasan beaga airson goireasachd a bha feumail dhuinn tron ​​phròiseas taic:
  • Tha toiseach is deireadh air an clàradh ann an syslog an inneil ionadail. Bidh seo a 'cuideachadh le bhith a' ceangal mhearachdan siostam agus obrachadh cùl-taic.
  • Tha pàirt den loga mearachd, ma tha gin ann, air a thoirt a-mach gu stdout, tha an log gu lèir air a sgrìobhadh gu faidhle air leth. Tha e goireasach coimhead sa bhad air CI agus measadh a dhèanamh air a’ mhearachd ma tha e beag.
  • Modhan dì-bhugachaidh.

Tha an log slàn air a shàbhaladh mar artifact ann an GitLab; mura h-eil mearachd ann, thèid an loga a dhubhadh às. Bidh sinn a’ sgrìobhadh an sgriobt ann am bash.

Bidh sinn toilichte beachdachadh air molaidhean agus beachdan sam bith a thaobh còd fosgailte - fàilte.

Ciamar a tha an obair seo

Thèid ruitheadair le neach-tiomnaidh Bash a chuir air bhog air an nód cùl-taic. A rèir an neach-clàraidh, tha obair CI / CD air a chuir air bhog ann an snèapan sònraichte. Bidh an ruitheadair a’ cur air bhog sgriobt clò-bhualaidh uile-choitcheann airson gnìomhan mar sin, bidh e a’ sgrùdadh dligheachd an stòr-glèidhidh, puingean sreap agus a h-uile dad a tha sinn ag iarraidh, agus an uairsin a’ cumail suas agus a’ glanadh an t-seann fhear. Thèid an cùl-taic crìochnaichte fhèin a chuir gu S3.

Bidh sinn ag obair a rèir an sgeama seo - is e solaraiche AWS taobh a-muigh a th ’ann no co-ionann Ruiseanach (tha e nas luaithe agus chan eil an dàta a’ fàgail Caidreachas na Ruis). No bidh sinn a’ stàladh brabhsair beag air leth don neach-dèiligidh air an làrach aige airson na h-adhbharan sin. Mar as trice bidh sinn a’ dèanamh seo airson adhbharan tèarainteachd, nuair nach eil an neach-dèiligidh ag iarraidh gum fàg an dàta an cuairteachadh aca idir.

Cha do chleachd sinn am feart de bhith a’ cur cùl-taic tro ssh. Cha chuir seo tèarainteachd ris, agus tha comasan lìonra an t-solaraiche S3 mòran nas àirde na an inneal aon ssh againn.

Gus an inneal ionadail agad a dhìon bho neach-tarraing, leis gun urrainn dha dàta a dhubhadh às air S3, feumaidh tu tionndadh a chomasachadh.
Bidh an cùl-taic an-còmhnaidh a’ cuairteachadh an cùl-taic.

Tha modh neo-chrioptaichte aig Borg none, ach chan eil sinn gu làidir a’ moladh tionndadh air. Anns a 'mhodh seo, chan e a-mhàin nach bi crioptachadh ann, ach chan eil an t-seic de na tha air a sgrìobhadh air a thomhas, a tha a' ciallachadh nach urrainnear ionracas a sgrùdadh ach gu neo-dhìreach, a 'cleachdadh clàran-amais.

Bidh clàr-ama fa leth a’ sgrùdadh cùl-taic airson ionracas chlàran-amais agus susbaint. Tha an t-seic slaodach agus fada, agus mar sin bidh sinn ga ruith air leth uair sa mhìos. Is dòcha gun toir e grunn làithean.

Readme ann an ruisis

Prìomh dhleastanasan

  • prepare ullachadh
  • testcheck sgrùdadh deiseil
  • maincommand sgioba bunaiteach
  • forcepostscript gnìomh a thèid a chur an gnìomh aig an deireadh no le mearachd. Bidh sinn ga chleachdadh gus an sgaradh a thoirt air falbh.

Feartan seirbheis

  • cleanup Bidh sinn a’ clàradh mhearachdan no a’ sguabadh às am faidhle log.
  • checklog parsadh an loga airson loidhne le mearachd a thachair.
  • ret neach-làimhseachaidh fàgail.
  • checktimeout thoir sùil airson ùine-ama.

àrainneachd

  • VERBOSE=1 Bidh sinn a’ taisbeanadh mhearachdan air an sgrion sa bhad (stdout).
  • SAVELOGSONSUCCES=1 sàbhail an loga air soirbheachas.
  • INIT_REPO_IF_NOT_EXIST=1 Cruthaich stòr-tasgaidh mura h-eil e ann. Cuir à comas gu bunaiteach.
  • TIMEOUT an ùine as motha airson a’ phrìomh obrachadh. Faodaidh tu a shuidheachadh mar 'm', 'h' no 'd' aig an deireadh.

Modh stòraidh airson seann leth-bhreacan. Ro-shealladh:

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

Atharraichean taobh a-staigh an sgriobt

  • ERROR_STRING - sreang airson an loga a-steach airson mearachd.
  • EXTRACT_ERROR_STRING - abairt airson sreang taisbeanaidh ma tha mearachd ann.
  • KILL_TIMEOUT_SIGNAL - comharra airson marbhadh ma tha an ùine seachad.
  • TAIL - cia mheud sreang le mearachdan air an sgrion.
  • COLORMSG - dath na teachdaireachd (buidhe àbhaisteach).

Tha ainm cumhach air an sgriobt sin, ris an canar wordpress, is e an cleas a th’ ann gu bheil e cuideachd a’ toirt taic don stòr-dàta mysql. Tha seo a’ ciallachadh gum faodar a chleachdadh airson ionadan aon-nòd Nexcloud, far an urrainn dhut cùl-taic a dhèanamh den stòr-dàta cuideachd. Is e an goireasachd chan e a-mhàin gu bheil a h-uile dad ann an aon àite, ach cuideachd gu bheil susbaint an stòr-dàta faisg air susbaint nam faidhlichean, leis gu bheil an eadar-dhealachadh ùine cho beag.

Restic vs Borg

Tha coimeasan ann cuideachd eadar Borg agus Restic an seo air Habré, agus cha b' e an obair a bh' againn ach fear eile a dheanamh, ach sinne fein. Bha e cudromach dhuinn mar a choimheadadh e air an dàta againn, le ar mion-fhiosrachadh. Bheir sinn iad.

Na slatan-tomhais taghaidh againn, a bharrachd air an fheadhainn a chaidh ainmeachadh roimhe (dùblachadh, faighinn seachad air luath, msaa):

  • A 'cur an aghaidh obair neo-chrìochnaichte. Thoir sùil airson marbhadh -9.
  • Meud air an diosg.
  • Riatanasan airson goireasan (CPU, cuimhne).
  • Meud nam bloban air an stòradh.
  • Ag obair le S3.
  • Sgrùdadh ionracas.

Airson deuchainn, ghabh sinn aon neach-dèiligidh le fìor dàta agus meud iomlan de 1,6 TB.
Cùmhnantan.

Chan eil fios aig Borg mar a dh'obraicheas e gu dìreach le S3, agus chuir sinn suas an diosg mar fiùs, via goofys. Chuir Restic e gu S3 fhèin.

Bidh Goofys ag obair gu math luath agus gu math, agus tha modal tasgadan diosc, a luathaicheas an obair eadhon nas motha. Tha e aig ìre beta, agus, gu fìrinneach, thuit sinn le call dàta rè deuchainnean (cuid eile). Ach is e an goireasachd nach fheum am modh cùl-taic fhèin mòran leughaidh, ach sgrìobhadh sa mhòr-chuid, agus mar sin bidh sinn a’ cleachdadh an tasgadan a-mhàin rè sgrùdaidhean ionracas.

Gus buaidh an lìonra a lùghdachadh, chleachd sinn solaraiche ionadail - Yandex Cloud.

Coimeas toraidhean deuchainn.

  • Bha Kill -9 le ath-thòiseachadh eile le chèile soirbheachail.
  • Meud air an diosg. Faodaidh Borg teannachadh, agus mar sin tha na toraidhean mar a bhiodh dùil.

Cùl-taic
meud

Borg
562Gb

Restic
628Gb

  • Air sgàth CPU
    Chan eil Borg fhèin ag ithe mòran, le teannachadh àbhaisteach, ach feumar a mheasadh còmhla ris a’ phròiseas goofys. Gu h-iomlan, tha iad coimeasach agus a’ cleachdadh timcheall air 1,2 cores air an aon inneal deuchainn mas-fhìor.
  • Cuimhne. Tha Restic timcheall air 0,5GB, tha Borg timcheall air 200MB. Ach tha seo uile glè bheag an taca ri tasgadan faidhle an t-siostaim. Mar sin tha e ciallach barrachd cuimhne a riarachadh.
  • Bha an eadar-dhealachadh ann am meud blob iongantach.

Cùl-taic
meud

Borg
mu 500MB

Restic
mu 5MB

  • Tha eòlas S3 Restic air leth math. Cha bhith a bhith ag obair le Borg tro goofys a’ togail cheistean sam bith, ach chaidh a thoirt fa-near gu bheil e ciallach umount a dhèanamh às deidh don chùl-taic a bhith deiseil gus an tasgadan ath-shuidheachadh gu tur. Is e cho sònraichte sa tha S3 nach tèid pìosan gun phumpadh gu bràth a chuir chun bhucaid, a tha a’ ciallachadh gu bheil dàta nach eil air a lìonadh gu tur a’ leantainn gu milleadh mòr.
  • Bidh an sgrùdadh ionracas ag obair gu math anns gach cùis, ach tha an astar gu math eadar-dhealaichte.
    Restic 3,5 uairean.
    Borg, le tasgadan faidhle SSD 100GB - 5 uairean.Approximately an aon toradh astar ma tha an dàta air diosg ionadail.
    Bidh Borg a’ leughadh gu dìreach o S3 gun tasgadan 33 uairean. Gu h-iongantach fada.

Is e an loidhne gu h-ìosal gum faod Borg teannachadh agus gu bheil bloban nas motha aige - a tha a’ dèanamh stòradh agus gnìomhachd GET/PUT ann an S3 nas saoire. Ach thig seo aig cosgais dearbhaidh nas iom-fhillte agus nas slaodaiche. A thaobh an astar ath-bheothachaidh, cha do mhothaich sinn diofar sam bith. Bidh Restic a ’toirt cùl-taic às deidh sin (às deidh a’ chiad) beagan nas fhaide, ach chan eil gu mòr.

Mu dheireadh ach chan e as lugha san taghadh bha meud na coimhearsnachd.

Agus thagh sinn borg.

Beagan fhaclan mu dheidhinn teannachadh

Tha algorithm teannachaidh ùr sàr-mhath aig Borg san arsenal aige - zstd. Chan eil càileachd teannachaidh nas miosa na gzip, ach fada nas luaithe. Agus an coimeas ri luaths ris an lz4 àbhaisteach.

Mar eisimpleir, tha dump stòr-dàta MySQL air a dhlùthadh dà uair nas fheàrr na lz4 aig an aon astar. Ach, tha eòlas le fìor dhàta a’ sealltainn nach eil ach glè bheag de dh’ eadar-dhealachadh ann an co-mheas teannachaidh an nód Nextcloud.

Tha modh teannachaidh caran bònas aig Borg - ma tha entropy àrd aig an fhaidhle, chan eil teannachadh air a chuir an sàs idir, a tha ag àrdachadh an astar. Air a chomasachadh le roghainn nuair a chruthaicheas tu
-C auto,zstd
airson an algairim zstd
Mar sin leis an roghainn seo, an taca ris an teannachadh bunaiteach, fhuair sinn
560Gb agus 562Gb fa leth. An dàta bhon eisimpleir gu h-àrd, leig dhomh do chuimhneachadh, gun teannachadh is e an toradh 628Gb. Chuir toradh eadar-dhealachadh 2GB iongnadh oirnn, ach bha sinn den bheachd gun taghadh sinn e às deidh a h-uile càil. auto,zstd.

Modh dearbhaidh cùl-taic

A rèir an clàr-ama, thèid an inneal brìgheil a chuir air bhog gu dìreach bhon t-solaraiche no bhon neach-dèiligidh, a lughdaicheas gu mòr an luchd lìonra. Co-dhiù tha e nas saoire na bhith ga thogail fhèin agus a’ draibheadh ​​trafaic.

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/

A 'cleachdadh an aon sgeama, bidh sinn a' sgrùdadh fhaidhlichean le antivirus (às deidh an fhìrinn). Às deidh na h-uile, bidh luchd-cleachdaidh a 'luchdachadh suas rudan eadar-dhealaichte gu Nextcloud agus chan eil antivirus aig a h-uile duine. Bidh a bhith a’ dèanamh sgrùdaidhean aig àm an dòrtadh a’ toirt cus ùine agus a’ cur bacadh air gnìomhachas.

Tha scalability air a choileanadh le bhith a’ ruith ruitheadairean air diofar nodan le tagaichean eadar-dhealaichte.
Bidh an sgrùdadh againn a’ cruinneachadh inbhean cùl-taic tro API GitLab ann an aon uinneag; ma tha sin riatanach, tha duilgheadasan air am mothachadh gu furasta agus a cheart cho furasta an àiteachadh.

co-dhùnadh

Mar thoradh air an sin, tha fios againn gu cinnteach gun dèan sinn cùl-taic, gu bheil na cùl-taic againn dligheach, nach toir na duilgheadasan a thig leotha mòran ùine agus gu bheil iad air am fuasgladh aig ìre an rianadair dleastanais. Chan eil cùl-taic a’ gabhail ach glè bheag de rùm an taca ri tar.gz no Bacula.

Source: www.habr.com

Cuir beachd ann