Kasinatian sa CEPH

Kung adunay daghang mga datos kaysa mahimo nga mahaum sa usa ka disk, panahon na sa paghunahuna bahin sa RAID. Isip usa ka bata, kanunay kong makadungog gikan sa akong mga tigulang: "usa ka adlaw ang RAID mahimong usa ka butang sa nangagi, ang pagtipig sa butang mopuno sa kalibutan, ug wala ka gani makahibalo kung unsa ang CEPH," mao nga ang unang butang sa akong independenteng kinabuhi mao ang paghimo sa akong kaugalingon nga cluster. Ang katuyoan sa eksperimento mao ang pag-ila sa internal nga istruktura sa ceph ug masabtan ang kasangkaran sa aplikasyon niini. Unsa ka makatarunganon ang pagpatuman sa ceph sa mga medium-sized nga negosyo ug sa mga gagmay? Pagkahuman sa daghang tuig nga operasyon ug usa ka pares nga dili mabag-o nga pagkawala sa datos, usa ka pagsabut sa mga kakuti ang mitumaw nga dili tanan yano ra. Ang mga peculiarities sa CEPH nagbutang og mga babag sa kaylap nga pagsagop niini, ug tungod niini, ang mga eksperimento nakaabot sa usa ka dead end. Sa ubos usa ka paghulagway sa tanan nga mga lakang nga gihimo, ang resulta nga nakuha ug ang mga konklusyon nga nakuha. Kung ang mga tawo nga adunay kahibalo mopaambit sa ilang kasinatian ug ipasabut ang pipila ka mga punto, ako mapasalamaton.

Mubo nga sulat: Ang mga komentarista nakaila sa seryoso nga mga sayop sa pipila sa mga pangagpas nga nagkinahanglan og rebisyon sa tibuok nga artikulo.

Estratehiya sa CEPH

Ang CEPH cluster naghiusa sa usa ka arbitraryong numero K sa mga disk nga arbitraryong gidak-on ug nagtipig og datos niini, nga nagdoble sa matag piraso (4 MB sa default) sa gihatag nga numero nga N ka beses.

Atong tagdon ang pinakasimple nga kaso nga adunay duha ka managsama nga mga disk. Gikan kanila mahimo nimong tipunon ang RAID 1 o usa ka kumpol nga adunay N = 2 - parehas ang resulta. Kung adunay tulo ka mga disk ug kini lainlain ang gidak-on, nan kini dali nga mag-assemble sa usa ka cluster nga adunay N=2: ang pipila sa mga datos naa sa mga disk 1 ug 2, ang uban naa sa mga disk 1 ug 3, ug ang uban mahimo. sa 2 ug 3, samtang ang RAID dili (mahimo nimong tipunon ang ingon nga RAID, apan kini usa ka pagtuis). Kung adunay daghan pa nga mga disk, posible nga maghimo RAID 5; Ang CEPH adunay analogue - erasure_code, nga sukwahi sa unang mga konsepto sa mga developer, ug busa wala gikonsiderar. Ang RAID 5 nagtuo nga adunay gamay nga gidaghanon sa mga drive, nga ang tanan anaa sa maayong kondisyon. Kung ang usa mapakyas, ang uban kinahanglan nga magpadayon hangtod ang disk mapulihan ug ang datos mabalik niini. Ang CEPH, nga adunay N> = 3, nag-awhag sa paggamit sa daan nga mga disk, ilabi na, kung magtipig ka og daghang maayong mga disk aron tipigan ang usa ka kopya sa datos, ug tipigan ang nahabilin nga duha o tulo ka kopya sa daghang mga daan nga disk, dayon ang impormasyon mahimong luwas, tungod kay sa pagkakaron ang bag-ong mga disk buhi - wala'y mga problema, ug kung ang usa niini maguba, nan ang dungan nga kapakyasan sa tulo ka mga disk nga adunay usa ka serbisyo sa kinabuhi nga labaw pa sa lima ka tuig, mas maayo gikan sa lain-laing mga server, mao ang usa ka hilabihan nga dili mahimo. panghitabo.

Adunay usa ka subtlety sa pag-apod-apod sa mga kopya. Sa kasagaran, gituohan nga ang datos gibahin ngadto sa labaw pa (~ 100 kada disk) nga mga grupo sa pag-apod-apod sa PG, ang matag usa niini gi-duplicate sa pipila ka mga disk. Ingnon ta nga K = 6, N = 2, unya kung adunay duha ka mga disk nga mapakyas, ang data garantiya nga mawala, tungod kay sumala sa probability theory, adunay labing menos usa ka PG nga mahimutang niining duha ka mga disk. Ug ang pagkawala sa usa ka grupo naghimo sa tanan nga mga datos sa pool nga dili magamit. Kung ang mga disk gibahin ngadto sa tulo ka mga parisan ug ang data gitugotan nga tipigan lamang sa mga disk sulod sa usa ka pares, nan ang maong pag-apod-apod usab makasugakod sa kapakyasan sa bisan unsa nga disk, apan kon ang duha ka mga disk mapakyas, ang kalagmitan sa pagkawala sa data dili. 100%, apan 3/15 lamang, ug bisan sa kaso sa kapakyasan tulo ka mga disk - 12/20 lamang. Busa, ang entropy sa pag-apod-apod sa datos wala makatampo sa pagtugot sa sayup. Timan-i usab nga alang sa usa ka file server, ang libre nga RAM makadugang sa katulin sa pagtubag. Ang mas daghang memorya sa matag node, ug ang mas daghang memorya sa tanan nga mga node, mas paspas kini. Kini sa walay duhaduha usa ka bentaha sa usa ka kumpol sa usa ka server ug, labi pa, usa ka hardware NAS, diin ang gamay kaayo nga panumduman gitukod.

Gisundan niini nga ang CEPH usa ka maayong paagi sa paghimo og usa ka kasaligan nga sistema sa pagtipig sa datos alang sa napulo ka TB nga adunay katakus sa pag-scale nga adunay gamay nga pagpamuhunan gikan sa mga karaan nga kagamitan (dinhi, siyempre, kinahanglan ang mga gasto, apan gamay kung itandi sa mga sistema sa pagtipig sa komersyo).

Pagpatuman sa cluster

Para sa eksperimento, magkuha kita og decommissioned computer Intel DQ57TM + Intel core i3 540 + 16 GB nga RAM. Among organisahon ang upat ka 2 TB nga mga disk ngadto sa usa ka butang sama sa RAID10, human sa malampuson nga pagsulay kami makadugang sa ikaduha nga node ug sa samang gidaghanon sa mga disk.

Pag-instalar sa Linux. Ang pag-apod-apod nanginahanglan abilidad sa pag-customize ug mahimong lig-on. Si Debian ug Suse nakab-ot ang mga kinahanglanon. Ang Suse adunay mas flexible installer nga nagtugot kanimo sa pag-disable sa bisan unsang package; Ikasubo, dili nako mahibal-an kung kinsa ang mahimong ilabay nga dili makadaot sa sistema. I-install ang Debian gamit ang debootstrap buster. Ang min-base nga kapilian nag-instalar sa usa ka guba nga sistema nga kulang sa mga drayber. Ang kalainan sa gidak-on kon itandi sa bug-os nga bersyon dili kaayo dako nga makahasol. Tungod kay ang trabaho gihimo sa usa ka pisikal nga makina, gusto nako nga magkuha mga snapshot, sama sa mga virtual machine. Kini nga opsyon gihatag sa LVM o btrfs (o xfs, o zfs - ang kalainan dili dako). Ang mga snapshot sa LVM dili usa ka lig-on nga punto. I-install ang btrfs. Ug ang bootloader naa sa MBR. Walay kapuslanan ang pag-clutter sa usa ka 50 MB nga disk nga adunay FAT partition kung mahimo nimo kini iduso ngadto sa 1 MB partition table area ug igahin ang tanang luna alang sa sistema. Gikuha ang 700 MB sa disk. Wala ko mahinumdom kung unsa ka daghan ang batakang pag-instalar sa SUSE, sa akong hunahuna kini mahitungod sa 1.1 o 1.4 GB.

I-install ang CEPH. Gibalewala namo ang bersyon 12 sa debian repository ug direktang nagkonektar gikan sa 15.2.3 nga site. Gisunod namo ang mga instruksyon gikan sa seksyon nga "Manuwal nga i-install ang CEPH" uban ang mosunod nga mga pasidaan:

  • Sa dili pa ikonektar ang repositoryo, kinahanglan nimo nga i-install ang gnupg wget ca-certificates
  • Pagkahuman sa pagkonektar sa repository, apan sa wala pa i-install ang cluster, ang pag-install sa mga pakete wala iapil: apt -y --no-install-recommends install ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • Kung nag-install sa CEPH, alang sa wala mahibal-an nga mga hinungdan, sulayan niini ang pag-install sa lvm2. Sa prinsipyo, dili kini usa ka kalooy, apan ang pag-instalar napakyas, mao nga ang CEPH dili usab mag-install.

    Kini nga patch nakatabang:

    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
    

Overview sa cluster

ceph-osd - responsable sa pagtipig sa datos sa disk. Alang sa matag disk, usa ka serbisyo sa network ang gilunsad nga modawat ug magpatuman sa mga hangyo sa pagbasa o pagsulat sa mga butang. Duha ka partisyon ang gihimo sa disk. Ang usa niini adunay kasayuran bahin sa cluster, numero sa disk, ug mga yawe sa cluster. Kining 1KB nga impormasyon gihimo kas-a kung magdugang og disk ug wala pa gyud mamatikdi nga nagbag-o. Ang ikaduhang partisyon walay file system ug nagtipig sa CEPH binary data. Awtomatikong pag-instalar sa miaging mga bersyon nagmugna ug 100MB xfs partition para sa impormasyon sa serbisyo. Akong gi-convert ang disk sa MBR ug gigahin lamang ang 16MB - ang serbisyo wala magreklamo. Sa akong hunahuna ang xfs mahimong mapulihan sa ext nga wala’y problema. Kini nga partisyon gi-mount sa / var / lib /…, diin ang serbisyo nagbasa sa kasayuran bahin sa OSD ug nakit-an usab ang usa ka pakisayran sa block device diin gitipigan ang binary data. Sa teoriya, mahimo nimong ibutang dayon ang mga auxiliary file sa /var/lib/..., ug igahin ang tibuok disk para sa datos. Sa paghimo sa usa ka OSD pinaagi sa ceph-deploy, usa ka lagda ang awtomatik nga gihimo aron i-mount ang partition sa /var/lib/..., ug ang ceph user gihatagan usab ug katungod sa pagbasa sa gusto nga block device. Kung mano-mano ang pag-install, kinahanglan nimo nga buhaton kini sa imong kaugalingon; wala kini gisulti sa dokumentasyon. Maayo usab nga ipiho ang osd memory target parameter aron adunay igo nga pisikal nga memorya.

ceph-mds. Sa ubos nga lebel, ang CEPH mao ang pagtipig sa butang. Ang katakus sa pagtipig sa pag-block nagpaubos sa pagtipig sa matag 4MB block ingon usa ka butang. Ang pagtipig sa file nagtrabaho sa parehas nga prinsipyo. Duha ka pool ang gihimo: usa alang sa metadata, ang lain alang sa datos. Gihiusa sila sa usa ka file system. Niining higayona, usa ka matang sa rekord ang gihimo, mao nga kung imong tangtangon ang sistema sa file, apan huptan ang duha ka pool, dili nimo kini mapasig-uli. Adunay usa ka pamaagi alang sa pagkuha sa mga file pinaagi sa mga bloke, wala pa nako kini gisulayan. Ang serbisyo sa ceph-mds maoy responsable sa pag-access sa file system. Ang matag file system nanginahanglan usa ka lahi nga pananglitan sa serbisyo. Adunay usa ka kapilian nga "index", nga nagtugot kanimo sa paghimo sa pagkasama sa daghang mga sistema sa file sa usa - wala usab gisulayan.

Ceph-mon - Kini nga serbisyo nagtipig usa ka mapa sa cluster. Naglakip kini sa kasayuran bahin sa tanan nga mga OSD, usa ka algorithm sa pag-apod-apod sa mga PG sa mga OSD ug, labing hinungdanon, kasayuran bahin sa tanan nga mga butang (ang mga detalye niini nga mekanismo dili klaro kanako: adunay usa ka direktoryo /var/lib/ceph/mon/…/ store.db, kini naglangkob sa usa ka dako nga file mao ang 26MB, ug sa usa ka pungpong sa 105K mga butang, kini turns sa usa ka gamay sa ibabaw sa 256 bytes matag butang - sa akong hunahuna nga ang monitor tindahan sa usa ka listahan sa tanan nga mga butang ug sa PGs diin sila nahimutang). Ang kadaot sa kini nga direktoryo moresulta sa pagkawala sa tanan nga datos sa cluster. Busa ang konklusyon gikuha nga ang CRUSH nagpakita kung giunsa ang mga PG nahimutang sa OSD, ug kung giunsa ang mga butang nahimutang sa mga PG - kini gitipigan sa sentro sa sulod sa database, bisan unsa pa ang paglikay sa mga developer niini nga pulong. Ingon usa ka sangputanan, una, dili namon ma-install ang sistema sa usa ka flash drive sa RO mode, tungod kay ang database kanunay nga natala, usa ka dugang nga disk ang gikinahanglan alang niini (halos labaw pa sa 1 GB), ikaduha, kinahanglan nga adunay usa ka kopyaha sa tinuod nga panahon kini nga base. Kung adunay daghang mga monitor, ang pagtugot sa sayup awtomatiko nga gisiguro, apan sa among kaso adunay usa ra nga monitor, labing kadaghan nga duha. Adunay usa ka teoretikal nga pamaagi alang sa pagpasig-uli sa usa ka monitor base sa OSD data, ako midangop niini sa tulo ka mga higayon alang sa lain-laing mga rason, ug tulo ka higayon nga walay mga mensahe sa sayop, ingon man usab sa walay data. Ikasubo, kini nga mekanismo wala molihok. Mahimong mag-operate kami usa ka gamay nga partisyon sa OSD ug mag-assemble og RAID aron tipigan ang database, nga siguradong adunay dili maayo nga epekto sa pasundayag, o maggahin kami labing menos duha ka kasaligan nga pisikal nga media, labi na ang USB, aron dili ma-okupar ang mga pantalan.

rados-gw - nag-eksport sa pagtipig sa butang pinaagi sa S3 protocol ug susama. Naghimo daghang mga pool, dili klaro kung ngano. Wala kaayo ko nag-eksperimento.

ceph-mgr - Kung gi-install kini nga serbisyo, daghang mga module ang gilunsad. Usa niini mao ang autoscale nga dili ma-disable. Naningkamot kini sa pagpadayon sa husto nga kantidad sa PG/OSD. Kung gusto nimo nga kontrolon ang ratio nga mano-mano, mahimo nimong i-disable ang pag-scale sa matag pool, apan sa kini nga kaso ang module nahagsa sa usa ka dibisyon sa 0, ug ang kahimtang sa cluster mahimong ERROR. Ang module gisulat sa Python, ug kung imong ikomentaryo ang gikinahanglan nga linya niini, kini mosangpot sa pagka-disable niini. Tapolan kaayo sa paghinumdom sa mga detalye.

Listahan sa mga tinubdan nga gigamit:

Pag-instalar sa CEPH
Pagbawi gikan sa usa ka bug-os nga pagkapakyas sa monitor

Mga lista sa script:

Pag-instalar sa sistema pinaagi sa 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

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

Pagdugang OSD (bahin)

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

Sumaryo

Ang nag-unang bentaha sa marketing sa CEPH mao ang CRUSH - usa ka algorithm sa pagkalkula sa lokasyon sa datos. Ang mga monitor nag-apod-apod niini nga algorithm sa mga kliyente, pagkahuman ang mga kliyente direkta nga nangayo sa gitinguha nga node ug ang gitinguha nga OSD. Ang CRUSH nagsiguro nga walay sentralisasyon. Kini usa ka gamay nga file nga mahimo nimong i-print ug ibitay sa dingding. Gipakita sa praktis nga ang CRUSH dili usa ka kompleto nga mapa. Kung gub-on nimo ug utro ang mga monitor, itago ang tanan nga OSD ug CRUSH, nan kini dili igo aron mapasig-uli ang cluster. Gikan niini nahinapos nga ang matag monitor nagtipig pipila ka metadata bahin sa tibuuk nga cluster. Ang gamay nga kantidad niini nga metadata wala magpahamtang og mga pagdili sa gidak-on sa cluster, apan nagkinahanglan sa pagsiguro sa ilang kaluwasan, nga nagwagtang sa disk savings pinaagi sa pag-instalar sa sistema sa usa ka flash drive ug wala'y labot ang mga cluster nga adunay ubos sa tulo ka mga node. Ang agresibo nga palisiya sa developer bahin sa opsyonal nga mga bahin. Layo sa minimalism. Ang dokumentasyon naa sa lebel sa "salamat sa kung unsa ang naa kanamo, apan kini gamay ra kaayo." Ang abilidad sa pagpakig-uban sa mga serbisyo sa ubos nga lebel gihatag, apan ang dokumentasyon nakatandog niini nga hilisgutan nga taphaw kaayo, mao nga kini mas lagmit nga usa ka dili kay sa usa ka oo. Halos wala’y higayon nga mabawi ang datos gikan sa usa ka kahimtang sa emerhensya.

Mga kapilian alang sa dugang nga aksyon: biyai ang CEPH ug gamita ang banal nga multi-disk btrfs (o xfs, zfs), pangitaa ang bag-ong kasayuran bahin sa CEPH, nga magtugot kanimo sa pag-operate niini ubos sa gitakda nga mga kondisyon, pagsulay sa pagsulat sa imong kaugalingon nga pagtipig ingon usa ka advanced pagbansay.

Source: www.habr.com

Idugang sa usa ka comment