Suġġerimenti u tricks biex taħdem ma' Ceph fi proġetti impenjattivi

Suġġerimenti u tricks biex taħdem ma' Ceph fi proġetti impenjattivi

Meta tuża Ceph bħala ħażna tan-netwerk fi proġetti b'tagħbijiet differenti, nistgħu niltaqgħu ma 'diversi kompiti li mal-ewwel daqqa t'għajn ma jidhrux sempliċi jew trivjali. Pereżempju:

  • migrazzjoni tad-dejta minn Ceph l-antik għal waħda ġdida b'użu parzjali ta 'servers preċedenti fil-cluster il-ġdid;
  • soluzzjoni għall-problema tal-allokazzjoni tal-ispazju tad-disk f'Ceph.

Nittrattaw problemi bħal dawn, aħna qed iħabbtu wiċċna mal-ħtieġa li tneħħi b'mod korrett l-OSD mingħajr ma nitilfu d-dejta, li hija speċjalment importanti meta nittrattaw ammonti kbar ta 'dejta. Dan se jiġi diskuss fl-artiklu.

Il-metodi deskritti hawn taħt huma rilevanti għal kwalunkwe verżjoni ta' Ceph. Barra minn hekk, se jitqies il-fatt li Ceph jista 'jaħżen ammont kbir ta' dejta: biex jiġi evitat it-telf tad-dejta u problemi oħra, xi azzjonijiet se "jinqasmu" f'diversi oħrajn.

Prefazju dwar l-OSD

Peress li tnejn mit-tliet riċetti diskussi huma ddedikati għall-OSD (Oġġett Ħażna Daemon), qabel ma tgħaddas fil-parti prattika - fil-qosor dwar x'inhu f'Ceph u għaliex huwa daqshekk importanti.

L-ewwelnett, għandu jingħad li l-cluster Ceph kollu jikkonsisti f'ħafna OSDs. Iktar ma jkun hemm, iktar ikun kbir il-volum tad-dejta b'xejn f'Ceph. Huwa faċli li tifhem minn hawn funzjoni ewlenija tal-OSD: Taħżen id-dejta tal-oġġett Ceph fuq is-sistemi tal-fajls tan-nodi kollha tal-clusters u tipprovdi aċċess għan-netwerk għaliha (għall-qari, il-kitba, u talbiet oħra).

Fl-istess livell, il-parametri tar-replikazzjoni huma stabbiliti billi jiġu kkupjati oġġetti bejn OSDs differenti. U hawn tista 'tiltaqa' ma 'diversi problemi, li s-soluzzjonijiet għalihom se jiġu diskussi hawn taħt.

Każ Nru 1. Neħħi l-OSD minn Ceph cluster mingħajr ma titlef id-dejta

Il-ħtieġa li jitneħħa l-OSD tista 'tkun ikkawżata billi s-server jitneħħa mill-cluster - pereżempju, biex jiġi sostitwit b'server ieħor - li huwa dak li ġara lilna, li ta lok għall-kitba ta' dan l-artikolu. Għalhekk, l-għan aħħari tal-manipulazzjoni huwa li jiġu estratti l-OSDs u l-mons kollha fuq server partikolari sabiex ikun jista 'jitwaqqaf.

Għall-konvenjenza u biex tiġi evitata sitwazzjoni fejn, waqt li nwettqu kmandi, nagħmlu żball meta nindikaw l-OSD meħtieġ, aħna nissettjaw varjabbli separata, li l-valur tagħha jkun in-numru tal-OSD li għandu jitħassar. Ejja nsejħulha ${ID} — hawn u hawn taħt, tali varjabbli tissostitwixxi n-numru tal-OSD li qed naħdmu miegħu.

Ejja nħarsu lejn il-kundizzjoni qabel ma nibdew ix-xogħol:

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

Biex tibda t-tneħħija tal-OSD, ser ikollok bżonn twettaq bla xkiel reweight fuqha għal żero. B'dan il-mod innaqqsu l-ammont ta 'dejta fl-OSD billi nibbilanċjawha ma' OSDs oħra. Biex tagħmel dan, mexxi l-kmandi li ġejjin:

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

... u hekk sa żero.

Ibbilanċjar bla xkiel meħtieġsabiex ma titlef id-data. Dan hu veru speċjalment jekk l-OSD ikun fih ammont kbir ta’ dejta. Biex tiżgura li wara li tesegwixxi l-kmandi reweight kollox mar tajjeb, tista 'tlestiha ceph -s jew f'tieqa tat-terminal separata ceph -w sabiex josservaw il-bidliet f'ħin reali.

Meta l-OSD jitbattal, tista 'tipproċedi bl-operazzjoni standard biex tneħħiha. Biex tagħmel dan, ittrasferixxi l-OSD mixtieq lill-istat down:

ceph osd down osd.${ID}

Ejja "ġbid" l-OSD mill-cluster:

ceph osd out osd.${ID}

Ejja nwaqqfu s-servizz OSD u nneħħu l-partizzjoni tiegħu fl-FS:

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

Neħħi l-OSD minn Mappa CRUSH:

ceph osd crush remove osd.${ID}

Ejja nħassru l-utent tal-OSD:

ceph auth del osd.${ID}

U fl-aħħarnett, ejja neħħi l-OSD innifsu:

ceph osd rm osd.${ID}

Innota: Jekk qed tuża Ceph Luminous verżjoni jew ogħla, allura l-passi tat-tneħħija tal-OSD ta 'hawn fuq jistgħu jitnaqqsu għal żewġ kmandi:

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

Jekk, wara li tlesti l-passi deskritti hawn fuq, tmexxi l-kmand ceph osd tree, allura għandu jkun ċar li fuq is-server fejn sar ix-xogħol m'għadx hemm OSDs li għalihom twettqu l-operazzjonijiet ta 'hawn fuq:

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

Tul it-triq, innota li l-istat tal-cluster Ceph se jmur HEALTH_WARN, u se naraw ukoll tnaqqis fin-numru ta 'OSDs u l-ammont ta' spazju disponibbli fuq id-diska.

Dan li ġej se jiddeskrivi l-passi li se jkunu meħtieġa jekk trid twaqqaf kompletament is-server u, għaldaqstant, tneħħih minn Ceph. F'dan il-każ, huwa importanti li tiftakar li Qabel ma tagħlaq is-server, trid tneħħi l-OSDs kollha fuq dan is-server.

Jekk ma jibqax aktar OSDs fuq dan is-server, imbagħad wara li tneħħihom trid teskludi s-server mill-mappa OSD hv-2billi tħaddem il-kmand li ġej:

ceph osd crush rm hv-2

Ħassar mon mis-server hv-2billi tħaddem il-kmand hawn taħt fuq server ieħor (jiġifieri f'dan il-każ, fuq hv-1):

ceph-deploy mon destroy hv-2

Wara dan, tista 'twaqqaf is-server u tibda azzjonijiet sussegwenti (skjerament mill-ġdid, eċċ.).

Każ Nru 2. Distribuzzjoni ta 'spazju tad-diska fi cluster Ceph diġà maħluq

Nibda t-tieni storja bi prefazju dwar PG (Gruppi ta' Pjazzament). Ir-rwol ewlieni ta 'PG f'Ceph huwa primarjament li jaggrega oġġetti Ceph u jirreplikahom aktar f'OSD. Il-formula li biha tista' tikkalkula l-ammont meħtieġ ta' PG tinsab fiha sezzjoni rilevanti Dokumentazzjoni Ceph. Din il-kwistjoni hija diskussa wkoll hemmhekk b'eżempji speċifiċi.

Allura: waħda mill-problemi komuni meta tuża Ceph hija n-numru żbilanċjat ta 'OSD u PG bejn pools f'Ceph.

L-ewwelnett, minħabba dan, tista 'tqum sitwazzjoni meta jkunu speċifikati wisq PGs f'ġabra żgħira, li essenzjalment huwa użu irrazzjonali tal-ispazju tad-disk fil-cluster. It-tieni, fil-prattika hemm problema aktar serja: id-data overflow f'wieħed mill-OSDs. Dan jinvolvi l-cluster l-ewwel transizzjoni għall-istat HEALTH_WARN, imbagħad HEALTH_ERR. Ir-raġuni għal dan hija li Ceph, meta tikkalkula l-ammont disponibbli ta 'dejta (tista' ssibha billi MAX AVAIL fl-output tal-kmand ceph df għal kull pool separatament) hija bbażata fuq l-ammont ta’ data disponibbli fl-OSD. Jekk ma jkunx hemm biżżejjed spazju f'mill-inqas OSD wieħed, ma tistax tinkiteb aktar dejta sakemm id-dejta titqassam sew fost l-OSDs kollha.

Ta 'min iċċara li dawn il-problemi huma fil-biċċa l-kbira deċiżi fl-istadju tal-konfigurazzjoni tal-cluster Ceph. Waħda mill-għodod li tista 'tuża hija Ceph PGCalc. Bl-għajnuna tagħha, l-ammont meħtieġ ta 'PG huwa kkalkulat b'mod ċar. Madankollu, tista 'wkoll tirrikorri għaliha f'sitwazzjoni fejn il-grupp Ceph diġà ikkonfigurat ħażin. Ta' min niċċara hawnhekk li bħala parti mix-xogħol ta' tiswija x'aktarx ikollok bżonn tnaqqas in-numru ta' PGs, u din il-karatteristika mhix disponibbli f'verżjonijiet eqdem ta' Ceph (deher biss fil-verżjoni Nautilus).

Allura, ejja nimmaġinaw l-istampa li ġejja: il-cluster għandu status HEALTH_WARN minħabba li wieħed mill-OSD jispiċċa bla spazju. Dan ikun indikat bi żball HEALTH_WARN: 1 near full osd. Hawn taħt hemm algoritmu biex toħroġ minn din is-sitwazzjoni.

L-ewwelnett, għandek bżonn tqassam id-dejta disponibbli bejn l-OSDs li jifdal. Aħna diġà għamilna operazzjoni simili fl-ewwel każ, meta aħna "xxotta" n-nodu - bl-unika differenza li issa ser ikollna nnaqqsu ftit reweight. Pereżempju, sa 0.95:

ceph osd reweight osd.${ID} 0.95

Dan jillibera spazju tad-diska fl-OSD u jiffissa l-iżball fis-saħħa ceph. Madankollu, kif diġà ssemma, din il-problema sseħħ prinċipalment minħabba konfigurazzjoni mhux korretta ta 'Ceph fl-istadji inizjali: huwa importanti ħafna li ssir rikonfigurazzjoni sabiex ma tidhirx fil-futur.

Fil-każ partikolari tagħna, kollox niżel għal:

  • valur għoli wisq replication_count f'wieħed mill-pixxini,
  • wisq PG f’pool u ftit wisq f’ohra.

Ejja nużaw il-kalkolatur diġà msemmi. Juri biċ-ċar dak li jeħtieġ li jiddaħħal u, fil-prinċipju, m'hemm xejn ikkumplikat. Wara li ssettja l-parametri meħtieġa, aħna jkollna r-rakkomandazzjonijiet li ġejjin:

Innota: Jekk qed twaqqaf cluster Ceph mill-bidu, funzjoni utli oħra tal-kalkolatur hija l-ġenerazzjoni ta 'kmandi li se joħolqu pools mill-bidu bil-parametri speċifikati fit-tabella.

L-aħħar kolonna tgħinek tinnaviga - Għadd PG suġġerit. Fil-każ tagħna, it-tieni wieħed huwa utli wkoll, fejn il-parametru tar-replikazzjoni huwa indikat, peress li ddeċidejna li nibdlu l-multiplikatur tar-replikazzjoni.

Allura, l-ewwel għandek bżonn tibdel il-parametri tar-replikazzjoni - dan ta 'min jagħmel l-ewwel, peress li billi tnaqqas il-multiplikatur, aħna se nilliberaw spazju fuq id-diska. Hekk kif tesegwixxi l-kmand, tinduna li l-ispazju tad-diska disponibbli se jiżdied:

ceph osd pool $pool_name set $replication_size

U wara t-tlestija tiegħu, nibdlu l-valuri tal-parametri pg_num и pgp_num kif ġej:

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

Huwa importanti: irridu nibdlu n-numru ta 'PGs sekwenzjali f'kull pool u ma nbiddlux il-valuri f'pools oħra sakemm jisparixxu t-twissijiet "Redundancy tad-dejta degradata" и "n-numru ta' pgs degradati".

Tista 'wkoll tiċċekkja li kollox mar tajjeb billi tuża l-outputs tal-kmand ceph health detail и ceph -s.

Każ Nru 3. Migrazzjoni ta 'magna virtwali minn LVM għal Ceph RBD

F'sitwazzjoni fejn proġett juża magni virtwali installati fuq servers bare-metal mikrija, ħafna drabi tqum il-kwistjoni tal-ħażna li tollera l-ħsarat. Huwa wkoll mixtieq ħafna li jkun hemm biżżejjed spazju f'din il-ħażna... Sitwazzjoni komuni oħra: hemm magna virtwali b'ħażna lokali fuq is-server u għandek bżonn tespandi d-diska, iżda m'hemm imkien fejn tmur, għax m'hemmx spazju ħieles disk fadal fuq is-server.

Il-problema tista 'tiġi solvuta b'modi differenti - pereżempju, billi temigra għal server ieħor (jekk hemm wieħed) jew billi żżid diski ġodda mas-server. Iżda mhux dejjem ikun possibbli li tagħmel dan, għalhekk il-migrazzjoni minn LVM għal Ceph tista 'tkun soluzzjoni eċċellenti għal din il-problema. Billi nagħżlu din l-għażla, nissimplifikaw ukoll il-proċess ulterjuri ta 'migrazzjoni bejn is-servers, peress li mhux se jkun hemm bżonn li ċċaqlaq il-ħażna lokali minn hypervisor għal ieħor. L-unika qabda hija li jkollok twaqqaf il-VM waqt li jkun qed isir ix-xogħol.

Ir-riċetta li ġejja hija meħuda minn artiklu minn dan il-blog, li l-istruzzjonijiet tagħhom ġew ittestjati fl-azzjoni. Mill-mod, il-metodu ta 'migrazzjoni bla tbatija huwa deskritt hemm ukoll, madankollu, fil-każ tagħna sempliċement ma kienx meħtieġ, għalhekk ma ċċekkjajniex. Jekk dan huwa kritiku għall-proġett tiegħek, aħna nkunu ferħanin li nisimgħu dwar ir-riżultati fil-kummenti.

Ejja ngħaddu għall-parti prattika. Fl-eżempju nużaw virsh u, għaldaqstant, libvirt. L-ewwel, kun żgur li l-grupp Ceph li għalih id-dejta se tiġi emigrata huwa konness ma 'libvirt:

virsh pool-dumpxml $ceph_pool

Id-deskrizzjoni tal-grupp għandu jkun fiha dejta tal-konnessjoni ma’ Ceph b’dejta tal-awtorizzazzjoni.

Il-pass li jmiss huwa li l-immaġni LVM tiġi kkonvertita għal Ceph RBD. Il-ħin tal-eżekuzzjoni jiddependi primarjament fuq id-daqs tal-immaġni:

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

Wara l-konverżjoni, se tibqa 'immaġni LVM, li tkun utli jekk il-migrazzjoni tal-VM għal RBD tfalli u trid tirreġġa' lura l-bidliet. Barra minn hekk, biex tkun tista 'tneħħi malajr il-bidliet, ejja nagħmlu backup tal-fajl tal-konfigurazzjoni tal-magna virtwali:

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

... u editja l-oriġinal (vm_name.xml). Ejja nsibu blokk b'deskrizzjoni tad-diska (jibda bil-linja <disk type='file' device='disk'> u tispiċċa bi </disk>) u naqqasha għall-forma li ġejja:

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

Ejja nħarsu lejn xi dettalji:

  1. Għall-protokoll source l-indirizz għall-ħażna f'Ceph RBD huwa indikat (dan huwa l-indirizz li jindika l-isem tal-ġabra Ceph u l-immaġni RBD, li ġiet iddeterminata fl-ewwel stadju).
  2. Fil-blokka secret tip huwa indikat ceph, kif ukoll l-UUID tas-sigriet biex tikkonnettja miegħu. Uuid tiegħu jista 'jinstab bl-użu tal-kmand virsh secret-list.
  3. Fil-blokka host indirizzi għall-moniters Ceph huma indikati.

Wara li teditja l-fajl ta 'konfigurazzjoni u tlesti l-konverżjoni LVM għal RBD, tista' tapplika l-fajl ta 'konfigurazzjoni modifikat u tibda l-magna virtwali:

virsh define $vm_name.xml
virsh start $vm_name

Wasal iż-żmien li tivverifika li l-magna virtwali bdiet b'mod korrett: tista 'ssir taf, pereżempju, billi tikkonnettja magħha permezz ta' SSH jew permezz virsh.

Jekk il-magna virtwali qed taħdem b'mod korrett u ma sibtx problemi oħra, allura tista' tħassar l-immaġni LVM li m'għadhiex tintuża:

lvremove main/$vm_image_name

Konklużjoni

Iltqajna mal-każijiet deskritti kollha fil-prattika - nittamaw li l-istruzzjonijiet se jgħinu amministraturi oħra jsolvu problemi simili. Jekk għandek kummenti jew stejjer oħra simili mill-esperjenza tiegħek bl-użu ta’ Ceph, inkunu ferħanin li narawhom fil-kummenti!

PS

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment