Profiad gyda CEPH

Pan fydd mwy o ddata nag y gellir ei ffitio ar un ddisg, mae'n bryd meddwl am RAID. Fel plentyn, clywais yn aml gan fy henuriaid: “Bydd RAID un diwrnod yn rhywbeth o’r gorffennol, bydd storio gwrthrychau yn llenwi’r byd, a dydych chi ddim hyd yn oed yn gwybod beth yw CEPH,” felly y peth cyntaf yn fy mywyd annibynnol oedd creu fy nghlwstwr fy hun. Pwrpas yr arbrawf oedd dod yn gyfarwydd â strwythur mewnol ceph a deall cwmpas ei gymhwysiad. Pa mor gyfiawn yw gweithredu ceph mewn busnesau canolig eu maint ac mewn busnesau bach? Ar ôl sawl blwyddyn o weithredu a chwpl o golledion data anwrthdroadwy, daeth dealltwriaeth o'r cymhlethdodau nad yw popeth mor syml. Mae hynodion CEPH yn rhwystr i'w fabwysiadu'n eang, ac o'r herwydd, mae arbrofion wedi dod i ben. Isod mae disgrifiad o'r holl gamau a gymerwyd, y canlyniad a gafwyd a'r casgliadau y daethpwyd iddynt. Os bydd pobl wybodus yn rhannu eu profiad ac yn egluro rhai pwyntiau, byddaf yn ddiolchgar.

Sylwer: Mae sylwebwyr wedi nodi gwallau difrifol yn rhai o'r tybiaethau sy'n gofyn am adolygu'r erthygl gyfan.

Strategaeth CEPH

Mae'r clwstwr CEPH yn cyfuno rhif mympwyol K o ddisgiau o faint mympwyol ac yn storio data arnynt, gan ddyblygu pob darn (4 MB yn ddiofyn) nifer penodol N gwaith.

Gadewch i ni ystyried yr achos symlaf gyda dwy ddisg union yr un fath. Oddyn nhw gallwch chi naill ai ymgynnull RAID 1 neu glwstwr gyda N=2 - bydd y canlyniad yr un peth. Os oes tri disg a'u bod o wahanol feintiau, yna mae'n hawdd cydosod clwstwr gyda N=2: bydd peth o'r data ar ddisgiau 1 a 2, bydd rhai ar ddisgiau 1 a 3, a bydd rhai yn ar 2 a 3, tra na fydd RAID (gallwch ymgynnull o'r fath RAID, ond byddai'n gwyrdroi). Os oes hyd yn oed mwy o ddisgiau, yna mae'n bosibl creu RAID 5; Mae gan CEPH analog - erasure_code, sy'n gwrth-ddweud cysyniadau cynnar y datblygwyr, ac felly nid yw'n cael ei ystyried. Mae RAID 5 yn rhagdybio bod nifer fach o yriannau, a phob un ohonynt mewn cyflwr da. Os bydd un yn methu, rhaid i'r lleill ddal allan nes bod y ddisg yn cael ei disodli ac mae'r data yn cael ei adfer iddo. Mae CEPH, gyda N>=3, yn annog y defnydd o hen ddisgiau, yn arbennig, os ydych yn cadw sawl disg dda i storio un copi o ddata, ac yn storio'r ddau neu dri chopi sy'n weddill ar nifer fawr o hen ddisgiau, yna'r wybodaeth yn ddiogel, oherwydd am y tro mae disgiau newydd yn fyw - nid oes unrhyw broblemau, ac os bydd un ohonynt yn torri, yna mae methiant tair disg ar yr un pryd â bywyd gwasanaeth o fwy na phum mlynedd, yn ddelfrydol o wahanol weinyddion, yn annhebygol iawn. digwyddiad.

Mae yna gynildeb i ddosbarthiad copïau. Yn ddiofyn, rhagdybir bod y data wedi'i rannu'n fwy (~100 y ddisg) o grwpiau dosbarthu PG, gyda phob un yn cael ei ddyblygu ar rai disgiau. Gadewch i ni ddweud K = 6, N = 2, yna os bydd unrhyw ddau ddisg yn methu, mae data'n sicr o gael ei golli, oherwydd yn ôl y ddamcaniaeth tebygolrwydd, bydd o leiaf un PG a fydd wedi'i leoli ar y ddau ddisg hyn. Ac mae colli un grŵp yn golygu nad yw'r holl ddata yn y gronfa ar gael. Os rhennir y disgiau yn dri phâr a chaniateir i ddata gael ei storio ar ddisgiau o fewn un pâr yn unig, yna mae dosbarthiad o'r fath hefyd yn gallu gwrthsefyll methiant unrhyw un ddisg, ond os bydd dwy ddisg yn methu, nid yw'r tebygolrwydd o golli data yn digwydd. 100%, ond dim ond 3/15, a hyd yn oed mewn achos o fethiant tri disg - dim ond 12/20. Felly, nid yw entropi wrth ddosbarthu data yn cyfrannu at oddef diffygion. Sylwch hefyd, ar gyfer gweinydd ffeiliau, bod RAM am ddim yn cynyddu'r cyflymder ymateb yn sylweddol. Po fwyaf o gof ym mhob nod, a pho fwyaf o gof ym mhob nod, cyflymaf y bydd. Heb os, mae hyn yn fantais o glwstwr dros un gweinydd ac, hyd yn oed yn fwy felly, NAS caledwedd, lle mae ychydig iawn o gof wedi'i ymgorffori.

Mae'n dilyn bod CEPH yn ffordd dda o greu system storio data ddibynadwy ar gyfer degau o TB gyda'r gallu i raddfa heb fawr o fuddsoddiad o offer sydd wedi dyddio (yma, wrth gwrs, bydd angen costau, ond yn fach o'u cymharu â systemau storio masnachol).

Gweithredu clwstwr

Ar gyfer yr arbrawf, gadewch i ni gymryd cyfrifiadur dadgomisiynu Intel DQ57TM + Intel craidd i3 540 + 16 GB o RAM. Byddwn yn trefnu pedair disg 2 TB yn rhywbeth fel RAID10, ar ôl prawf llwyddiannus byddwn yn ychwanegu ail nod a'r un nifer o ddisgiau.

Gosod Linux. Mae'r dosbarthiad yn gofyn am y gallu i addasu a bod yn sefydlog. Mae Debian a Suse yn bodloni'r gofynion. Mae gan Suse osodwr mwy hyblyg sy'n eich galluogi i analluogi unrhyw becyn; Yn anffodus, ni allwn ddarganfod pa rai y gellid eu taflu heb niweidio'r system. Gosod Debian gan ddefnyddio debootstrap Buster. Mae'r opsiwn sylfaenol yn gosod system sydd wedi torri ac sydd heb yrwyr. Nid yw'r gwahaniaeth mewn maint o'i gymharu â'r fersiwn lawn mor fawr ag i drafferthu. Gan fod y gwaith yn cael ei wneud ar beiriant corfforol, rydw i eisiau cymryd cipluniau, fel ar beiriannau rhithwir. Darperir yr opsiwn hwn naill ai gan LVM neu btrfs (neu xfs, neu zfs - nid yw'r gwahaniaeth yn fawr). Nid yw cipluniau LVM yn bwynt cryf. Gosod btrfs. Ac mae'r cychwynnydd yn y MBR. Nid oes diben annibendod disg 50 MB gyda rhaniad FAT pan allwch ei wthio i mewn i ardal bwrdd rhaniad 1 MB a dyrannu'r holl le ar gyfer y system. Cymerodd 700 MB ar ddisg. Nid wyf yn cofio faint sydd gan y gosodiad SUSE sylfaenol, rwy'n meddwl ei fod tua 1.1 neu 1.4 GB.

Gosod CEPH. Rydym yn anwybyddu fersiwn 12 yn y storfa debian ac yn cysylltu'n uniongyrchol o'r safle 15.2.3. Rydym yn dilyn y cyfarwyddiadau o'r adran “Gosod CEPH â llaw” gyda'r cafeatau canlynol:

  • Cyn cysylltu'r ystorfa, rhaid i chi osod gnupg wget ca-certificates
  • Ar ôl cysylltu'r ystorfa, ond cyn gosod y clwstwr, caiff gosod pecynnau ei hepgor: apt -y --no-install-yn argymell gosod ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • Wrth osod CEPH, am resymau anhysbys, bydd yn ceisio gosod lvm2. Mewn egwyddor, nid yw'n drueni, ond mae'r gosodiad yn methu, felly ni fydd CEPH yn gosod y naill na'r llall.

    Helpodd y clwt hwn:

    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
    

Trosolwg clwstwr

ceph-osd - sy'n gyfrifol am storio data ar ddisg. Ar gyfer pob disg, mae gwasanaeth rhwydwaith yn cael ei lansio sy'n derbyn ac yn gweithredu ceisiadau i ddarllen neu ysgrifennu at wrthrychau. Mae dau raniad yn cael eu creu ar y ddisg. Mae un ohonynt yn cynnwys gwybodaeth am y clwstwr, rhif y ddisg, ac allweddi'r clwstwr. Mae'r wybodaeth 1KB hon yn cael ei chreu unwaith wrth ychwanegu disg ac ni sylwyd arno erioed i newid. Nid oes gan yr ail raniad system ffeiliau ac mae'n storio data deuaidd CEPH. Creodd gosodiad awtomatig mewn fersiynau blaenorol raniad xfs 100MB ar gyfer gwybodaeth gwasanaeth. Trosais y ddisg i MBR a dyrannwyd 16MB yn unig - nid yw'r gwasanaeth yn cwyno. Rwy'n meddwl y gellid disodli xfs ag est heb unrhyw broblemau. Mae'r rhaniad hwn wedi'i osod yn /var/lib/…, lle mae'r gwasanaeth yn darllen gwybodaeth am yr OSD a hefyd yn dod o hyd i gyfeiriad at y ddyfais bloc lle mae'r data deuaidd yn cael ei storio. Yn ddamcaniaethol, gallwch chi osod ffeiliau ategol ar unwaith yn /var/lib/…, a dyrannu'r ddisg gyfan ar gyfer data. Wrth greu OSD trwy ceph-deploy, mae rheol yn cael ei chreu'n awtomatig i osod y rhaniad yn /var/lib/…, ac mae'r defnyddiwr ceph hefyd yn cael hawliau i ddarllen y ddyfais bloc a ddymunir. Os ydych chi'n gosod â llaw, rhaid i chi wneud hyn eich hun; nid yw'r ddogfennaeth yn dweud hyn. Mae hefyd yn ddoeth nodi'r paramedr targed cof osd fel bod digon o gof corfforol.

ceph-mds. Ar lefel isel, storio gwrthrychau yw CEPH. Mae'r gallu i rwystro storio yn dibynnu ar storio pob bloc 4MB fel gwrthrych. Mae storio ffeiliau yn gweithio ar yr un egwyddor. Crëir dau bwll: un ar gyfer metadata, a'r llall ar gyfer data. Maent yn cael eu cyfuno i mewn i system ffeiliau. Ar hyn o bryd, mae rhyw fath o gofnod yn cael ei greu, felly os byddwch chi'n dileu'r system ffeiliau, ond yn cadw'r ddau bwll, ni fyddwch yn gallu ei adfer. Mae yna weithdrefn ar gyfer echdynnu ffeiliau fesul bloc, nid wyf wedi ei brofi. Mae'r gwasanaeth ceph-mds yn gyfrifol am fynediad i'r system ffeiliau. Mae angen enghraifft ar wahân o'r gwasanaeth ar bob system ffeil. Mae yna opsiwn "mynegai", sy'n eich galluogi i greu gwedd sawl system ffeil mewn un - hefyd heb ei brofi.

Ceph-mon - Mae'r gwasanaeth hwn yn storio map o'r clwstwr. Mae'n cynnwys gwybodaeth am yr holl OSDs, algorithm ar gyfer dosbarthu PGs mewn OSDs ac, yn bwysicaf oll, gwybodaeth am yr holl wrthrychau (nid yw manylion y mecanwaith hwn yn glir i mi: mae cyfeiriadur /var/lib/ceph/mon/…/ store.db, mae'n cynnwys ffeil fawr yw 26MB, ac mewn clwstwr o wrthrychau 105K, mae'n troi allan i fod ychydig dros 256 bytes y gwrthrych - rwy'n meddwl bod y monitor yn storio rhestr o'r holl wrthrychau a'r PGs y mae maent wedi'u lleoli). Mae difrod i'r cyfeiriadur hwn yn arwain at golli'r holl ddata yn y clwstwr. Felly daethpwyd i'r casgliad bod CRUSH yn dangos sut mae PGs wedi'u lleoli ar yr OSD, a sut mae gwrthrychau wedi'u lleoli ar PGs - maen nhw'n cael eu storio'n ganolog y tu mewn i'r gronfa ddata, ni waeth faint mae'r datblygwyr yn osgoi'r gair hwn. O ganlyniad, yn gyntaf, ni allwn osod y system ar yriant fflach yn y modd RO, gan fod y gronfa ddata yn cael ei chofnodi'n gyson, mae angen disg ychwanegol ar gyfer y rhain (prin yn fwy nag 1 GB), yn ail, mae angen cael a copïwch y sylfaen hon mewn amser real. Os oes sawl monitor, yna sicrheir goddefgarwch bai yn awtomatig, ond yn ein hachos ni dim ond un monitor sydd, uchafswm dau. Mae yna weithdrefn ddamcaniaethol ar gyfer adfer monitor yn seiliedig ar ddata OSD, fe wnes i droi ato dair gwaith am wahanol resymau, a thair gwaith nid oedd unrhyw negeseuon gwall, yn ogystal â dim data. Yn anffodus, nid yw'r mecanwaith hwn yn gweithio. Naill ai rydym yn gweithredu rhaniad bach ar yr OSD ac yn cydosod RAID i storio'r gronfa ddata, a fydd yn sicr yn cael effaith wael iawn ar berfformiad, neu rydym yn dyrannu o leiaf ddau gyfrwng ffisegol dibynadwy, USB yn ddelfrydol, er mwyn peidio â meddiannu porthladdoedd.

rados-gw - yn allforio storfa gwrthrychau trwy'r protocol S3 a thebyg. Yn creu llawer o byllau, nid yw'n glir pam. Wnes i ddim arbrofi llawer.

ceph-mgr - Wrth osod y gwasanaeth hwn, mae sawl modiwl yn cael ei lansio. Un ohonynt yw awto raddfa na ellir ei analluogi. Mae'n ymdrechu i gynnal y swm cywir o PG/OSD. Os ydych chi am reoli'r gymhareb â llaw, gallwch chi analluogi graddio ar gyfer pob pwll, ond yn yr achos hwn mae'r modiwl yn chwalu gyda rhaniad gan 0, ac mae statws y clwstwr yn dod yn ERROR. Mae'r modiwl wedi'i ysgrifennu yn Python, ac os gwnewch sylwadau ar y llinell angenrheidiol ynddo, mae hyn yn arwain at ei analluogi. Rhy ddiog i gofio'r manylion.

Rhestr o ffynonellau a ddefnyddiwyd:

Gosod CEPH
Adferiad o fethiant monitor cyflawn

Rhestrau sgriptiau:

Gosod y system trwy 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

Creu clwstwr

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

Ychwanegu OSD (rhan)

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

Crynodeb

Prif fantais farchnata CEPH yw CRUSH - algorithm ar gyfer cyfrifo lleoliad data. Mae monitorau yn dosbarthu'r algorithm hwn i gleientiaid, ac ar ôl hynny mae cleientiaid yn gofyn yn uniongyrchol am y nod a ddymunir a'r OSD a ddymunir. Mae CRUSH yn sicrhau dim canoli. Mae'n ffeil fach y gallwch chi hyd yn oed ei hargraffu a'i hongian ar y wal. Mae ymarfer wedi dangos nad yw CRUSH yn fap hollgynhwysfawr. Os ydych chi'n dinistrio ac yn ail-greu'r monitorau, gan gadw'r holl OSD a CRUSH, yna nid yw hyn yn ddigon i adfer y clwstwr. O hyn daethpwyd i'r casgliad bod pob monitor yn storio rhywfaint o fetadata am y clwstwr cyfan. Nid yw swm bach y metadata hwn yn gosod cyfyngiadau ar faint y clwstwr, ond mae angen sicrhau eu diogelwch, sy'n dileu arbedion disg trwy osod y system ar yriant fflach ac yn eithrio clystyrau â llai na thri nod. Polisi ymosodol y datblygwr ynghylch nodweddion dewisol. Ymhell o fod yn finimalaidd. Mae’r ddogfennaeth ar lefel “diolch am yr hyn sydd gennym ni, ond mae’n brin iawn, iawn.” Darperir y gallu i ryngweithio â gwasanaethau ar lefel isel, ond mae'r ddogfennaeth yn cyffwrdd â'r pwnc hwn yn rhy arwynebol, felly mae'n fwy tebygol na nac ydy. Nid oes bron unrhyw siawns o adennill data o sefyllfa o argyfwng.

Opsiynau ar gyfer gweithredu pellach: rhoi'r gorau i CEPH a defnyddio'r btrfs aml-ddisg banal (neu xfs, zfs), darganfod gwybodaeth newydd am CEPH, a fydd yn caniatáu ichi ei weithredu o dan yr amodau penodedig, ceisiwch ysgrifennu eich storfa eich hun fel uwch hyfforddiant.

Ffynhonnell: hab.com

Ychwanegu sylw