Esperjenza operattiva tas-CEPH

Meta jkun hemm aktar data milli tista' toqgħod fuq disk waħda, wasal iż-żmien li wieħed jaħseb dwar RAID. Bħala tifel, spiss smajt mingħand ix-xjuħ tiegħi: “jum wieħed ir-RAID se jkun xi ħaġa tal-passat, il-ħażna tal-oġġetti timla d-dinja, u lanqas biss taf x’inhu CEPH,” allura l-ewwel ħaġa fil-ħajja indipendenti tiegħi kien li noħloq il-cluster tiegħi stess. L-iskop tal-esperiment kien li jiffamiljarizza ruħu mal-istruttura interna ta 'ceph u jifhem l-ambitu tal-applikazzjoni tiegħu. Kemm hija ġġustifikata l-implimentazzjoni ta' ceph f'negozji ta' daqs medju u f'dawk żgħar? Wara bosta snin ta 'tħaddim u ftit telf ta' data irriversibbli, inqala' fehim ta 'l-intricacies li mhux kollox huwa daqshekk sempliċi. Il-partikolaritajiet tas-CEPH joħolqu ostakli għall-adozzjoni mifruxa tiegħu, u minħabba fihom, l-esperimenti laħqu tmiem mejta. Hawn taħt hawn deskrizzjoni tal-passi kollha li ttieħdu, ir-riżultat miksub u l-konklużjonijiet meħuda. Jekk nies infurmati jaqsmu l-esperjenza tagħhom u jispjegaw xi punti, inkun grat.

Nota: Kummentaturi identifikaw żbalji serji f'xi wħud mis-suppożizzjonijiet li jeħtieġu reviżjoni tal-artikolu kollu.

L-Istrateġija tas-CEPH

Il-cluster CEPH jgħaqqad numru arbitrarju K ta 'diski ta' daqs arbitrarju u jaħżen data fuqhom, u jidduplika kull biċċa (4 MB b'mod awtomatiku) numru partikolari N darbiet.

Ejja nikkunsidraw l-aktar każ sempliċi b'żewġ diski identiċi. Minnhom tista 'jew tiġbor RAID 1 jew cluster b'N=2 - ir-riżultat ikun l-istess. Jekk ikun hemm tliet diski u huma ta 'daqsijiet differenti, allura huwa faċli li tiġbor raggruppament b'N=2: xi wħud mid-dejta se jkunu fuq id-diski 1 u 2, xi wħud se jkunu fuq id-diski 1 u 3, u xi wħud se jkunu fuq 2 u 3, filwaqt li RAID mhux se (tista 'tiġbor tali RAID, iżda tkun perverżjoni). Jekk ikun hemm saħansitra aktar diski, allura huwa possibbli li jinħoloq RAID 5; CEPH għandu analogu - erasure_code, li jikkontradixxi l-kunċetti bikrija tal-iżviluppaturi, u għalhekk mhux ikkunsidrat. RAID 5 jassumi li hemm numru żgħir ta 'drives, li kollha huma f'kundizzjoni tajba. Jekk wieħed jonqos, l-oħrajn għandhom iżommu sakemm id-diska tiġi sostitwita u d-data tiġi rrestawrata għaliha. CEPH, b'N>=3, jinkoraġġixxi l-użu ta 'diski qodma, b'mod partikolari, jekk iżżomm diversi diski tajbin biex taħżen kopja waħda tad-data, u taħżen iż-żewġ jew tliet kopji li jifdal fuq numru kbir ta' diski qodma, allura l-informazzjoni se jkun sigur, peress li għalissa diski ġodda huma ħajjin - m'hemm l-ebda problemi, u jekk wieħed minnhom jinkiser, allura l-falliment simultanju ta 'tliet diski b'ħajja ta' servizz ta 'aktar minn ħames snin, preferibbilment minn servers differenti, huwa estremament improbabbli. avveniment.

Hemm sottili għad-distribuzzjoni tal-kopji. B'mod awtomatiku, huwa preżunt li d-dejta hija maqsuma f'aktar (~100 għal kull disk) gruppi ta 'distribuzzjoni PG, li kull wieħed minnhom huwa duplikat fuq xi diski. Ejja ngħidu K=6, N=2, allura jekk xi żewġ diski jonqsu, id-data hija garantita li tintilef, peress li skont it-teorija tal-probabbiltà, se jkun hemm mill-inqas PG wieħed li jkun jinsab fuq dawn iż-żewġ diski. U t-telf ta 'grupp wieħed jagħmel id-dejta kollha fil-pool mhux disponibbli. Jekk id-diski huma maqsuma fi tliet pari u d-dejta titħalla tinħażen biss fuq diski f'par wieħed, allura distribuzzjoni bħal din hija wkoll reżistenti għall-falliment ta 'kwalunkwe diska waħda, iżda jekk żewġ diski jonqsu, il-probabbiltà ta' telf ta 'dejta mhix 100%, iżda biss 3/15, u anke f'każ ta 'falliment tliet diski - 12/20 biss. Għalhekk, l-entropija fid-distribuzzjoni tad-dejta ma tikkontribwixxix għat-tolleranza tal-ħsarat. Innota wkoll li għal server ta 'fajls, RAM ħielsa żżid b'mod sinifikanti l-veloċità tar-rispons. Iktar ma jkun hemm memorja f'kull nodu, u aktar memorja fin-nodi kollha, iktar ikun mgħaġġel. Dan huwa bla dubju vantaġġ ta 'cluster fuq server wieħed u, aktar u aktar, hardware NAS, fejn huwa mibni ammont żgħir ħafna ta' memorja.

Minn dan isegwi li CEPH huwa mod tajjeb biex tinħoloq sistema ta 'ħażna ta' data affidabbli għal għexieren ta 'TB bil-kapaċità li tiskala b'investiment minimu minn tagħmir skadut (hawn, ovvjament, se jkunu meħtieġa spejjeż, iżda żgħar meta mqabbla ma' sistemi ta 'ħażna kummerċjali).

Implimentazzjoni tal-cluster

Għall-esperiment, ejja nieħdu kompjuter dekummissjonat Intel DQ57TM + Intel core i3 540 + 16 GB ta 'RAM. Se norganizzaw erba 'diski ta' 2 TB f'xi ħaġa bħal RAID10, wara test ta 'suċċess se nżidu t-tieni node u l-istess numru ta' diski.

Installazzjoni tal-Linux. Id-distribuzzjoni teħtieġ il-ħila li tippersonalizza u tkun stabbli. Debian u Suse jissodisfaw ir-rekwiżiti. Suse għandha installatur aktar flessibbli li jippermettilek li tiddiżattiva kwalunkwe pakkett; Sfortunatament, ma stajtx nifhem liema jistgħu jintremew mingħajr ma ssir ħsara lis-sistema. Installa Debian billi tuża debootstrap buster. L-għażla min-base tinstalla sistema miksura li hija nieqsa mis-sewwieqa. Id-differenza fid-daqs meta mqabbla mal-verżjoni sħiħa mhix daqshekk kbira li tfixkel. Peress li x-xogħol jitwettaq fuq magna fiżika, irrid nieħu snapshots, bħal fuq magni virtwali. Din l-għażla hija pprovduta jew minn LVM jew btrfs (jew xfs, jew zfs - id-differenza mhix kbira). Snapshots LVM mhumiex punt b'saħħtu. Installa btrfs. U l-bootloader huwa fl-MBR. M'hemm l-ebda skop li tħaffef disk ta '50 MB b'partizzjoni XAĦAM meta tista' timbottaha f'żona ta 'tabella ta' partizzjoni ta '1 MB u talloka l-ispazju kollu għas-sistema. Ħad 700 MB fuq disk. Ma niftakarx kemm għandha l-installazzjoni bażika tas-SUSE, naħseb li hija madwar 1.1 jew 1.4 GB.

Installa CEPH. Aħna ninjoraw il-verżjoni 12 fir-repożitorju debian u nikkonnettjaw direttament mis-sit 15.2.3. Aħna nsegwu l-istruzzjonijiet mit-taqsima "Installa CEPH manwalment" bil-kawżi li ġejjin:

  • Qabel ma tgħaqqad ir-repożitorju, trid tinstalla gnupg wget ca-certificates
  • Wara li tgħaqqad ir-repożitorju, iżda qabel ma tinstalla l-cluster, l-installazzjoni tal-pakketti titħalla barra: apt -y --no-install-recommends install ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • Meta tinstalla s-CEPH, għal raġunijiet mhux magħrufa, se tipprova tinstalla lvm2. Fil-prinċipju, mhix ħasra, iżda l-installazzjoni tfalli, għalhekk CEPH lanqas se jinstalla.

    Din il-garża għenet:

    cat << EOF >> /var/lib/dpkg/status
    Package: lvm2
    Status: install ok installed
    Priority: important
    Section: admin
    Installed-Size: 0
    Maintainer: Debian Adduser Developers <[email protected]>
    Architecture: all
    Multi-Arch: foreign
    Version: 113.118
    Description: No-install
    EOF
    

Ħarsa ġenerali tal-cluster

ceph-osd - huwa responsabbli għall-ħażna tad-data fuq disk. Għal kull disk, jiġi mniedi servizz tan-netwerk li jaċċetta u jesegwixxi talbiet biex taqra jew tikteb fuq oġġetti. Żewġ diviżorji huma maħluqa fuq id-diska. Waħda minnhom fiha informazzjoni dwar il-cluster, in-numru tad-disk, u ċ-ċwievet għall-cluster. Din l-informazzjoni 1KB tinħoloq darba meta żżid disk u qatt ma ġiet innutata li tinbidel. It-tieni partizzjoni m'għandha l-ebda sistema ta 'fajls u taħżen id-dejta binarja tas-CEPH. L-installazzjoni awtomatika fil-verżjonijiet preċedenti ħolqot partizzjoni xfs ta '100MB għall-informazzjoni tas-servizz. Ikkonverti d-diska għal MBR u allokajt biss 16MB - is-servizz ma jilmentax. Naħseb li xfs jistgħu jiġu sostitwiti b'ext mingħajr problemi. Din il-partizzjoni hija mmuntata f'/var/lib/..., fejn is-servizz jaqra informazzjoni dwar l-OSD u jsib ukoll referenza għall-apparat tal-blokk fejn tinħażen id-dejta binarja. Teoretikament, tista' immedjatament tpoġġi fajls awżiljarji f'/var/lib/..., u talloka d-disk kollu għad-dejta. Meta toħloq OSD permezz ta 'ceph-deploy, awtomatikament tinħoloq regola biex timmonta l-partizzjoni f'/var/lib/..., u l-utent ta' ceph jiġi assenjat ukoll drittijiet biex jaqra l-apparat tal-blokk mixtieq. Jekk tinstalla manwalment, trid tagħmel dan lilek innifsek; id-dokumentazzjoni ma tgħidx dan. Huwa wkoll rakkomandabbli li tispeċifika l-parametru tal-mira tal-memorja osd sabiex ikun hemm biżżejjed memorja fiżika.

ceph-mds. F'livell baxx, CEPH huwa ħażna ta 'oġġetti. Il-ħila li timblokka l-ħażna tiġi biex taħżen kull blokka ta '4MB bħala oġġett. Il-ħażna tal-fajls taħdem fuq l-istess prinċipju. Jinħolqu żewġ pools: wieħed għall-metadejta, l-ieħor għad-dejta. Huma magħquda f'sistema ta 'fajls. F'dan il-mument, jinħoloq xi tip ta 'rekord, għalhekk jekk tħassar is-sistema tal-fajls, iżda żżomm iż-żewġ pools, ma tkunx tista' tirrestawraha. Hemm proċedura għall-estrazzjoni ta 'fajls bi blokki, ma ttestjajtx. Is-servizz ceph-mds huwa responsabbli għall-aċċess għas-sistema tal-fajls. Kull sistema ta' fajls teħtieġ istanza separata tas-servizz. Hemm għażla "indiċi", li tippermettilek li toħloq id-dehra ta 'diversi sistemi ta' fajls f'wieħed - ukoll mhux ittestjat.

Ceph-mon - Dan is-servizz jaħżen mappa tar-raggruppament. Jinkludi informazzjoni dwar l-OSDs kollha, algoritmu għad-distribuzzjoni tal-PGs f'OSDs u, l-aktar importanti, informazzjoni dwar l-oġġetti kollha (id-dettalji ta 'dan il-mekkaniżmu mhumiex ċari għalija: hemm direttorju /var/lib/ceph/mon/.../ store.db, fih kbir il-fajl huwa 26MB, u f'grupp ta 'oġġetti 105K, jirriżulta li jkun ftit aktar minn 256 bytes għal kull oġġett - naħseb li l-monitor jaħżen lista tal-oġġetti kollha u l-PGs li fihom jinsabu). Ħsara lil dan id-direttorju tirriżulta fit-telf tad-dejta kollha fil-cluster. Għalhekk saret il-konklużjoni li CRUSH juri kif il-PGs jinsabu fuq l-OSD, u kif l-oġġetti jinsabu fuq il-PGs - huma maħżuna ċentralment ġewwa d-database, irrispettivament minn kemm l-iżviluppaturi jevitaw din il-kelma. Bħala riżultat, l-ewwelnett, ma nistgħux ninstallaw is-sistema fuq flash drive fil-modalità RO, peress li d-database qed tiġi rreġistrata kontinwament, hija meħtieġa disk addizzjonali għal dawn (bilkemm aktar minn 1 GB), it-tieni, huwa meħtieġ li jkun hemm kopja f'ħin reali din il-bażi. Jekk hemm diversi monitors, allura t-tolleranza tal-ħsarat hija żgurata awtomatikament, iżda fil-każ tagħna hemm monitor wieħed biss, massimu tnejn. Hemm proċedura teoretika għar-restawr ta 'monitor ibbażat fuq dejta OSD, rrikorriet għaliha tliet darbiet għal diversi raġunijiet, u tliet darbiet ma kien hemm l-ebda messaġġ ta' żball, kif ukoll l-ebda dejta. Sfortunatament, dan il-mekkaniżmu ma jaħdimx. Jew inħaddmu partizzjoni minjatura fuq l-OSD u niġbru RAID biex naħżnu d-database, li ċertament se jkollha effett ħażin ħafna fuq il-prestazzjoni, jew nallokaw mill-inqas żewġ mezzi fiżiċi affidabbli, preferibbilment USB, sabiex ma nokkupawx portijiet.

rados-gw - jesporta ħażna ta 'oġġetti permezz tal-protokoll S3 u simili. Joħloq ħafna pools, mhuwiex ċar għaliex. Ma esperimentajtx wisq.

ceph-mgr - Meta tinstalla dan is-servizz, jiġu mnedija diversi moduli. Waħda minnhom hija autoscale li ma tistax tiġi diżattivata. Tistinka biex iżżomm l-ammont korrett ta 'PG/OSD. Jekk trid tikkontrolla l-proporzjon manwalment, tista 'tiddiżattiva l-iskala għal kull pool, iżda f'dan il-każ il-modulu jiġġarraf b'diviżjoni b'0, u l-istatus tal-cluster isir ŻBALL. Il-modulu huwa miktub f'Python, u jekk tikkummenta l-linja meħtieġa fih, dan iwassal għad-diżattivazzjoni tiegħu. Għażżien wisq biex tiftakar id-dettalji.

Lista tas-sorsi użati:

Installazzjoni tas-CEPH
Irkupru minn falliment sħiħ tal-moniter

Listi tal-iskript:

Installazzjoni tas-sistema permezz debootstrap

blkdev=sdb1
mkfs.btrfs -f /dev/$blkdev
mount /dev/$blkdev /mnt
cd /mnt
for i in {@,@var,@home}; do btrfs subvolume create $i; done
mkdir snapshot @/{var,home}
for i in {var,home}; do mount -o bind @${i} @/$i; done
debootstrap buster @ http://deb.debian.org/debian; echo $?
for i in {dev,proc,sys}; do mount -o bind /$i @/$i; done
cp /etc/bash.bashrc @/etc/

chroot /mnt/@ /bin/bash
echo rbd1 > /etc/hostname
passwd
uuid=`blkid | grep $blkdev | cut -d """ -f 2`
cat << EOF > /etc/fstab
UUID=$uuid / btrfs noatime,nodiratime,subvol=@ 0 1
UUID=$uuid /var btrfs noatime,nodiratime,subvol=@var 0 2
UUID=$uuid /home btrfs noatime,nodiratime,subvol=@home 0 2
EOF
cat << EOF >> /var/lib/dpkg/status
Package: lvm2
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install

Package: sudo
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install
EOF

exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

apt -yq install --no-install-recommends linux-image-amd64 bash-completion ed btrfs-progs grub-pc iproute2 ssh  smartmontools ntfs-3g net-tools man
exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

Oħloq cluster

apt -yq install --no-install-recommends gnupg wget ca-certificates
echo 'deb https://download.ceph.com/debian-octopus/ buster main' >> /etc/apt/sources.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
apt update
apt -yq install --no-install-recommends ceph-common ceph-mon

echo 192.168.11.11 rbd1 >> /etc/hosts
uuid=`cat /proc/sys/kernel/random/uuid`
cat << EOF > /etc/ceph/ceph.conf
[global]
fsid = $uuid
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
mon allow pool delete = true
mon host = 192.168.11.11
mon initial members = rbd1
mon max pg per osd = 385
osd crush update on start = false
#osd memory target = 2147483648
osd memory target = 1610612736
osd scrub chunk min = 1
osd scrub chunk max = 2
osd scrub sleep = .2
osd pool default pg autoscale mode = off
osd pool default size = 1
osd pool default min size = 1
osd pool default pg num = 1
osd pool default pgp num = 1
[mon]
mgr initial modules = dashboard
EOF

ceph-authtool --create-keyring ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
ceph-authtool --create-keyring ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
cp ceph.client.admin.keyring /etc/ceph/
ceph-authtool --create-keyring bootstrap-osd.ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
cp bootstrap-osd.ceph.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
ceph-authtool ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
monmaptool --create --add rbd1 192.168.11.11 --fsid $uuid monmap
rm -R /var/lib/ceph/mon/ceph-rbd1/*
ceph-mon --mkfs -i rbd1 --monmap monmap --keyring ceph.mon.keyring
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-mon@rbd1
systemctl start ceph-mon@rbd1
ceph mon enable-msgr2
ceph status

# dashboard

apt -yq install --no-install-recommends ceph-mgr ceph-mgr-dashboard python3-distutils python3-yaml
mkdir /var/lib/ceph/mgr/ceph-rbd1
ceph auth get-or-create mgr.rbd1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-rbd1/keyring
systemctl enable ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1
ceph config set mgr mgr/dashboard/ssl false
ceph config set mgr mgr/dashboard/server_port 7000
ceph dashboard ac-user-create root 1111115 administrator
systemctl stop ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1

Żieda ta' OSD (parti)

apt install ceph-osd

osdnum=`ceph osd create`
mkdir -p /var/lib/ceph/osd/ceph-$osdnum
mkfs -t xfs /dev/sda1
mount -t xfs /dev/sda1 /var/lib/ceph/osd/ceph-$osdnum
cd /var/lib/ceph/osd/ceph-$osdnum
ceph auth get-or-create osd.0 mon 'profile osd' mgr 'profile osd' osd 'allow *' > /var/lib/ceph/osd/ceph-$osdnum/keyring
ln -s /dev/disk/by-partuuid/d8cc3da6-02  block
ceph-osd -i $osdnum --mkfs
#chown ceph:ceph /dev/sd?2
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-osd@$osdnum
systemctl start ceph-osd@$osdnum

Sommarju

Il-vantaġġ ewlieni tas-suq tas-CEPH huwa CRUSH - algoritmu għall-kalkolu tal-post tad-dejta. Il-moniters iqassmu dan l-algoritmu lill-klijenti, u wara l-klijenti jitolbu direttament in-nodu mixtieq u l-OSD mixtieq. CRUSH jiżgura l-ebda ċentralizzazzjoni. Huwa fajl żgħir li tista 'saħansitra tipprintja u tistrieħ mal-ħajt. Il-prattika wriet li CRUSH mhix mappa eżawrjenti. Jekk teqred u toħloq mill-ġdid il-monitors, iżżomm l-OSD u l-CRUSH kollha, allura dan mhux biżżejjed biex tirrestawra l-cluster. Minn dan huwa konkluż li kull monitor jaħżen xi metadata dwar il-cluster kollu. L-ammont żgħir ta 'din il-metadata ma jimponix restrizzjonijiet fuq id-daqs tal-cluster, iżda jeħtieġ li tiġi żgurata s-sikurezza tagħhom, li telimina l-iffrankar tad-disk billi tinstalla s-sistema fuq flash drive u teskludi clusters b'inqas minn tliet nodi. Il-politika aggressiva tal-iżviluppatur rigward il-karatteristiċi fakultattivi. Bogħod mill-minimaliżmu. Id-dokumentazzjoni hija fil-livell ta '"grazzi ta' dak li għandna, iżda huwa żgħir ħafna, ħafna." Il-kapaċità li jinteraġixxu mas-servizzi f'livell baxx hija pprovduta, iżda d-dokumentazzjoni tmiss dan is-suġġett b'mod superfiċjali wisq, għalhekk huwa aktar probabbli le milli iva. Prattikament m'hemm l-ebda ċans li tiġi rkuprata data minn sitwazzjoni ta' emerġenza.

Għażliet għal aktar azzjoni: abbanduna CEPH u uża l-btrfs multi-disk banali (jew xfs, zfs), sib informazzjoni ġdida dwar CEPH, li tippermettilek tħaddem taħt il-kundizzjonijiet speċifikati, ipprova ikteb il-ħażna tiegħek bħala avvanzata. taħriġ.

Sors: www.habr.com

Żid kumment