Molaidhean is cleasan airson a bhith ag obair le Ceph ann am pròiseactan trang

Molaidhean is cleasan airson a bhith ag obair le Ceph ann am pròiseactan trang

A’ cleachdadh Ceph mar stòradh lìonra ann am pròiseactan le luchdan eadar-dhealaichte, is dòcha gun coinnich sinn ri diofar ghnìomhan nach eil a’ coimhead sìmplidh no beag. Mar eisimpleir:

  • imrich dàta bho sheann Ceph gu fear ùr le cleachdadh pàirt de na frithealaichean a bh’ ann roimhe sa bhuidheann ùr;
  • fuasgladh air an duilgheadas a thaobh riarachadh àite diosg ann an Ceph.

A 'dèiligeadh ri leithid de dhuilgheadasan, tha sinn mu choinneamh an fheum air an OSD a thoirt air falbh gu ceart gun a bhith a' call dàta, rud a tha gu sònraichte cudromach nuair a bhios sinn a 'dèiligeadh ri mòran dàta. Thèid seo a dheasbad san artaigil.

Tha na modhan a tha air am mìneachadh gu h-ìosal buntainneach airson dreach sam bith de Ceph. A bharrachd air an sin, thèid aire a thoirt don fhìrinn gun urrainn dha Ceph tòrr dàta a stòradh: gus casg a chuir air call dàta agus duilgheadasan eile, thèid cuid de ghnìomhan a “roinn” ann an grunnan eile.

Ro-ràdh mun OSD

Leis gu bheil dhà de na trì reasabaidhean air an deach beachdachadh coisrigte do OSD (Daemon Stòradh Rudan), mus dàibheadh ​​​​a-steach don phàirt phractaigeach - goirid mu dheidhinn dè a th’ ann an Ceph agus carson a tha e cho cudromach.

An toiseach, bu chòir a ràdh gu bheil mòran OSDs ann an cruinneachadh Ceph gu lèir. Mar as motha a tha ann, is ann as motha a tha an dàta an-asgaidh ann an Ceph. Tha e furasta a thuigsinn às an seo prìomh ghnìomh OSD: Bidh e a’ stòradh dàta Ceph object air siostaman faidhle a h-uile nod brabhsair agus a’ toirt cothrom lìonra dha (airson leughadh, sgrìobhadh, agus iarrtasan eile).

Aig an aon ìre, tha crìochan ath-riochdachadh air an suidheachadh le bhith a’ dèanamh lethbhreac de nithean eadar diofar OSD. Agus an seo faodaidh tu tighinn tarsainn air diofar dhuilgheadasan, na fuasglaidhean a thèid a dheasbad gu h-ìosal.

Cùis Àir. 1. Thoir air falbh OSD gu sàbhailte bho bhuidheann Ceph gun a bhith a’ call dàta

Dh’ fhaodadh an fheum air an OSD a thoirt air falbh a bhith air adhbhrachadh le bhith a’ toirt air falbh an fhrithealaiche bhon bhraisle - mar eisimpleir, gus frithealaiche eile a chuir na àite - is e sin a thachair dhuinn, ag adhbhrachadh sgrìobhadh an artaigil seo. Mar sin, is e an amas mu dheireadh airson làimhseachadh a h-uile OSD agus mons a thoirt a-mach air frithealaiche sònraichte gus an tèid stad a chuir air.

Airson goireasachd agus gus suidheachadh a sheachnadh far am bi sinn, fhad ‘s a tha sinn a’ coileanadh òrdughan, a ’dèanamh mearachd le bhith a’ comharrachadh an OSD a tha a dhìth, suidhichidh sinn caochladair air leth, agus is e luach an àireamh OSD a thèid a dhubhadh às. Canaidh sinn i ${ID} - an seo agus gu h-ìosal, tha an leithid de chaochladair a’ dol an àite àireamh an OSD leis a bheil sinn ag obair.

Bheir sinn sùil air an t-suidheachadh mus tòisich sinn air an obair:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.46857 root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
 1   ssd 0.15619      osd.1     up     1.00000  1.00000
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2     up     1.00000  1.00000

Gus toirt air falbh OSD a thòiseachadh, feumaidh tu coileanadh gu rèidh reweight air gu neoni. San dòigh seo bidh sinn a’ lughdachadh na tha de dhàta san OSD le bhith ga chothromachadh gu OSDan eile. Gus seo a dhèanamh, ruith na h-òrdughan a leanas:

ceph osd reweight osd.${ID} 0.98
ceph osd reweight osd.${ID} 0.88
ceph osd reweight osd.${ID} 0.78

... agus mar sin air adhart gu neoni.

Tha feum air cothromachadh rèidhgus nach caill thu dàta. Tha seo gu sònraichte fìor ma tha tòrr dàta anns an OSD. Gus dèanamh cinnteach às deidh na h-òrdughan a chuir an gnìomh reweight chaidh a h-uile càil gu math, faodaidh tu a chrìochnachadh ceph -s no ann an ruith uinneag crìochnachaidh air leth ceph -w gus atharrachaidhean fhaicinn ann an àm fìor.

Nuair a tha an OSD “falmhachadh”, faodaidh tu a dhol air adhart leis an obair àbhaisteach gus a thoirt air falbh. Gus seo a dhèanamh, gluais an OSD a tha thu ag iarraidh chun na stàite down:

ceph osd down osd.${ID}

Nach “tarraing sinn” an OSD a-mach às a’ bhuidheann:

ceph osd out osd.${ID}

Nach cuir sinn stad air an t-seirbheis OSD agus gun cuir sinn a-mach an sgaradh anns an FS:

systemctl stop ceph-osd@${ID}
umount /var/lib/ceph/osd/ceph-${ID}

Thoir air falbh OSD bho mapa CRUSH:

ceph osd crush remove osd.${ID}

Nach cuir sinn às don neach-cleachdaidh OSD:

ceph auth del osd.${ID}

Agus mu dheireadh, leig dhuinn an OSD fhèin a thoirt air falbh:

ceph osd rm osd.${ID}

thuirt: Ma tha thu a’ cleachdadh tionndadh Ceph Luminous no nas àirde, faodar na ceumannan toirt air falbh OSD gu h-àrd a lughdachadh gu dà àithne:

ceph osd out osd.${ID}
ceph osd purge osd.${ID}

Ma tha, às deidh dhut na ceumannan a chaidh a mhìneachadh gu h-àrd a chrìochnachadh, ruith thu an àithne ceph osd tree, an uairsin bu chòir dha a bhith soilleir nach eil OSDan air an fhrithealaiche far an deach an obair a dhèanamh airson an deach na h-obraichean gu h-àrd a choileanadh:

root@hv-1 ~ # ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF
-1       0.46857      root default
-3       0.15619      host hv-1
-5       0.15619      host hv-2
-7       0.15619      host hv-3
 2   ssd 0.15619      osd.2    up     1.00000  1.00000

Air an t-slighe, thoir an aire gum bi staid brais Ceph a 'dol gu HEALTH_WARN, agus chì sinn cuideachd lùghdachadh anns an àireamh de OSDn agus na tha de rùm diosg ri fhaighinn.

Bheir na leanas cunntas air na ceumannan a bhios a dhìth ma tha thu airson stad a chuir air an fhrithealaiche gu tur agus, mar sin, a thoirt air falbh bho Ceph. Anns a 'chùis seo, tha e cudromach cuimhneachadh air Mus dùin thu am frithealaiche, feumaidh tu a h-uile OSD a thoirt air falbh air an fhrithealaiche seo.

Mura h-eil barrachd OSDs air fhàgail air an fhrithealaiche seo, an dèidh dhut an toirt air falbh feumaidh tu am frithealaiche a chuir a-mach à mapa OSD hv-2le bhith a’ ruith an òrdugh a leanas:

ceph osd crush rm hv-2

Sguab às mon bhon fhrithealaiche hv-2le bhith a’ ruith an àithne gu h-ìosal air frithealaiche eile (ie sa chùis seo, air adhart hv-1):

ceph-deploy mon destroy hv-2

Às deidh seo, faodaidh tu stad a chuir air an fhrithealaiche agus tòiseachadh air gnìomhan às deidh sin (ath-chleachdadh e, msaa).

Cùis Àir. 2. Sgaoileadh àite diosc ann am buidheann Ceph a chaidh a chruthachadh mar-thà

Tòisichidh mi an dàrna sgeulachd le ro-ràdh mu PG (Buidhnean Greis Gnìomhachais). Is e prìomh dhleastanas PG ann an Ceph nithean Ceph a chruinneachadh agus an ath-riochdachadh ann an OSD. Tha am foirmle leis an urrainn dhut an tomhas de PG a tha a dhìth a thomhas a-staigh earrann iomchaidh Sgrìobhainnean ceph. Tha a’ chùis seo cuideachd air a dheasbad an sin le eisimpleirean sònraichte.

Mar sin: is e aon de na duilgheadasan cumanta nuair a bhios tu a’ cleachdadh Ceph an àireamh neo-chothromach de OSD agus PG eadar amaran ann an Ceph.

An toiseach, air sgàth seo, faodaidh suidheachadh èirigh nuair a tha cus PGn air an sònrachadh ann an amar beag, a tha gu ìre mhòr na chleachdadh neo-chùramach de dh’ àite diosc sa bhuidheann. San dàrna h-àite, ann an cleachdadh tha duilgheadas nas miosa ann: thar-shruth dàta ann an aon de na OSDn. Tha seo a’ ciallachadh gum bi a’ bhuidheann a’ gluasad chun na stàite an toiseach HEALTH_WARN, Agus an uairsin HEALTH_ERR. Is e an adhbhar airson seo gu bheil Ceph, nuair a bhios tu a’ tomhas na tha ri fhaighinn de dhàta (gheibh thu a-mach e le MAX AVAIL ann an toradh an àithne ceph df airson gach amar fa leth) stèidhichte air na tha de dhàta ri fhaighinn san OSD. Mura h-eil àite gu leòr ann an co-dhiù aon OSD, chan urrainnear barrachd dàta a sgrìobhadh gus an tèid an dàta a sgaoileadh gu ceart am measg gach OSD.

Is fhiach a shoilleireachadh gu bheil na duilgheadasan sin air an co-dhùnadh gu ìre mhòr aig ìre rèiteachaidh brabhsair Ceph. Is e aon de na h-innealan as urrainn dhut a chleachdadh Ceph PGCalc. Le a chuideachadh, tha an ìre riatanach de PG air a thomhas gu soilleir. Ach, faodaidh tu cuideachd tadhal air ann an suidheachadh far a bheil cruinneachadh Ceph mar-thà air a rèiteachadh gu ceàrr. Is fhiach a shoilleireachadh an seo gur dòcha gum feum thu, mar phàirt den obair rèiteachaidh, an àireamh de PGn a lughdachadh, agus chan eil am feart seo ri fhaighinn ann an dreachan nas sine de Ceph (cha do nochd e ach ann an dreach Nautilus).

Mar sin, smaoinichidh sinn air an dealbh a leanas: tha inbhe aig a’ bhuidheann HEALTH_WARN air sgàth aon de na OSD ruith a-mach à rùm. Thèid seo a chomharrachadh le mearachd HEALTH_WARN: 1 near full osd. Gu h-ìosal tha algorithm airson faighinn a-mach às an t-suidheachadh seo.

An toiseach, feumaidh tu an dàta a tha ri fhaighinn a sgaoileadh eadar na OSDs a tha air fhàgail. Rinn sinn obair coltach ris mar-thà anns a’ chiad chùis, nuair a rinn sinn “drèanadh” an nód - leis an aon eadar-dhealachadh gum feum sinn a-nis lughdachadh beagan reweight. Mar eisimpleir, suas gu 0.95:

ceph osd reweight osd.${ID} 0.95

Bidh seo a’ saoradh àite diosc san OSD agus a’ ceartachadh a’ mhearachd ann an slàinte ceph. Ach, mar a chaidh ainmeachadh roimhe, tha an duilgheadas seo gu ìre mhòr a 'tachairt air sgàth rèiteachadh ceàrr Ceph aig na h-ìrean tùsail: tha e glè chudromach ath-rèiteachadh a dhèanamh gus nach nochd e san àm ri teachd.

Anns a 'chùis shònraichte againn, thàinig e sìos gu:

  • luach ro àrd replication_count ann an aon de na lochan,
  • cus PG ann an aon amar agus ro bheag ann an amar eile.

Cleachdaidh sinn an àireamhair a chaidh ainmeachadh mar-thà. Tha e a 'sealltainn gu soilleir dè a dh'fheumar a chuir a-steach agus, ann am prionnsabal, chan eil dad iom-fhillte. Às deidh dhuinn na paramadairean riatanach a shuidheachadh, gheibh sinn na molaidhean a leanas:

thuirt: Ma tha thu a’ stèidheachadh cruinneachadh Ceph bhon fhìor thoiseach, is e gnìomh feumail eile den àireamhair gineadh òrdughan a chruthaicheas amaran bhon fhìor thoiseach leis na paramadairean a tha air an sònrachadh sa chlàr.

Cuidichidh an colbh mu dheireadh thu le bhith a’ seòladh - Cunntas PG air a mholadh. Anns a 'chùis againn, tha an dàrna fear feumail cuideachd, far a bheil am paramadair mac-samhail air a chomharrachadh, oir chuir sinn romhainn an iomadachadh mac-samhail atharrachadh.

Mar sin, an toiseach feumaidh tu na crìochan ath-riochdachadh atharrachadh - is fhiach seo a dhèanamh an toiseach, oir le bhith a’ lughdachadh an iomadachaidh, saoraidh sinn àite diosc. Mar a thèid an àithne a chuir an gnìomh, chì thu gun àrdaich an àite diosc a tha ri fhaighinn:

ceph osd pool $pool_name set $replication_size

Agus às deidh a chrìochnachadh, bidh sinn ag atharrachadh luachan paramadair pg_num и pgp_num mar a leanas:

ceph osd pool set $pool_name pg_num $pg_number
ceph osd pool set $pool_name pgp_num $pg_number

Cudromach: feumaidh sinn an àireamh de PGn atharrachadh ann an sreath anns gach amar agus gun a bhith ag atharrachadh na luachan ann an amaran eile gus an tèid na rabhaidhean à sealladh "Lùghdachadh dàta air a dhol à bith" и "n-àireamh phgs air a dhol sìos".

Faodaidh tu cuideachd dèanamh cinnteach gun deach a h-uile càil gu math le bhith a’ cleachdadh toraidhean an àithne ceph health detail и ceph -s.

Cùis Àir. 3. A’ gluasad inneal mas-fhìor bho LVM gu Ceph RBD

Ann an suidheachadh far a bheil pròiseact a’ cleachdadh innealan brìgheil air an cur a-steach air frithealaichean meatailt lom air màl, bidh ceist stòradh fulangach ri lochdan gu tric ag èirigh. Tha e cuideachd gu math ion-mhiannaichte gu bheil àite gu leòr anns an stòradh seo... Suidheachadh cumanta eile: tha inneal brìgheil ann le stòradh ionadail air an fhrithealaiche agus feumaidh tu an diosc a leudachadh, ach chan eil àite ann ri dhol, oir chan eil àite diosc an-asgaidh air fhàgail air an fhrithealaiche.

Faodar an duilgheadas fhuasgladh ann an diofar dhòighean - mar eisimpleir, le bhith a’ gluasad gu frithealaiche eile (ma tha fear ann) no a’ cur diosgan ùra ris an fhrithealaiche. Ach chan eil e an-còmhnaidh comasach seo a dhèanamh, agus mar sin faodaidh imrich bho LVM gu Ceph a bhith na fhìor fhuasgladh don duilgheadas seo. Le bhith a’ taghadh an roghainn seo, bidh sinn cuideachd a’ sìmpleachadh pròiseas imrich eadar frithealaichean, leis nach bi feum air stòradh ionadail a ghluasad bho aon hypervisor gu fear eile. Is e an aon ghlacadh gum feum thu stad a chuir air an VM fhad ‘s a tha an obair ga dhèanamh.

Tha an reasabaidh a leanas air a thoirt bho artaigil bhon bhlog seo, agus chaidh an stiùireadh a dhearbhadh ann an gnìomh. A bharrachd air an sin, tha an dòigh imrich gun duilgheadas air a mhìneachadh an sin cuideachd, ge-tà, anns a 'chùis againn cha robh feum air, agus mar sin cha do rinn sinn sgrùdadh air. Ma tha seo deatamach airson do phròiseact, bidh sinn toilichte cluinntinn mu na toraidhean anns na beachdan.

Gluaisidh sinn air adhart chun phàirt phractaigeach. Anns an eisimpleir bidh sinn a’ cleachdadh virsh agus, a rèir sin, libvirt. An toiseach, dèan cinnteach gu bheil an amar Ceph ris an tèid an dàta a ghluasad ceangailte ri libvirt:

virsh pool-dumpxml $ceph_pool

Feumaidh dàta ceangail ri Ceph a bhith ann an tuairisgeul an amar le dàta ceadachaidh.

Is e an ath cheum gum bi an ìomhaigh LVM air a thionndadh gu Ceph RBD. Tha an ùine cur gu bàs gu mòr an urra ri meud na h-ìomhaigh:

qemu-img convert -p -O rbd /dev/main/$vm_image_name rbd:$ceph_pool/$vm_image_name

Às deidh an tionndadh, fuirichidh ìomhaigh LVM, a bhios feumail ma dh’ fhailicheas imrich an VM gu RBD agus feumaidh tu na h-atharrachaidhean a thoirt air ais. Cuideachd, gus a bhith comasach air atharrachaidhean a thoirt air ais gu sgiobalta, dèanamaid cùl-taic den fhaidhle rèiteachaidh inneal brìgheil:

virsh dumpxml $vm_name > $vm_name.xml
cp $vm_name.xml $vm_name_backup.xml

... agus deasaich am fear tùsail (vm_name.xml). Lorgaidh sinn bloc le tuairisgeul air an diosc (a’ tòiseachadh leis an loidhne <disk type='file' device='disk'> agus a’ crìochnachadh le </disk>) agus lughdaich e chun an fhoirm a leanas:

<disk type='network' device='disk'>
<driver name='qemu'/>
<auth username='libvirt'>
  <secret type='ceph' uuid='sec-ret-uu-id'/>
 </auth>
<source protocol='rbd' name='$ceph_pool/$vm_image_name>
  <host name='10.0.0.1' port='6789'/>
  <host name='10.0.0.2' port='6789'/>
</source>
<target dev='vda' bus='virtio'/> 
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

Bheir sinn sùil air beagan mion-fhiosrachaidh:

  1. Chun a 'phròtacal source tha an seòladh chun stòradh ann an Ceph RBD air a chomharrachadh (is e seo an seòladh a tha a’ nochdadh ainm amar Ceph agus an ìomhaigh RBD, a chaidh a dhearbhadh aig a’ chiad ìre).
  2. Anns a ’bhloc secret seòrsa air a chomharrachadh ceph, a bharrachd air UUID an dìomhair gus ceangal a dhèanamh ris. Gheibhear a uuid leis an àithne virsh secret-list.
  3. Anns a ’bhloc host tha seòlaidhean gu sgrùdairean Ceph air an comharrachadh.

Às deidh dhut am faidhle rèiteachaidh a dheasachadh agus an tionndadh LVM gu RBD a chrìochnachadh, faodaidh tu am faidhle rèiteachaidh atharraichte a chuir an sàs agus an inneal brìgheil a thòiseachadh:

virsh define $vm_name.xml
virsh start $vm_name

Tha an t-àm ann dèanamh cinnteach gun do thòisich an inneal brìgheil gu ceart: gheibh thu a-mach, mar eisimpleir, le bhith a’ ceangal ris tro SSH no tro virsh.

Ma tha an inneal brìgheil ag obair gu ceart agus nach do lorg thu duilgheadas sam bith eile, faodaidh tu an ìomhaigh LVM nach eil air a chleachdadh tuilleadh a dhubhadh às:

lvremove main/$vm_image_name

co-dhùnadh

Thachair sinn ris a h-uile cùis a chaidh a mhìneachadh ann an cleachdadh - tha sinn an dòchas gun cuidich an stiùireadh luchd-rianachd eile gus fuasgladh fhaighinn air duilgheadasan coltach ris. Ma tha beachdan no sgeulachdan eile coltach ris bhon eòlas agad a’ cleachdadh Ceph, bidh sinn toilichte am faicinn anns na beachdan!

PS

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann