Konsèy ak ke trik nouvèl pou travay ak Ceph nan pwojè okipe

Konsèy ak ke trik nouvèl pou travay ak Ceph nan pwojè okipe

Sèvi ak Ceph kòm depo rezo nan pwojè ak chaj diferan, nou ka rankontre divès travay ki nan premye gade pa sanble senp oswa trivial. Pa egzanp:

  • migrasyon done ki soti nan ansyen Ceph nan yon nouvo ak itilizasyon pasyèl nan sèvè anvan yo nan nouvo gwoup la;
  • solisyon a pwoblèm nan alokasyon espas disk nan Ceph.

Fè fas ak pwoblèm sa yo, nou ap fè fas ak bezwen an kòrèkteman retire OSD la san yo pa pèdi done, ki se espesyalman enpòtan lè fè fas ak gwo kantite done. Sa a pral diskite nan atik la.

Metòd ki dekri anba yo enpòtan pou nenpòt vèsyon Ceph. Anplis de sa, lefèt ke Ceph ka estoke yon gwo kantite done yo pral pran an kont: yo anpeche pèt done ak lòt pwoblèm, kèk aksyon yo pral "fann" nan plizyè lòt.

Prefas sou OSD

Depi de nan twa resèt yo diskite yo dedye a OSD (Demon objè Depo), anvan ou plonje nan pati pratik la - yon ti tan sou sa li ye nan Ceph ak poukisa li tèlman enpòtan.

Premye a tout, li ta dwe di ke tout gwoup Ceph la konsiste de anpil OSD. Plis gen, se pi gwo volim done gratis nan Ceph. Li fasil pou konprann soti isit la prensipal fonksyon OSD: Li estoke done objè Ceph sou sistèm fichye tout nœuds gwoup yo epi li bay aksè rezo a (pou lekti, ekri, ak lòt demann).

Nan menm nivo, paramèt replikasyon yo tabli pa kopye objè ant diferan OSD. Ak isit la ou ka rankontre divès pwoblèm, solisyon yo ki pral diskite anba a.

Ka No 1. San danje retire OSD nan gwoup Ceph san pèdi done

Nesesite pou retire OSD a ka koze pa retire sèvè a nan gwoup la - pa egzanp, pou ranplase l' ak yon lòt sèvè - ki se sa ki te rive nou, ki te bay monte pou ekri atik sa a. Kidonk, objektif final la nan manipilasyon se ekstrè tout OSDs ak mons sou yon sèvè bay pou li ka sispann.

Pou konvenyans ak pou fè pou evite yon sitiyasyon kote, pandan y ap egzekite kòmandman, nou fè yon erè nan endike OSD ki nesesè a, nou pral mete yon varyab separe, ki valè a pral nimewo a nan OSD la yo dwe efase. Ann rele l ${ID} — isit la ak anba a, tankou yon varyab ranplase kantite OSD ak ki nou ap travay.

Ann gade nan kondisyon an anvan ou kòmanse travay:

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

Pou kòmanse retire OSD, w ap bezwen fè fèt san pwoblèm reweight sou li a zewo. Nan fason sa a nou redwi kantite done nan OSD a lè nou balanse li nan lòt OSD yo. Pou fè sa, kouri kòmandman sa yo:

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

... ak sou sa jiska zewo.

Lis balanse obligatwapou yo pa pèdi done yo. Sa a se laverite espesyalman si OSD a gen yon gwo kantite done. Pou asire w ke apre egzekite kòmandman yo reweight tout bagay ale byen, ou ka ranpli li ceph -s oswa nan yon fennèt tèminal separe kouri ceph -w yo nan lòd yo obsève chanjman an tan reyèl.

Lè OSD a "vide", ou ka kontinye ak operasyon estanda a pou retire li. Pou fè sa, transfere OSD vle a nan eta a down:

ceph osd down osd.${ID}

Ann "rale" OSD a soti nan gwoup la:

ceph osd out osd.${ID}

Ann sispann sèvis OSD la epi demonte patisyon li nan FS la:

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

Retire OSD nan KRAZE kat jeyografik:

ceph osd crush remove osd.${ID}

Ann efase itilizatè a OSD:

ceph auth del osd.${ID}

Epi finalman, ann retire OSD nan tèt li:

ceph osd rm osd.${ID}

Note: Si w ap itilize vèsyon Ceph Luminous oswa pi wo, Lè sa a, etap sa yo retire OSD ki anwo yo ka redwi a de kòmandman:

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

Si, apre w fin ranpli etap ki dekri pi wo a, ou kouri lòd la ceph osd tree, Lè sa a, li ta dwe klè ke sou sèvè a kote travay la te fèt pa gen okenn OSD ankò pou ki operasyon ki anwo yo te fèt:

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

Sou wout la, sonje ke eta a nan gwoup la Ceph pral ale nan HEALTH_WARN, epi nou pral wè tou yon diminisyon nan kantite OSD ak kantite espas ki disponib sou disk.

Sa ki anba la a pral dekri etap sa yo ki pral mande si ou vle konplètman sispann sèvè a epi, kòmsadwa, retire li nan Ceph. Nan ka sa a, li enpòtan sonje sa Anvan ou fèmen sèvè a, ou dwe retire tout OSD yo sou sèvè sa a.

Si pa gen okenn OSD plis kite sou sèvè sa a, Lè sa a, apre yo fin retire yo, ou bezwen eskli sèvè a nan kat OSD la. hv-2pa kouri lòd sa a:

ceph osd crush rm hv-2

Efase mon soti nan sèvè a hv-2pa kouri lòd ki anba a sou yon lòt sèvè (sa vle di nan ka sa a, sou hv-1):

ceph-deploy mon destroy hv-2

Apre sa, ou ka sispann sèvè a epi kòmanse aksyon ki vin apre (re-deplwaye li, elatriye).

Ka No 2. Distribisyon espas disk nan yon gwoup Ceph ki deja kreye

Mwen pral kòmanse dezyèm istwa a ak yon prefas sou PG (Gwoup Plasman). Wòl prensipal PG nan Ceph se sitou pou rasanble objè Ceph ak plis repwodui yo nan OSD. Fòmil la ak ki ou ka kalkile kantite lajan ki nesesè nan PG se nan seksyon ki enpòtan Dokiman Ceph. Pwoblèm sa a tou diskite la ak egzanp espesifik.

Se konsa: youn nan pwoblèm yo komen lè w ap itilize Ceph se kantite dezekilib OSD ak PG ant pisin nan Ceph.

Premyèman, poutèt sa, yon sitiyasyon ka rive lè yo espesifye twòp PG nan yon ti pisin, ki se esansyèlman yon itilizasyon irasyonèl nan espas disk nan gwoup la. Dezyèmman, nan pratik gen yon pwoblèm ki pi grav: done debòde nan youn nan OSD yo. Sa a enplike gwoup la premye tranzisyon nan eta a HEALTH_WARN, ak Lè sa a HEALTH_ERR. Rezon ki fè sa a se ke Ceph, lè w ap kalkile kantite done ki disponib (ou ka jwenn li pa MAX AVAIL nan pwodiksyon an kòmand ceph df pou chak pisin separeman) baze sou kantite done ki disponib nan OSD la. Si pa gen ase espas nan omwen yon OSD, yo pa ka ekri plis done jiskaske done yo byen distribye nan mitan tout OSD yo.

Li se vo klarifye ke pwoblèm sa yo yo lajman deside nan etap konfigirasyon gwoup Ceph la. Youn nan zouti ou ka itilize se Ceph PGCalc. Avèk èd li, kantite lajan ki nesesè nan PG yo kalkile klèman. Sepandan, ou ka tou resort nan li nan yon sitiyasyon kote gwoup la Ceph deja konfigirasyon mal. Li vo klarifye isit la ke kòm yon pati nan travay la ranje ou pral gen plis chans bezwen diminye kantite PGs, ak karakteristik sa a pa disponib nan vèsyon ki pi gran nan Ceph (li parèt sèlman nan vèsyon an). Notil).

Se konsa, an nou imajine foto sa a: gwoup la gen yon estati HEALTH_WARN akòz youn nan OSD a kouri soti nan espas. Sa a pral endike pa yon erè HEALTH_WARN: 1 near full osd. Anba a se yon algorithm pou soti nan sitiyasyon sa a.

Premye a tout, ou bezwen distribye done ki disponib ant OSD ki rete yo. Nou te deja fè yon operasyon menm jan an nan premye ka a, lè nou "vide" ne a - ak diferans lan sèlman ke kounye a nou pral bezwen yon ti kras diminye. reweight. Pou egzanp, jiska 0.95:

ceph osd reweight osd.${ID} 0.95

Sa a libere espas ki gen kapasite nan OSD la epi li korije erè a nan sante ceph. Sepandan, kòm deja mansyone, pwoblèm sa a sitou rive akòz konfigirasyon kòrèk nan Ceph nan premye etap yo: li trè enpòtan fè yon rekonfigirasyon pou li pa parèt nan lavni.

Nan ka patikilye nou an, tout bagay te vini nan:

  • valè twò wo replication_count nan youn nan pisin yo,
  • twòp PG nan yon pisin ak twò piti nan yon lòt.

Ann sèvi ak kalkilatris ki deja mansyone a. Li montre klèman sa ki bezwen antre epi, nan prensip, pa gen anyen konplike. Lè nou mete paramèt ki nesesè yo, nou jwenn rekòmandasyon sa yo:

Note: Si w ap mete yon gwoup Ceph nan grafouyen, yon lòt fonksyon itil nan kalkilatris la se jenerasyon an nan kòmandman ki pral kreye pisin nan grafouyen ak paramèt yo espesifye nan tablo a.

Dènye kolòn nan ede w navige - Konte PG sigjere. Nan ka nou an, dezyèm lan itil tou, kote paramèt replikasyon an endike, depi nou deside chanje miltiplikatè replikasyon an.

Se konsa, premye ou bezwen chanje paramèt replikasyon yo - sa a vo fè an premye, paske lè nou diminye miltiplikatè a, nou pral libere espas ki gen kapasite. Kòm lòd la egzekite, ou pral remake ke espas ki disponib nan disk ap ogmante:

ceph osd pool $pool_name set $replication_size

Epi apre fini li yo, nou chanje valè paramèt yo pg_num и pgp_num jan sa a:

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

Li enpòtan: nou dwe chanje kantite PG sekans nan chak pisin epi nou pa chanje valè yo nan lòt pisin jiskaske avètisman yo disparèt. "Degrade done redondance" и "n-kantite paj degrade".

Ou ka tcheke tou ke tout bagay ale byen lè l sèvi avèk rezilta yo lòd ceph health detail и ceph -s.

Ka No 3. Migrasyon yon machin vityèl soti nan LVM nan Ceph RBD

Nan yon sitiyasyon kote yon pwojè sèvi ak machin vityèl enstale sou lwe sèvè metal fè, pwoblèm nan nan depo toleran fay souvan rive. Li trè dezirab tou ke gen ase espas nan depo sa a... Yon lòt sitiyasyon komen: gen yon machin vityèl ak depo lokal sou sèvè a epi ou bezwen elaji disk la, men pa gen okenn kote yo ale, paske pa gen okenn. espas disk gratis ki rete sou sèvè a.

Pwoblèm nan ka rezoud nan diferan fason - pou egzanp, pa imigre nan yon lòt sèvè (si gen youn) oswa ajoute nouvo disk sou sèvè a. Men, li pa toujou posib fè sa, kidonk migrasyon soti nan LVM nan Ceph ka yon solisyon ekselan nan pwoblèm sa a. Lè w chwazi opsyon sa a, nou tou senplifye pwosesis la plis migrasyon ant sèvè, paske pa pral gen okenn bezwen deplase depo lokal soti nan yon hypervisor nan yon lòt. Sèl trape an se ke w ap oblije sispann VM a pandan y ap travay la ap fèt.

Se resèt sa a pran nan atik ki soti nan blog sa a, enstriksyon yo ki te teste an aksyon. By wout la, se metòd la nan migrasyon san pwoblèm tou dekri la, sepandan, nan ka nou an li te tou senpleman pa nesesè, kidonk nou pa t 'tcheke li. Si sa a enpòtan pou pwojè ou a, nou pral kontan tande sou rezilta yo nan kòmantè yo.

Ann ale nan pati pratik la. Nan egzanp lan nou itilize virsh ak, kòmsadwa, libvirt. Premyèman, asire w ke pisin Ceph kote done yo pral imigre konekte ak libvirt:

virsh pool-dumpxml $ceph_pool

Deskripsyon pisin lan dwe genyen done koneksyon ak Ceph ak done otorizasyon.

Pwochen etap la se ke imaj LVM konvèti nan Ceph RBD. Tan egzekisyon depann prensipalman sou gwosè a nan imaj la:

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

Apre konvèsyon an, yon imaj LVM ap rete, ki pral itil si migrasyon VM a nan RBD echwe epi ou oblije retounen chanjman yo. Epitou, pou kapab byen vit retounen chanjman yo, ann fè yon backup nan dosye konfigirasyon machin vityèl la:

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

... epi modifye orijinal la (vm_name.xml). Ann jwenn yon blòk ak yon deskripsyon disk la (kòmanse ak liy lan <disk type='file' device='disk'> epi fini ak </disk>) epi redwi li nan fòm sa a:

<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>

Ann gade kèk detay:

  1. Pou pwotokòl la source adrès depo a nan Ceph RBD endike (sa a se adrès ki endike non pisin Ceph la ak imaj RBD la, ki te detèmine nan premye etap la).
  2. Nan blòk la secret se kalite endike ceph, osi byen ke UUID sekrè a pou konekte avèk li. Uuid li yo ka jwenn lè l sèvi avèk kòmandman an virsh secret-list.
  3. Nan blòk la host yo endike adrès pou monitè Ceph yo.

Apre modifye fichye konfigirasyon an epi konplete konvèsyon LVM a RBD, ou ka aplike dosye konfigirasyon modifye a epi kòmanse machin vityèl la:

virsh define $vm_name.xml
virsh start $vm_name

Li lè yo tcheke machin vityèl la te kòmanse kòrèkteman: ou ka jwenn, pou egzanp, lè w konekte ak li atravè SSH oswa atravè virsh.

Si machin vityèl la ap travay kòrèkteman epi ou pa jwenn okenn lòt pwoblèm, Lè sa a, ou ka efase imaj LVM ki pa itilize ankò:

lvremove main/$vm_image_name

Konklizyon

Nou te rankontre tout ka ki dekri yo nan pratik - nou espere ke enstriksyon yo pral ede lòt administratè rezoud pwoblèm menm jan an. Si ou gen kòmantè oswa lòt istwa menm jan an nan eksperyans ou itilize Ceph, nou pral kontan wè yo nan kòmantè yo!

PS

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè