Profiad gyda CEPH

Pan fydd eich data yn tyfu y tu hwnt i'r hyn sy'n gallu ffitio ar un ddisg, mae'n bryd ystyried RAID. Fel plentyn, roeddwn i'n aml yn clywed fy henuriaid yn dweud, "Un diwrnod, bydd RAID yn beth o'r gorffennol, bydd storio gwrthrychau yn cymryd drosodd y byd, ac nid ydych chi hyd yn oed yn gwybod beth yw CEPH." Felly, fy ngham cyntaf fel unigolyn annibynnol oedd creu fy nghlwstwr fy hun. Nod yr arbrawf hwn oedd ymgyfarwyddo â thu mewn Ceph a deall ei gwmpas cymhwysiad. Pa mor ymarferol yw Ceph ar gyfer busnes canolig ei faint, a pha mor ymarferol ydyw ar gyfer un bach? Ar ôl sawl blwyddyn o ddefnydd a chwpl o golledion data na ellir eu gwrthdroi, sylweddolais nad yw'r manylion mor syml. Mae nodweddion penodol CEPH yn creu rhwystrau i'w fabwysiadu'n eang, ac oherwydd hynny, cyrhaeddodd fy arbrofion ben llestri. Isod mae disgrifiad o'r holl gamau a gymerwyd, y canlyniadau a gafwyd, a'r casgliadau a gyrhaeddwyd. Pe bai unrhyw un sydd ag arbenigedd yn gallu rhannu eu profiadau ac egluro unrhyw bwyntiau, byddwn yn ddiolchgar.

Nodyn: Mae sylwebyddion wedi tynnu sylw at wallau difrifol mewn rhai rhagdybiaethau sy'n gofyn am adolygiad o'r erthygl gyfan.

Strategaeth CEPH

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

Beth am ystyried yr achos symlaf gyda dau ddisg union yr un fath. Gellir eu defnyddio i greu clwstwr RAID 1 neu N=2—bydd y canlyniad yr un fath. Os oes tri disg o wahanol feintiau, yna mae creu clwstwr N=2 yn hawdd: bydd rhywfaint o ddata ar ddisgiau 1 a 2, rhywfaint ar 1 a 3, a rhywfaint ar 2 a 3, ond nid yw RAID (mae'n bosibl creu RAID o'r fath, ond byddai hynny'n wyrdroad). Os oes hyd yn oed mwy o ddisgiau, yna mae creu RAID 5 yn bosibl. Mae gan CEPH gyfwerth, cod_erasure, sy'n gwrth-ddweud cysyniadau cynnar y datblygwyr ac felly nid yw'n cael ei ystyried. Mae RAID 5 yn tybio nifer fach o ddisgiau, pob un mewn cyflwr da. Os bydd un yn methu, dylai'r lleill oroesi nes bod y ddisg yn cael ei disodli a'r data yn cael ei adfer. Fodd bynnag, mae CEPH, gydag N>=3, yn annog defnyddio disgiau hŷn. Yn benodol, os ydych chi'n cadw sawl disg da i storio un copi o'r data, ac yn storio'r ddau neu dri chopi sy'n weddill ar nifer fawr o ddisgiau hŷn, yna bydd y wybodaeth yn ddiogel, gan nad oes unrhyw broblemau tra bo'r disgiau newydd yn fyw, ac os bydd un ohonynt yn torri, yna mae methiant tri disg ar yr un pryd sydd â bywyd gwasanaeth o fwy na phum mlynedd, yn ddelfrydol o wahanol weinyddion, yn ddigwyddiad annhebygol iawn.

Mae yna gynildeb i ddosbarthiad copïau. Yn ddiofyn, mae data wedi'i rannu'n nifer fawr (~100 fesul disg) o grwpiau dosbarthu (PGs), ac mae pob un ohonynt wedi'i ddyblygu ar rai disgiau. Dyweder K = 6, N = 2. Yna, os bydd unrhyw ddau ddisg yn methu, mae gwarant y bydd data'n cael ei golli, gan fod damcaniaeth tebygolrwydd yn pennu y bydd o leiaf un PG yn aros ar y ddau ddisg hyn. Mae colli un grŵp yn gwneud yr holl ddata yn y pwll yn anhygyrch. Os yw'r disgiau wedi'u rhannu'n dri phâr a dim ond ar ddisgiau o fewn un pâr y mae data wedi'i storio, mae'r dosbarthiad hwn hefyd yn wydn i fethiant unrhyw ddisg sengl. Fodd bynnag, os bydd dau ddisg yn methu, nid yw'r tebygolrwydd o golli data yn 100%, ond dim ond 3/15, a hyd yn oed os bydd tri disg yn methu, dim ond 12/20. Felly, nid yw entropi yn y dosbarthiad data yn cyfrannu at oddefgarwch namau. Mae hefyd yn werth nodi bod RAM rhydd yn cynyddu amser ymateb gweinydd ffeiliau yn sylweddol. Po fwyaf o gof sydd ym mhob nod, a pho fwyaf o gof ar draws pob nod, y cyflymaf fydd. Mae hyn yn ddiamau yn fantais i glwstwr dros un gweinydd, ac yn enwedig dros NAS caledwedd, sydd fel arfer â chof bach iawn.

Mae hyn yn golygu bod CEPH yn ffordd dda o greu system storio data ddibynadwy, graddadwy gyda degau o TB o gapasiti o galedwedd etifeddol gyda buddsoddiad lleiaf posibl (bydd hyn, wrth gwrs, yn gofyn am gostau, ond maent yn fach o'i gymharu â systemau storio masnachol).

Gweithredu clwstwr

Ar gyfer yr arbrawf, byddwn yn defnyddio cyfrifiadur Intel DQ57TM sydd wedi'i ddadgomisiynu gydag Intel Core i3 540 a 16 GB o RAM. Byddwn yn trefnu pedwar gyriant 2 TB i mewn i gyfluniad tebyg i RAID 10. Ar ôl prawf llwyddiannus, byddwn yn ychwanegu ail nod a'r un nifer o yriannau.

Gosod LinuxMae angen i'r dosbarthiad fod yn addasadwy ac yn sefydlog. Mae'r gofynion hyn yn cael eu bodloni gan Debian a Suse. Mae gan Suse osodwr mwy hyblyg, sy'n eich galluogi i analluogi unrhyw becyn; yn anffodus, allwn i ddim darganfod pa rai y gallwn eu tynnu heb niweidio'r system. Fe wnaethon ni osod Debian Gan ddefnyddio debootstrap buster. Mae'r opsiwn min-base yn gosod system nad yw'n swyddogaethol sydd heb yrwyr. Nid yw'r gwahaniaeth maint o'i gymharu â'r fersiwn lawn mor arwyddocaol fel ei fod yn werth poeni amdano. Gan fy mod yn gweithio ar beiriant ffisegol, hoffwn dynnu cipluniau, fel ar beiriannau rhithwir. Mae naill ai LVM neu btrfs (neu xfs, neu zfs—nid yw'r gwahaniaeth mor fawr) yn darparu'r gallu hwn. Nid cipluniau yw cryfder LVM. Byddwn yn gosod btrfs. Ac mae'r llwythwr cychwyn yn yr MBR. Nid oes pwynt llenwi disg 50 MB gyda rhaniad FAT pan allwch ei wasgu i mewn i ardal tabl rhaniad 1 MB a neilltuo'r holl le i'r system. Cymerodd 700 MB o le disg. Dydw i ddim yn cofio faint mae'r gosodiad SUSE sylfaenol yn ei ddefnyddio, ond rwy'n credu ei fod tua 1.1 neu 1.4 GB.

Gosod CEPH. Anwybyddwch fersiwn 12 yn y storfa. debian a chysylltu'n uniongyrchol o wefan 15.2.3. Dilynwch y cyfarwyddiadau yn yr adran "Gosod CEPH â Llaw", gyda'r rhybuddion canlynol:

  • Cyn cysylltu'r storfa, rhaid i chi osod gnupg wget ca-certificates
  • Ar ôl cysylltu'r storfa, ond cyn gosod y clwstwr, hepgorwch osod pecynnau: apt -y --no-install-recommends install ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • Yn ystod y gosodiad, bydd CEPH, am ryw reswm anhysbys, yn ceisio gosod lvm2. Nid yw hyn yn broblem fawr, ond mae'r gosodiad yn methu, felly ni fydd CEPH yn gosod ychwaith.

    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 <adduser@packages.debian.org>
    Architecture: all
    Multi-Arch: foreign
    Version: 113.118
    Description: No-install
    EOF
    

Trosolwg o'r clwstwr

Mae ceph-osd yn gyfrifol am storio data ar y ddisg. Mae gwasanaeth rhwydwaith yn cael ei gychwyn ar gyfer pob disg, sy'n derbyn ac yn gweithredu ceisiadau i ddarllen neu ysgrifennu gwrthrychau. Mae dau raniad yn cael eu creu ar y ddisg. Mae un yn cynnwys gwybodaeth am y clwstwr, rhif y ddisg, ac allweddi'r clwstwr. Mae'r 1KB hwn o wybodaeth yn cael ei greu unwaith pan ychwanegir y ddisg ac nid yw erioed wedi newid ers hynny. Nid oes gan yr ail raniad system ffeiliau ac mae'n storio data deuaidd CEPH. Creodd gosod awtomatig mewn fersiynau blaenorol raniad xfs 100MB ar gyfer gwybodaeth gwasanaeth. Trosgais y ddisg i MBR a dyrannu dim ond 16MB—ni chwynodd y gwasanaeth. Rwy'n credu y gellid disodli xfs yn hawdd gydag ext. Mae'r rhaniad hwn wedi'i osod o dan /var/lib/…, lle mae'r gwasanaeth yn darllen gwybodaeth am yr OSD ac hefyd yn dod o hyd i gyfeiriad at y ddyfais bloc lle mae'r data deuaidd wedi'i storio. Yn ddamcaniaethol, gallech chi osod y rhaniadau ategol ar unwaith yn /var/lib/… a neilltuo'r ddisg gyfan i ddata. Wrth greu OSD drwy ceph-deploy, crëir rheol yn awtomatig i osod y rhaniad yn /var/lib/… a rhoddir caniatâd darllen i'r defnyddiwr ceph ar gyfer y ddyfais bloc ofynnol. Yn ystod y gosodiad â llaw, rhaid i chi wneud hyn â llaw; nid yw'r ddogfennaeth yn sôn am hyn. Argymhellir hefyd nodi'r paramedr targed cof osd i sicrhau digon o gof ffisegol.

ceph-mds. Ar lefel isel, storio gwrthrychau yw CEPH. Mae storio blociau wedi'i gyfyngu i storio pob bloc 4MB fel gwrthrych. Mae storio ffeiliau yn gweithredu ar yr un egwyddor. Crëir dau bwll: un ar gyfer metadata, y llall ar gyfer data. Fe'u cyfunir i mewn i system ffeiliau. Ar y pwynt hwn, crëir cofnod, felly os ydych chi'n dileu'r system ffeiliau ond yn cadw'r ddau bwll, ni ellir ei adfer. Mae gweithdrefn ar gyfer adfer ffeiliau bloc wrth floc, ond nid wyf wedi'i phrofi. Mae'r gwasanaeth ceph-mds yn gyfrifol am gael mynediad at y system ffeiliau. Mae angen enghraifft ar wahân o'r gwasanaeth ar gyfer pob system ffeiliau. Mae opsiwn "mynegai" sy'n eich galluogi i greu tebygrwydd o systemau ffeiliau lluosog o fewn un, ond nid yw hyn wedi'i brofi chwaith.

Mae Ceph-mon yn wasanaeth sy'n cynnal map clwstwr. Mae'n cynnwys gwybodaeth am bob OSD, yr algorithm ar gyfer dosbarthu PGs ar draws OSDs, ac, yn bwysicaf oll, gwybodaeth am bob gwrthrych (mae manylion y mecanwaith hwn yn aneglur i mi: mae cyfeiriadur o'r enw /var/lib/ceph/mon/…/store.db sy'n cynnwys ffeil fawr—26 MB—ac mae gan y clwstwr 105K o wrthrychau, sy'n cyfateb i ychydig dros 256 beit fesul gwrthrych. Rwy'n credu bod y monitor yn cadw rhestr o'r holl wrthrychau a'r PGs y maent yn byw ynddynt). Mae difrod i'r cyfeiriadur hwn yn arwain at golli'r holl ddata yn y clwstwr. Felly, y casgliad yw bod CRUSH yn dangos sut mae PGs wedi'u dosbarthu ar draws OSDs, tra bod sut mae gwrthrychau wedi'u dosbarthu ar draws PGs yn cael ei storio'n ganolog o fewn y gronfa ddata, ni waeth sut mae'r datblygwyr yn osgoi defnyddio'r term hwnnw. O ganlyniad, yn gyntaf, ni allwn osod y system ar yriant fflach yn y modd RO, gan fod y gronfa ddata yn cael ei hysgrifennu iddi'n gyson. Mae angen disg ychwanegol (annhebygol o fod yn fwy nag 1 GB) at y diben hwn. Yn ail, mae angen copi amser real o'r gronfa ddata hon. Os oes sawl monitor, sicrheir goddefgarwch nam yn awtomatig, ond yn ein hachos ni, dim ond un monitor sydd, neu ddau ar y mwyaf. Mae gweithdrefn ddamcaniaethol ar gyfer adfer y monitor yn seiliedig ar ddata OSD; Rwyf wedi'i ddefnyddio dair gwaith am wahanol resymau, a thair gwaith nid oedd unrhyw negeseuon gwall, nac unrhyw ddata. Yn anffodus, nid yw'r mecanwaith hwn yn gweithio. Naill ai rydym yn defnyddio rhaniad bach ar yr OSD ac yn creu RAID ar gyfer storio'r gronfa ddata, a fydd yn sicr o gael effaith negyddol iawn ar berfformiad, neu rydym yn dyrannu o leiaf ddau yriant corfforol dibynadwy, USB yn ddelfrydol, i osgoi defnyddio porthladdoedd.

rados-gw — yn allforio storfa gwrthrychau drwy S3 a phrotocolau tebyg. Mae'n creu pyllau lluosog, am resymau anhysbys. Dydw i ddim wedi arbrofi llawer ag ef.

ceph-mgr — pan fydd y gwasanaeth hwn wedi'i osod, mae sawl modiwl yn cael eu cychwyn. Un ohonynt yw autoscale, na ellir ei analluogi. Mae'n cynnal y gymhareb PG/OSD gywir. Os ydych chi am reoli'r gymhareb â llaw, gallwch analluogi graddio ar gyfer pob pwll, ond yn yr achos hwn, mae'r modiwl yn damwain gyda rhannu â sero, ac mae statws y clwstwr yn dod yn ERROR. Mae'r modiwl wedi'i ysgrifennu yn Python, ac mae rhoi sylwadau ar y llinell ofynnol yn ei analluogi. Rwy'n rhy ddiog i gofio'r manylion.

Rhestr o ffynonellau a ddefnyddiwyd:

Gosod CEPH
Adferiad o fethiant llwyr y monitor

Rhestrau sgriptiau:

Gosod y system drwy 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 <adduser@packages.debian.org>
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 <adduser@packages.debian.org>
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 marchnata CEPH yw CRUSH, algorithm cynllun data. Mae monitorau yn dosbarthu'r algorithm hwn i gleientiaid, sydd wedyn yn gofyn yn uniongyrchol am y nod a'r OSD gofynnol. Mae CRUSH yn dileu canoli ac mae'n ffeil fach, sy'n addas ar gyfer argraffu a'i hongian ar y wal. Mae profiad wedi dangos nad yw CRUSH yn fap cynhwysfawr. Nid yw dinistrio ac ail-greu monitorau, gan gadw'r holl OSDau a CRUSH, yn ddigonol i adfer y clwstwr. Mae hyn yn awgrymu bod pob monitor yn storio rhywfaint o fetadata am y clwstwr cyfan. Nid yw maint bach y metadata hwn yn cyfyngu ar faint y clwstwr, ond mae'n gofyn am ei gadw, sy'n atal arbedion disg trwy osod y system ar yriant fflach ac yn dileu clystyrau gyda llai na thri nod. Mae polisi ymosodol y datblygwr ynghylch nodweddion dewisol ymhell o fod yn finimalaidd. Mae'r ddogfennaeth ar lefel "diolch am yr hyn sydd gennym, ond mae'n brin iawn, iawn." Mae rhyngweithio lefel isel â gwasanaethau yn bosibl, ond mae'r ddogfennaeth yn rhy fyrlymus ar y pwnc hwn, felly mae'n fwy tebygol o na nag ie. Mae'r siawns o adfer data o argyfwng bron yn ddi-rym.

Opsiynau ar gyfer gweithredu pellach: rhoi'r gorau i CEPH a defnyddio btrfs aml-ddisg diflas (neu xfs, zfs), dysgu gwybodaeth newydd am CEPH a fydd yn caniatáu iddo gael ei ddefnyddio yn yr amodau penodedig, rhoi cynnig ar ysgrifennu eich storfa eich hun fel hyfforddiant uwch.

Ffynhonnell: hab.com

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster