CEPH traikefa miasa

Rehefa misy angon-drakitra mihoatra noho izay mety ho ao anaty kapila iray, fotoana izao hieritreretana momba ny RAID. Fony aho mbola kely, dia matetika aho no nandre tamin'ny zokiko hoe: “Indray andro any dia ho lasa ny RAID, hameno izao tontolo izao ny fitahirizana zavatra, ary tsy fantatrao akory ny atao hoe CEPH”, izany no zavatra voalohany teo amin'ny fiainako tsy miankina. dia ny hamorona ny cluster ahy manokana. Ny tanjon'ny fanandramana dia ny hahafantatra ny rafitra anatiny ao amin'ny ceph sy hahatakatra ny sahan'ny fampiharana azy. Manao ahoana ny fahamarinan'ny fampiharana ny ceph amin'ny orinasa antonony sy amin'ny orinasa madinika? Taorian'ny taona maromaro niasana sy ny fahaverezan'ny angon-drakitra tsy azo ovaina, dia nisy ny fahatakarana ny fahasarotana fa tsy ny zava-drehetra dia tsotra. Ny mampiavaka ny CEPH dia miteraka sakana amin'ny fananganan'anaka azy miely patrana, ary noho izany dia tonga amin'ny fiafarany ny andrana. Ity ambany ity ny famaritana ny dingana rehetra natao, ny vokatra azo ary ny fehin-kevitra noraisina. Raha mizara ny traikefany sy manazava hevitra sasantsasany ny olona manam-pahalalana dia ho velom-pankasitrahana aho.

Fanamarihana: Ny mpaneho hevitra dia nahita fahadisoana lehibe tao amin'ny eritreritra sasany izay mitaky fanavaozana ny lahatsoratra manontolo.

Tetikady CEPH

Ny klustern'ny CEPH dia manambatra isa tsy misy dikany K amin'ny kapila tsy misy habe ary mitahiry angon-drakitra ao aminy, mandika ny ampahany tsirairay (4 MB raha default) amin'ny isa nomena in-N.

Andeha hodinihintsika ny tranga tsotra indrindra misy kapila roa mitovy. Avy amin'izy ireo dia azonao atao ny manangona RAID 1 na cluster miaraka amin'ny N = 2 - ny vokatra dia mitovy. Raha misy kapila telo ary samy hafa habe, dia mora ny manangona cluster misy N=2: ny sasany amin'ireo angona dia ao amin'ny kapila 1 sy 2, ny sasany dia ao amin'ny kapila 1 sy 3, ary ny sasany dia ho. amin'ny 2 sy 3, raha tsy hanao RAID (azonao atao ny manangona RAID toy izany, fa mety ho fikorontanana izany). Raha misy kapila bebe kokoa, dia azo atao ny mamorona RAID 5; CEPH dia manana analogue - erasure_code, izay mifanohitra amin'ny foto-kevitry ny mpamorona, ary noho izany dia tsy raisina. RAID 5 dia mihevitra fa misy fiara kely, izay samy ao anatin'ny toe-javatra tsara. Raha tsy mahomby ny iray dia tsy maintsy mijanona ny hafa mandra-pisolo ny kapila ary averina amin'ny laoniny ny angona. Ny CEPH, miaraka amin'ny N>=3, dia mamporisika ny fampiasana kapila taloha, indrindra raha mitazona kapila tsara maromaro ianao mba hitahiry dika iray amin'ny angona, ary mitahiry ny roa na telo ambiny amin'ny kapila tranainy be dia be, dia ny fampahalalana. dia ho azo antoka, satria amin'izao fotoana izao dia misy kapila vaovao - tsy misy olana, ary raha tapaka ny iray amin'izy ireo, dia ny tsy fahombiazan'ny kapila telo miaraka amin'ny fiainana fanompoana mihoatra ny dimy taona, indrindra fa avy amin'ny mpizara samihafa, dia tena tsy azo inoana. hetsika.

Misy hafetsena ny fizarana kopia. Amin'ny alàlan'ny default, heverina fa ny angon-drakitra dia mizara ho vondrona fizarana PG (~ 100 isaky ny kapila), ny tsirairay amin'izy ireo dia adika amin'ny kapila sasany. Aleo atao hoe K=6, N=2, dia raha misy kapila roa tsy mety dia azo antoka fa ho very ny data, satria araka ny théorie probabilité dia hisy PG iray farafahakeliny ho hita ao amin'ireo kapila roa ireo. Ary ny fahaverezan'ny vondrona iray dia mahatonga ny angona rehetra ao amin'ny dobo tsy ho azo. Raha mizara ho tsiroaroa telo ny kapila ary avela ho voatahiry ao anaty kapila iray ihany ny angon-drakitra, dia mahatohitra ny tsy fahombiazan'ny kapila iray ihany koa ny fizarana toy izany, fa raha tsy mahomby ny kapila roa, ny mety ho fahaverezan'ny angona dia tsy. 100%, fa 3/15 ihany, ary na dia ny tsy fahombiazana telo kapila - 12/20 ihany. Noho izany, ny entropy amin'ny fizarana data dia tsy mandray anjara amin'ny fandeferana diso. Mariho ihany koa fa ho an'ny mpizara rakitra, ny RAM maimaim-poana dia mampitombo be ny hafainganam-pandehan'ny valiny. Ny fitadidiana bebe kokoa amin'ny node tsirairay, ary ny fitadidiana bebe kokoa amin'ny node rehetra, dia ho haingana kokoa izany. Tsy isalasalana fa tombony ho an'ny kluster amin'ny mpizara tokana ary, indrindra fa ny NAS hardware, izay misy fahatsiarovana kely dia kely.

Manaraka izany fa ny CEPH dia fomba tsara hamoronana rafitra fitahirizana angon-drakitra azo itokisana ho an'ny TB am-polony miaraka amin'ny fahafaha-mitombo amin'ny fampiasam-bola kely indrindra avy amin'ny fitaovana efa lany andro (eto, mazava ho azy, dia ilaina ny fandaniana, fa kely raha oharina amin'ny rafitra fitahirizana ara-barotra).

Fampiharana cluster

Ho an'ny andrana, andeha haka solosaina iray efa tapaka Intel DQ57TM + Intel core i3 540 + 16 GB an'ny RAM. Handamina kapila 2 TB efatra izahay ho toy ny RAID10, aorian'ny fitsapana mahomby dia hanampy node faharoa sy ny isan'ny kapila izahay.

Fametrahana Linux. Ny fitsinjarana dia mitaky fahaizana manamboatra sy marin-toerana. Debian sy Suse dia mahafeno ny fepetra takiana. Suse dia manana installer mora kokoa izay ahafahanao manafoana ny fonosana rehetra; Indrisy anefa fa tsy hitako izay azo ariana raha tsy manimba ny rafitra. Mametraka Debian mampiasa debootstrap buster. Ny safidy min-base dia mametraka rafitra tapaka izay tsy misy mpamily. Ny fahasamihafana amin'ny habeny raha oharina amin'ny dikan-teny feno dia tsy dia lehibe loatra ka manelingelina. Satria vita amin'ny milina ara-batana ny asa, te haka sary aho, toy ny amin'ny milina virtoaly. Ity safidy ity dia omen'ny LVM na btrfs (na xfs, na zfs - tsy dia lehibe ny fahasamihafana). Ny sarin'ny LVM dia tsy teboka matanjaka. Mametraka btrfs. Ary ny bootloader dia ao amin'ny MBR. Tsy misy dikany ny manakorontana ny disk 50 MB miaraka amin'ny fizarazarana FAT rehefa azonao atao ny manosika azy ao amin'ny faritry ny latabatra fizarazarana 1 MB ary manome ny habaka rehetra ho an'ny rafitra. Nahazo 700 MB amin'ny kapila. Tsy tadidiko hoe ohatrinona ny fametrahana SUSE fototra, heveriko fa eo amin'ny 1.1 na 1.4 GB izany.

Mametraka CEPH. Tsy miraharaha ny kinova 12 ao amin'ny tahiry debian izahay ary mifandray mivantana amin'ny tranokala 15.2.3. Araho ny toromarika avy amin'ny fizarana "Install CEPH manually" miaraka amin'ireto fampitandremana manaraka ireto:

  • Alohan'ny hampifandraisana ny tahiry dia tsy maintsy mametraka gnupg wget ca-certificate ianao
  • Aorian'ny fampifandraisana ny tahiry, fa alohan'ny hametrahana ny cluster dia avela ny fametrahana fonosana: apt -y --no-install-recommends install ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • Rehefa mametraka CEPH, noho ny antony tsy fantatra, dia hiezaka ny hametraka lvm2. Amin'ny ankapobeny, tsy mampalahelo izany, fa tsy mahomby ny fametrahana, ka tsy hametraka ny CEPH koa.

    Nanampy ity patch ity:

    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
    

Fijerena vondrona

ceph-osd - tompon'andraikitra amin'ny fitehirizana angon-drakitra amin'ny kapila. Ho an'ny kapila tsirairay dia atomboka ny serivisy tambajotra izay manaiky sy manatanteraka ny fangatahana hamaky na hanoratra amin'ny zavatra. Fizarana roa no noforonina amin'ny kapila. Ny iray amin'izy ireo dia misy fampahalalana momba ny cluster, ny laharan'ny kapila ary ny fanalahidin'ny cluster. Ity fampahalalana 1KB ity dia noforonina indray mandeha rehefa manampy disk ary tsy tsikaritra fa niova. Ny fizarana faharoa dia tsy misy rafitra fichier ary mitahiry angon-drakitra binary CEPH. Ny fametrahana mandeha ho azy amin'ny dikan-teny teo aloha dia namorona fizarazarana 100MB xfs ho fampahalalana momba ny serivisy. Nanova ny disk ho MBR aho ary nanome 16MB fotsiny - tsy mitaraina ny serivisy. Heveriko fa azo soloina ext ny xfs raha tsy misy olana. Ity fizarazarana ity dia napetraka ao amin'ny / var / lib /…, izay amakian'ny serivisy ny fampahalalana momba ny OSD ary ahitana fanondroana ny fitaovana fanakanana izay itahirizana ny angona binary. Ara-teorika, azonao atao avy hatrany ny mametraka rakitra fanampiny ao amin'ny /var/lib/…, ary atokana ho an'ny data ny kapila manontolo. Rehefa mamorona OSD amin'ny alàlan'ny ceph-deploy dia misy fitsipika apetraka ho azy mba hametrahana ny fizarazarana ao amin'ny /var/lib/... Raha mametraka tanana ianao dia tsy maintsy manao izany ny tenanao; tsy milaza izany ny antontan-taratasy. Tsara ihany koa ny mamaritra ny mari-pamantarana kendrena fahatsiarovana osd mba ho ampy ny fitadidiana ara-batana.

ceph-mds. Amin'ny ambaratonga ambany, ny CEPH dia fitahirizana zavatra. Ny fahafahana manakana ny fitehirizana dia midina amin'ny fitehirizana ny sakana tsirairay 4MB ho zavatra. Ny fitehirizana rakitra dia miasa amin'ny fitsipika mitovy. Dobo roa no noforonina: ny iray ho an'ny metadata, ny iray ho an'ny angona. Izy ireo dia mitambatra ho rafitra fichier. Amin'izao fotoana izao dia misy karazana firaketana noforonina, ka raha mamafa ny rafi-drakitra ianao, fa mitazona ny dobo roa, dia tsy ho afaka hamerina azy ianao. Misy procédure amin'ny fitrandrahana rakitra amin'ny alàlan'ny blocs, tsy nanandrana izany aho. Ny serivisy ceph-mds dia tompon'andraikitra amin'ny fidirana amin'ny rafitra fichier. Ny rafitra fisie tsirairay dia mitaky ohatra misaraka amin'ny serivisy. Misy safidy "index", izay ahafahanao mamorona ny endriky ny rafi-drakitra maromaro ao anaty iray - tsy voasedra ihany koa.

Ceph-mon - Ity serivisy ity dia mitahiry sarintanin'ny cluster. Tafiditra ao anatin'izany ny fampahalalana momba ny OSD rehetra, ny algorithm amin'ny fizarana PG amin'ny OSD ary, ny tena zava-dehibe, ny fampahalalana momba ny zavatra rehetra (tsy mazava amiko ny antsipirian'ity mekanika ity: misy ny lahatahiry /var/lib/ceph/mon/…/ store.db, misy lehibe ny rakitra dia 26MB, ary ao anaty cluster misy zavatra 105K, dia hita fa mihoatra ny 256 bytes isaky ny zavatra - Heveriko fa ny monitor dia mitahiry lisitry ny zavatra rehetra sy ny PG izay misy. misy azy ireo). Ny fahasimbana amin'ity lahatahiry ity dia miteraka fahaverezan'ny angona rehetra ao amin'ny cluster. Noho izany dia notsoahina ny fehin-kevitra fa ny CRUSH dia mampiseho ny toerana misy ny PG ao amin'ny OSD, ary ny fomba itoeran'ny zavatra ao amin'ny PGs - voatahiry afovoany ao anaty angon-drakitra izy ireo, na manao ahoana na manao ahoana ny fanalaviran'ny mpamorona an'io teny io. Vokatr'izany, voalohany, tsy afaka mametraka ny rafitra amin'ny kapila tselatra amin'ny mode RO isika, satria voarakitra tsy tapaka ny angon-drakitra, ilaina ny kapila fanampiny ho an'ireo (tsy mihoatra ny 1 GB), faharoa, ilaina ny manana kopia amin'ny fotoana tena izy io fototra io. Raha misy mpanara-maso maromaro, dia azo antoka ho azy ny fandeferana diso, fa amin'ny tranga misy antsika dia tsy misy afa-tsy monitor iray, roa ambony indrindra. Misy fomba teorika amin'ny famerenana ny fanaraha-maso mifototra amin'ny angon-drakitra OSD, intelo aho no nanao izany noho ny antony samihafa, ary in-telo tsy nisy hafatra diso, ary tsy nisy data. Indrisy anefa fa tsy mandeha io mekanika io. Na manao fizarazarana kely amin'ny OSD izahay ary manangona RAID hitahiry ny angon-drakitra, izay azo antoka fa hisy fiantraikany ratsy eo amin'ny fampisehoana, na manolotra haino aman-jery ara-batana azo antoka roa farafahakeliny, indrindra USB, mba tsy hibodo seranana.

rados-gw - manondrana fitahirizana zavatra amin'ny alàlan'ny protocol S3 sy ny mitovy aminy. Mamorona dobo maro, tsy fantatra mazava ny antony. Tsy nanao fanandramana firy aho.

ceph-mgr - Rehefa mametraka ity serivisy ity dia misy modules maromaro natomboka. Ny iray amin'izy ireo dia autoscale izay tsy azo esorina. Miezaka mitazona ny habetsaky ny PG/OSD marina izy io. Raha te-hifehy ny tahan'ny tanana ianao dia azonao atao ny manafoana ny scaling ho an'ny dobo tsirairay, fa amin'ity tranga ity dia mianjera miaraka amin'ny fizarana 0 ny module, ary lasa ERROR ny satan'ny cluster. Ny module dia nosoratana tamin'ny Python, ary raha maneho hevitra ny andalana ilaina ao anatiny ianao, dia mitarika ho amin'ny fanalana azy. Kamo loatra ny mitadidy ny antsipiriany.

Lisitry ny loharano ampiasaina:

Fametrahana ny CEPH
Famerenana amin'ny tsy fahombiazan'ny monitor tanteraka

Lisitry ny script:

Fametrahana ny rafitra amin'ny alàlan'ny 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

Mamorona 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

Manampy OSD (ampahany)

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

famintinana

Ny tombony lehibe amin'ny varotra CEPH dia CRUSH - algorithm amin'ny kajy ny toerana misy ny data. Ny mpanara-maso dia mizara ity algorithm ity amin'ny mpanjifa, ary avy eo ny mpanjifa dia mangataka mivantana ny node irina sy ny OSD irina. CRUSH dia miantoka ny tsy fisian'ny centralization. Izy io dia rakitra kely izay azonao atao pirinty sy ahantona amin'ny rindrina. Ny fanazaran-tena dia naneho fa ny CRUSH dia tsy sarintany feno. Raha manimba sy mamerina ny mpanara-maso ianao, mitazona ny OSD sy CRUSH rehetra, dia tsy ampy hamerenana ny cluster izany. Avy amin'izany dia manatsoaka hevitra fa ny monitor tsirairay dia mitahiry metadata momba ny cluster manontolo. Ny habetsan'ity metadata ity dia tsy mametraka fameperana amin'ny haben'ny cluster, fa mitaky ny fiantohana ny fiarovana azy ireo, izay manafoana ny tahiry kapila amin'ny alàlan'ny fametrahana ny rafitra amin'ny flash drive ary manilika ny cluster misy node latsaky ny telo. Ny politikan'ny mpikatroka masiaka momba ny endri-javatra azo atao. Lavitra ny minimalisma. Ny antontan-taratasy dia eo amin'ny haavon'ny "misaotra amin'izay anananay, fa tena kely dia kely." Ny fahafahana mifandray amin'ny serivisy amin'ny ambaratonga ambany dia omena, fa ny antontan-taratasy dia mikasika ity lohahevitra ity amin'ny ankapobeny, noho izany dia azo inoana kokoa fa tsia noho ny eny. Saika tsy misy ny fahafahana mamerina ny angona avy amin'ny toe-javatra maika.

Safidy ho an'ny hetsika fanampiny: avelao ny CEPH ary ampiasao ny btrfs multi-disk banal (na xfs, zfs), mitadiava fampahalalana vaovao momba ny CEPH, izay ahafahanao miasa amin'ny fepetra voafaritra, andramo manoratra ny fitahirizanao manokana ho toy ny mandroso. fiofanana.

Source: www.habr.com

Add a comment