Mga tip ug limbong alang sa pagtrabaho kauban si Ceph sa mga busy nga proyekto

Mga tip ug limbong alang sa pagtrabaho kauban si Ceph sa mga busy nga proyekto

Gamit ang Ceph isip network storage sa mga proyekto nga lain-lain ang mga karga, mahimong makasugat kita og lain-laing mga buluhaton nga sa unang tan-aw morag dili yano o walay hinungdan. Pananglitan:

  • paglalin sa datos gikan sa daan nga Ceph ngadto sa bag-o nga adunay partial nga paggamit sa nangaging mga server sa bag-ong cluster;
  • solusyon sa problema sa disk space allocation sa Ceph.

Ang pag-atubang sa ingon nga mga problema, nag-atubang kami sa panginahanglan sa husto nga pagtangtang sa OSD nga dili mawala ang datos, nga labi ka hinungdanon kung mag-atubang sa daghang mga datos. Kini pagahisgotan sa artikulo.

Ang mga pamaagi nga gihulagway sa ubos adunay kalabotan sa bisan unsang bersyon sa Ceph. Dugang pa, ang kamatuoran nga ang Ceph makatipig sa daghang mga datos pagaisipon: aron malikayan ang pagkawala sa datos ug uban pang mga problema, ang pipila nga mga aksyon "mabahin" sa daghang uban pa.

Pasiuna bahin sa OSD

Tungod kay ang duha sa tulo ka mga resipe nga gihisgutan gipahinungod sa OSD (Daemon sa Pagtipig sa Bagay), sa dili pa mosalom sa praktikal nga bahin - sa makadiyot bahin sa kung unsa kini sa Ceph ug ngano nga kini hinungdanon kaayo.

Una sa tanan, kinahanglan isulti nga ang tibuuk nga cluster sa Ceph naglangkob sa daghang mga OSD. Mas daghan, mas dako ang libreng data volume sa Ceph. Sayon ra sabton gikan dinhi nag-unang OSD function: Gitipigan niini ang datos sa butang nga Ceph sa mga file system sa tanang cluster node ug naghatag ug access sa network niini (alang sa pagbasa, pagsulat, ug uban pang mga hangyo).

Sa parehas nga lebel, ang mga parameter sa pagkopya gitakda pinaagi sa pagkopya sa mga butang taliwala sa lainlaing mga OSD. Ug dinhi mahimo nimong masugatan ang lainlaing mga problema, ang mga solusyon nga hisgutan sa ubos.

Kaso No. 1. Luwas nga tangtangon ang OSD gikan sa Ceph cluster nga dili mawala ang datos

Ang panginahanglan sa pagtangtang sa OSD mahimong tungod sa pagtangtang sa server gikan sa cluster - alang sa panig-ingnan, sa pag-ilis niini uban sa lain nga server - nga mao ang nahitabo kanato, nga nagpatungha sa pagsulat niini nga artikulo. Busa, ang katapusang tumong sa pagmaniobra mao ang pagkuha sa tanang OSD ug mons sa usa ka server aron kini mapahunong.

Alang sa kasayon ​​​​ug aron malikayan ang usa ka sitwasyon diin, samtang nagpatuman sa mga sugo, masayop kami sa pagpaila sa gikinahanglan nga OSD, magbutang kami og lain nga variable, ang bili niini mao ang gidaghanon sa OSD nga pagatangtangon. Tawgon nato siya ${ID} β€” dinhi ug sa ubos, ang ingon nga variable nagpuli sa numero sa OSD diin kami nagtrabaho.

Atong tan-awon ang kondisyon sa dili pa magsugod sa trabaho:

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

Aron masugdan ang pagtangtang sa OSD, kinahanglan nimo nga hapsay nga himuon reweight sa kini ngadto sa zero. Niining paagiha atong mapakunhod ang gidaghanon sa datos sa OSD pinaagi sa pagbalanse niini ngadto sa ubang mga OSD. Aron mahimo kini, pagdagan ang mosunud nga mga mando:

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

... ug uban pa hangtod sa zero.

Gikinahanglan ang hapsay nga pagbalansepara dili mawala ang data. Tinuod kini ilabi na kung ang OSD adunay daghang mga datos. Aron masiguro nga pagkahuman sa pagpatuman sa mga mando reweight maayo ang tanan, makompleto nimo kini ceph -s o sa usa ka bulag nga terminal window run ceph -w aron maobserbahan ang mga pagbag-o sa tinuud nga oras.

Kung ang OSD "walay sulod", mahimo nimong ipadayon ang naandan nga operasyon aron makuha kini. Aron mahimo kini, ibalhin ang gusto nga OSD sa estado down:

ceph osd down osd.${ID}

Atong "ibira" ang OSD gikan sa cluster:

ceph osd out osd.${ID}

Atong hunongon ang serbisyo sa OSD ug i-unmount ang partition niini sa FS:

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

Kuhaa ang OSD gikan sa CRUSH nga mapa:

ceph osd crush remove osd.${ID}

Atong papason ang OSD user:

ceph auth del osd.${ID}

Ug sa katapusan, atong tangtangon ang OSD mismo:

ceph osd rm osd.${ID}

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Kung naggamit ka sa Ceph Luminous nga bersyon o mas taas, nan ang mga lakang sa pagtangtang sa OSD sa ibabaw mahimong mubu sa duha ka mga sugo:

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

Kung, pagkahuman makompleto ang mga lakang nga gihulagway sa ibabaw, gipadagan nimo ang mando ceph osd tree, nan kinahanglan nga tin-aw nga sa server diin gihimo ang trabaho wala nay mga OSD diin gihimo ang mga operasyon sa ibabaw:

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

Sa dalan, timan-i nga ang estado sa Ceph cluster moadto sa HEALTH_WARN, ug makita usab nato ang pagkunhod sa gidaghanon sa mga OSD ug ang gidaghanon sa anaa nga disk space.

Ang mosunod maghulagway sa mga lakang nga gikinahanglan kung gusto nimo nga hingpit nga hunongon ang server ug, sa ingon, kuhaa kini gikan sa Ceph. Sa kini nga kaso, hinungdanon nga hinumdoman kana Sa dili pa isira ang server, kinahanglan nimong tangtangon ang tanan nga OSD sa niini nga server.

Kung wala nay nahabilin nga mga OSD sa kini nga server, pagkahuman sa pagtangtang niini kinahanglan nimo nga dili iapil ang server gikan sa mapa sa OSD hv-2pinaagi sa pagpadagan sa mosunod nga sugo:

ceph osd crush rm hv-2

Pagwagtang mon gikan sa server hv-2pinaagi sa pagpadagan sa sugo sa ubos sa laing server (ie niini nga kaso, sa hv-1):

ceph-deploy mon destroy hv-2

Human niini, mahimo nimong hunongon ang server ug magsugod sa sunod nga mga aksyon (pag-deploy niini, ug uban pa).

Kaso No. 2. Pag-apod-apod sa disk space sa usa ka nahimo na nga cluster sa Ceph

Akong sugdan ang ikaduhang istorya sa pasiuna bahin sa PG (Mga Grupo sa Pagpahimutang). Ang nag-unang tahas sa PG sa Ceph mao ang panguna nga pagtipon sa mga butang sa Ceph ug dugang nga pagkopya niini sa OSD. Ang pormula diin imong makalkula ang gikinahanglan nga kantidad sa PG anaa may kalabutan nga seksyon Dokumentasyon ni Ceph. Kini nga isyu gihisgutan usab didto uban ang piho nga mga pananglitan.

Busa: usa sa kasagarang mga problema sa paggamit sa Ceph mao ang dili balanse nga gidaghanon sa OSD ug PG tali sa mga pool sa Ceph.

Una, tungod niini, ang usa ka sitwasyon mahimong motumaw kung daghang mga PG ang gipiho sa usa ka gamay nga pool, nga sa tinuud usa ka dili makatarunganon nga paggamit sa disk space sa cluster. Ikaduha, sa praktis adunay usa ka mas seryoso nga problema: data overflow sa usa sa mga OSDs. Naglangkob kini sa cluster una nga pagbalhin ngadto sa estado HEALTH_WARN, unya HEALTH_ERR. Ang hinungdan niini mao nga si Ceph, kung gikalkula ang magamit nga kantidad sa datos (mahimo nimo kini mahibal-an pinaagi sa MAX AVAIL sa command output ceph df alang sa matag pool nga gilain) gibase sa kantidad sa magamit nga datos sa OSD. Kung walay igo nga luna sa labing menos usa ka OSD, wala nay masulat nga datos hangtod nga ang datos hustong maapod-apod sa tanang OSD.

Kini mao ang bili sa pagpatin-aw nga kini nga mga problema kadaghanan nakahukom sa Ceph cluster configuration stage. Usa sa mga himan nga imong magamit mao ang Ceph PGCalc. Uban sa tabang niini, ang gikinahanglan nga kantidad sa PG klaro nga kalkulado. Bisan pa, mahimo usab nimo kini gamiton sa usa ka sitwasyon diin ang Ceph cluster na sayop nga gi-configure. Angayan nga ipatin-aw dinhi nga isip bahin sa trabaho sa pag-ayo lagmit kinahanglan nimo nga pakunhuran ang gidaghanon sa mga PG, ug kini nga bahin dili magamit sa mga daan nga bersyon sa Ceph (kini nagpakita lamang sa bersyon. Nautilus).

Busa, atong mahanduraw ang mosunod nga hulagway: ang cluster adunay status HEALTH_WARN tungod sa usa sa OSD nga nahutdan sa luna. Kini ipakita sa usa ka sayup HEALTH_WARN: 1 near full osd. Sa ubos mao ang usa ka algorithm aron makagawas gikan niini nga sitwasyon.

Una sa tanan, kinahanglan nimo nga iapod-apod ang magamit nga datos tali sa nahabilin nga mga OSD. Naghimo na kami og susama nga operasyon sa unang kaso, sa dihang "gi-drain" namo ang node - nga ang bugtong kalainan nga karon kinahanglan namong gamay nga pagkunhod reweight. Pananglitan, hangtod sa 0.95:

ceph osd reweight osd.${ID} 0.95

Gipagawas niini ang disk space sa OSD ug giayo ang sayup sa kahimsog sa ceph. Bisan pa, sama sa nahisgotan na, kini nga problema nag-una nga nahitabo tungod sa dili husto nga pag-configure sa Ceph sa una nga mga yugto: hinungdanon kaayo nga maghimo usa ka pagbag-o aron dili kini makita sa umaabot.

Sa among partikular nga kaso, ang tanan nahulog sa:

  • taas kaayo ang bili replication_count sa usa sa mga pool,
  • sobra ka PG sa usa ka pool ug gamay ra sa lain.

Gamiton nato ang nahisgotan na nga calculator. Kini tin-aw nga nagpakita kung unsa ang kinahanglan nga isulod ug, sa prinsipyo, walay bisan unsa nga komplikado. Sa pagtakda sa gikinahanglan nga mga parameter, atong makuha ang mosunod nga mga rekomendasyon:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Kung nag-set up ka og Ceph cluster gikan sa scratch, laing mapuslanong function sa calculator mao ang generation of commands nga maghimo og pools gikan sa scratch nga adunay mga parameter nga gitakda sa table.

Ang katapusan nga kolum makatabang kanimo sa pag-navigate - Gisugyot nga PG Count. Sa among kaso, ang ikaduha mapuslanon usab, diin gipakita ang parameter sa pagkopya, tungod kay nakahukom kami nga usbon ang multiplier sa pagkopya.

Mao nga, una kinahanglan nimo nga usbon ang mga parameter sa pagkopya - kini angay nga buhaton una, tungod kay pinaagi sa pagkunhod sa multiplier, mapahawa namon ang wanang sa disk. Samtang gipatuman ang mando, imong mamatikdan nga ang magamit nga espasyo sa disk modaghan:

ceph osd pool $pool_name set $replication_size

Ug pagkahuman sa pagkompleto niini, gibag-o namon ang mga kantidad sa parameter pg_num ΠΈ pgp_num ingon sa mosunod:

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

importante: kinahanglan natong usbon ang gidaghanon sa mga PG nga sunud-sunod sa matag pool ug dili usbon ang mga kantidad sa ubang mga pool hangtod mawala ang mga pasidaan "Nadaot nga data redundancy" ΠΈ "n-gidaghanon sa pgs nadaot".

Mahimo usab nimo susihon nga maayo ang tanan gamit ang mga output sa command ceph health detail ΠΈ ceph -s.

Kaso No. 3. Pagbalhin sa usa ka virtual nga makina gikan sa LVM ngadto sa Ceph RBD

Sa usa ka sitwasyon diin ang usa ka proyekto naggamit sa mga virtual nga makina nga na-install sa mga giabangan nga bare-metal server, ang isyu sa fault-tolerant storage kasagarang motumaw. Gitinguha usab nga adunay igo nga wanang sa kini nga pagtipig ... Laing komon nga sitwasyon: adunay usa ka virtual nga makina nga adunay lokal nga pagtipig sa server ug kinahanglan nimo nga palapdan ang disk, apan wala’y bisan diin nga moadto, tungod kay wala’y libre nga espasyo sa disk nga nahabilin sa server.

Ang problema mahimong masulbad sa lainlaing mga paagi - pananglitan, pinaagi sa pagbalhin sa lain nga server (kung adunay usa) o pagdugang bag-ong mga disk sa server. Apan dili kanunay posible nga buhaton kini, mao nga ang paglalin gikan sa LVM hangtod sa Ceph mahimong usa ka maayo kaayo nga solusyon sa kini nga problema. Pinaagi sa pagpili niini nga kapilian, gipasimple usab namo ang dugang nga proseso sa paglalin tali sa mga server, tungod kay dili na kinahanglan nga ibalhin ang lokal nga pagtipig gikan sa usa ka hypervisor ngadto sa lain. Ang bugtong catch mao nga kinahanglan nimo nga hunongon ang VM samtang ang trabaho gihimo.

Ang mosunod nga resipe gikuha gikan sa artikulo gikan niini nga blog, ang mga instruksyon nga gisulayan sa aksyon. By the way, ang pamaagi sa walay problema nga paglalin gihulagway usab didto, bisan pa niana, sa among kaso wala kini gikinahanglan, mao nga wala namo kini susihon. Kung kini hinungdanon alang sa imong proyekto, malipay kami nga makadungog bahin sa mga resulta sa mga komento.

Mopadayon kita sa praktikal nga bahin. Sa pananglitan atong gigamit ang virsh ug, sumala niana, libvirt. Una, siguroha nga ang Ceph pool diin ang data ibalhin konektado sa libvirt:

virsh pool-dumpxml $ceph_pool

Ang paghulagway sa pool kinahanglan nga adunay data sa koneksyon sa Ceph nga adunay data sa pagtugot.

Ang sunod nga lakang mao nga ang imahe sa LVM nakabig sa Ceph RBD. Ang oras sa pagpatuman nag-agad sa gidak-on sa imahe:

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

Pagkahuman sa pagkakabig, usa ka imahe sa LVM ang magpabilin, nga magamit kung mapakyas ang pagbalhin sa VM sa RBD ug kinahanglan nimo nga ibalik ang mga pagbag-o. Usab, aron dali nga mabalik ang mga pagbag-o, maghimo kita usa ka backup sa file sa pag-configure sa virtual machine:

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

... ug usba ang orihinal (vm_name.xml). Pangitaa ang usa ka bloke nga adunay usa ka paghulagway sa disk (nagsugod sa linya <disk type='file' device='disk'> ug matapos sa </disk>) ug ipaubos kini sa mosunod nga porma:

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

Atong tan-awon ang pipila ka mga detalye:

  1. Sa protocol source ang adres sa pagtipig sa Ceph RBD gipakita (kini ang adres nga nagpakita sa ngalan sa Ceph pool ug ang imahe sa RBD, nga gitino sa una nga yugto).
  2. Sa bloke secret tipo ang gipakita ceph, ingon man ang UUID sa sekreto sa pagkonektar niini. Ang uuid niini makit-an gamit ang command virsh secret-list.
  3. Sa bloke host Ang mga adres sa mga monitor sa Ceph gipakita.

Human ma-edit ang configuration file ug makompleto ang LVM ngadto sa RBD conversion, mahimo nimong i-apply ang giusab nga configuration file ug sugdan ang virtual machine:

virsh define $vm_name.xml
virsh start $vm_name

Panahon na aron susihon kung ang virtual nga makina nagsugod sa husto: mahimo nimong mahibal-an, pananglitan, pinaagi sa pagkonektar niini pinaagi sa SSH o pinaagi sa virsh.

Kung ang virtual nga makina nagtrabaho sa husto ug wala ka'y ​​nakit-an nga uban pang mga problema, mahimo nimong papason ang imahe sa LVM nga wala na gigamit:

lvremove main/$vm_image_name

konklusyon

Nasugatan namon ang tanan nga gihulagway nga mga kaso sa praktis - nanghinaut kami nga ang mga panudlo makatabang sa ubang mga administrador nga masulbad ang parehas nga mga problema. Kung naa kay komento o uban pang susama nga istorya gikan sa imong kasinatian sa paggamit sa Ceph, malipay kami nga makita kini sa mga komento!

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment