Erinevus lehekülje "Ceph" redaktsioonide vahel
(→Clustri koostamine) |
(→Clustri koostamine) |
||
| 68. rida: | 68. rida: | ||
[[Pilt:Ceph Architecture2.gif]] | [[Pilt:Ceph Architecture2.gif]] | ||
| + | |||
| + | Võrgu koostamine | ||
| + | |||
| + | [[Pilt:Ditaa-2452ee22ef7d825a489a08e0b935453f2b06b0e6.png]] | ||
===Pools=== | ===Pools=== | ||
Redaktsioon: 25. september 2014, kell 11:23
Sisukord
Sissejuhatus
Ceph on dünaamiliselt exabaidini laiendatav objekti, bloki, and failihoidla, mis arendatud pidades silmas tõrkekindlust. Cephi toetus on uuemates kernelites olemas.
Device Drivers
Block devices
Rados block device (RBD)
File systems
Btrfs filesystem support
Btrfs POSIX Access Control Lists
FUSE (Filesystem in Userspace) support
Network File Systems
Ceph distributed file system
Cephi struktuur
Et kõik ausalt ära rääkida siis Ceph koosneb kolmest põhikompnentist, millede kogumit nimetatakse RADOSiks. Seal on Object Storage Daemon (OSD), Monitor (MON) ja Meta-Data Server (MDS).
OSD on deemon mis tegeleb andmete hoidmise ja paigaldamisega. See deemon peab töötama igas clustri nodes, kus on salvestusseadmed (sas, sata vms kettad). Kui süsteemis pole raidi tuleb nodes käivitada iga ketta kohta oma OSD deemon (nt 4 ketast tähendab 4 deemonit). Kui kasutuses raid siis piisab ühest. Vaikimisi on ühe OSD kohta kolm nn pooli (data, metadata ja rbd).
Teine oluline komponent on monitor. Tegemist on kergekaalulise deemoniga, mis tegeleb klientide ja muude väliste tarkvaratükkidega läbiviidava suhtlusega. Samuti tegeleb ta info terviklikkuse kontrollimise jms töödega (Quorum decisions). Näiteks, kui mountida ceph failisüsteem kliendi poolelt siis tuleb see ühendada MON serveri aadressiga. Ideaalne on cephi soovituse järgi omada clustris kolme monitori.
Meta-data server on koht kuhu salvestatakse metadata. Seda deemonit on tegelikult vaja vaid Ceph failisüsteemi kasutades, RBD'd (cephi blockdevicet kasutades seda vaja ei ole). Hetkel pole clustrisse üle ühe MDS teenuse võimalik paigaldada, arendus käib. Metadata serverites on mõnedes seadistustes kasutatud SSD kettaid.
Ceph on võimeline jagama ja talletama infot kolmel viisil.
- Ceph RGW, mis on Amazon S3 ja openstackiga ühilduv API. Sellele ligipääsuks on vaja paigaldada Radosgw nimeline tarkvara (tegemist fastcgi mooduliga ja tuleb paigaldada fastcgi võimelisele veebiserverile).
- Ceph RBD, mis jagab blokkseadmeid (nt virtuaalmasinatele) ja pakub snapshottimist, provisioneerimist ja pakkimist. RBD tugi on olemas Proxmox VE süsteemis ja olemas on ka QEMU-RBD http://ceph.com/docs/master/rbd/qemu-rbd/.
- CephFS, mis hajus posix ühilduv failisüsteem, seda saab mountida nii kerneli draiveri kui fuse abil ning ta vajab serverites täiendavat MDS (metadata) teenust http://ceph.com/docs/master/cephfs/kernel/
Nagu juba varem öeldud siis on vaja näiteks lihtsa ainult blockseadmeid säilitava ja jagava clustri ehitamiseks OSD ja MON deemoneid sisaldavaid servereid.
Clustri koostamine
Clustriks vajalike arvutite hulgast rääkides ei ole soovitatav kasutada alla kolme serveri, paljud allikad nimetavad production clustri minimaalseks suuruseks viis serverit ning soovitavad nt kolme serveri lahendust kasutada ainult testimiseks.
Esimene küsimus - mitu OSD ja MON serverit/teenust? Kiire gogeldamisega jõuab selleni, et nt 10 monitori igas clustri "õlas" on paha. Soovitatakse kasutada keskmistel või suurtel clustritel kolme. Liiga palju monitore pidid tekitama overheadi endavahelise sünkimisega. Raidi kasutada ei soovitata, soovitatakse kettad panna JBOD formaati raidikaardi korral ja iga ketta kohta üks OSD deemon (seejuures ühe masina kohta üle kaheksa OSD ehk siis ketta ei soovitata). Sageli olid clustrinoded koostatud nii, et 2 väikest ketast opsüsteemiga, 2 SSD ketast journaliga (selleni kohe jõuan) ja kaheksa suurt ketast info jaoks.
Järgneval pildil on blokk-seadmeid jagava clustri skeem, kus kakskümmend kuus OSD masinat, mis kasutavaid kettaid ilma raidita ning omavad iga ketta kohta ühe OSD deemoni ja kolm monitor nodet.
Iga salvestamiseks oleva terabaidi kohta soovitatakse OSDl omada üks gigabait mälu (läheb peamiselt vaja taastamisel jms operatsioonidel). Metadata serveritel 1G iga deemoni instance kohta. Väidetakse, et enamus OSD aeglusi tuleb sellest, et faile hoitakse ühel ja samal kettal.
Teine küsimus - kuidas jagada data ja journal info. Ceph lammutab nimelt kõik info enne ketastele kirjutamist kahte lehte. Esimene siis journal ja teine metadata. Vaikimisi pannakse journal info igale kettale data kõrval asuvasse eraldi olevasse kausta ja Ceph peab suutma kirjutada journali info enne seda, kui saab alustada andmete kirjutamist, mis tekitab traditsioonilistes failisüsteemides nagu EXT4 ja XFS seisaku. Btrfs failisüsteem suudab kirjutada journalit ja infot paraleelselt, mistõttu sobib paremini.
Siinpuhul leidsin tõesti väga palju näiteid, kus kasutatakse süsteemi, et iga kuue "pöörleva" traditsioonilise kõvaketta kohta pannakse serverisse üks SSD ketas metadata jaoks. Pakuti välja selline valem
Journal number = (SSD seq write speed) / (spinning disk seq write speed)
Ehk siis SSD teeb keskmiselt ~500MB/s seq write ja tavaline ketas 110 siis tuligi suhtarv midagi 4.5 mida siis nad ümardasid veel.
Siin toodi näide veel, et kui kirjutada journal ja data ühele ja samale kettale jaguneb liiklus järgnevalt
Device: wMB/s sdb1 - journal 50.11 sdb2 - osd_data 40.25
Ceph OSDs calculate data placement with CRUSH, selleks vajab OSD vähemalt 4 tuuma.
Vähemalt test lingil http://ceph.com/community/ceph-performance-part-1-disk-controller-write-throughput/ näitab, et mõistlik oleks kasutada raidikaardil JBOD (just bunch of drives) võimekust, ehk jagada läbi raidikaardi kõik kettad ükshaaval opsüsteemile ilma raidita välja ning tekitada igale sellisele kettale oma OSD deemon. Samuti tuleks parima jõudluse saavutamiseks kasutada btrfs failisüsteemi.
Cephile ehitatud objektihoidla skeem.
Võrgu koostamine
Pools
When you first deploy a cluster without creating a pool, Ceph uses the default pools for storing data. A pool provides you with:
- Resilience: You can set how many OSD are allowed to fail without losing data. For replicated pools, it is the desired number of copies/replicas of an object. A typical configuration stores an object and one additional copy (i.e., size = 2), but you can determine the number of copies/replicas. For erasure coded pools, it is the number of coding chunks (i.e. m=2 in the erasure code profile)
- Placement Groups: You can set the number of placement groups for the pool. A typical configuration uses approximately 100 placement groups per OSD to provide optimal balancing without using up too many computing resources. When setting up multiple pools, be careful to ensure you set a reasonable number of placement groups for both the pool and the cluster as a whole.
- CRUSH Rules: When you store data in a pool, a CRUSH ruleset mapped to the pool enables CRUSH to identify a rule for the placement of the object and its replicas (or chunks for erasure coded pools) in your cluster. You can create a custom CRUSH rule for your pool.
- Snapshots: When you create snapshots with ceph osd pool mksnap, you effectively take a snapshot of a particular pool.
- Set Ownership: You can set a user ID as the owner of a pool.
pool cephfs tekitamine
rados mkpool cephfs
Set pool replication to 1 (just for testing):
ceph osd pool set cephfs size 1
Pooli sisse luuakse omakorda nt rbd kettad
rbd create {image-name} --size {megabytes} --pool {pool-name}
For example, to create a 1GB image named foo that stores information in a pool named swimmingpool, execute the following:
# rbd create foo --size 1024 --pool swimmingpool
Paigaldamine debianis
Genereeri ssh võti esimesel nodel (server1)
# ssh-keygen -t rsa
Ja kopeeri teistele serveritele
# ssh-copy-id user@server2 # ssh-copy-id user@server3 ..
Paigaldame ceph-deploy, mis teeb cephi paigaldamise paljudele nodedele kergemaks
# sudo apt-get install ceph-deploy
Tekitame clustri
# ceph-deploy new server1
Paigaldame cephi kõigile nodedele
# ceph-deploy install server1 server2 server3
Paigaldame kõigile kolmele serverile ceph monitori
# ceph-deploy mon create server1 server2 server3
Kogume võtme
# ceph-deploy gatherkeys server1
Paigaldame kõigile serveritele OSD (iga ketas nõuab eraldi OSD deemonit)
# ceph-deploy osd --zap-disk create server1:sdb # ceph-deploy osd --zap-disk create server2:sdb # ceph-deploy osd --zap-disk create server3:sdc
Clustri töötamise kontrollimiseks
# sudo ceph -s
placement gropiside arv paika
Selleks kasutame valemit Total PGs = (# of OSDs * 100) / Replicas Näiteks kui on kokku clustris 9 OSDd siis tuleb PG number 9 * 100 = 100
Default number of replicas is 2 so 900/2 = 450 rounded to the next power of 2 so 512.
Uue pooli loomine
ceph osd pool create {name_of_pool} {pg_num}
# sudo ceph osd pool create pve_data 512
Change the number of replica groups for a pool. Important The {num-replicas} includes the object itself. If you want the object and two copies of the object for a total of three instances of the object, specify 3. ceph osd pool set {name_of_pool} size {number_of_replicas}
# sudo ceph osd pool set pve_data size 3
Lingid
Testclustri ehitamine http://ceph.com/docs/master/start/quick-ceph-deploy/
Veel ühe clustri ehitamine http://www.server-world.info/en/note?os=CentOS_6&p=ceph
Jõudlustestid https://software.intel.com/en-us/blogs/2013/10/25/measure-ceph-rbd-performance-in-a-quantitative-way-part-i
Ilusad skeemid aga võõras keeles http://wiki.zionetrix.net/informatique:systeme:ha:ceph
Veel üks võimalik kombinatsioon http://www.openclouddesign.org/articles/vdi-storage/ceph-highly-scalable-open-source-distributed-file-system
Mõned testid http://www.sebastien-han.fr/blog/2012/08/26/ceph-benchmarks/
Performanci nõuanded http://www.slideshare.net/Inktank_Ceph/ceph-performance
Veel üks asjalik ehitusõpetus http://www.sebastien-han.fr/blog/2012/06/10/introducing-ceph-to-openstack/
Testid raidikaartidega http://ceph.com/community/ceph-performance-part-1-disk-controller-write-throughput/
http://www.anchor.com.au/blog/2012/09/a-crash-course-in-ceph/
http://www.jamescoyle.net/how-to/1244-create-a-3-node-ceph-storage-cluster
http://ceph.com/user-story/ceph-from-poc-to-production/ soovitused ja rahul kasutaja
http://www.severalnines.com/blog/how-cluster-liferay-mysql-galera-and-ceph-high-availability-and-performance?page=5 kasulik juhend, tasub uurida.
http://dachary.org/?p=1971 kah hea




