Ceph

From EIK wiki

Autor

Rain Adamson AK31

Sissejuhatus

Ceph on vabavaraline tarkvara mis võimaldab luua luua serverite vahel tarkvaralise salvestusseadme, mida on võimalik kasutada nii blokkseadmena kui ka objekti põhise andmekandjana. Lisaks on võimaliks andmete replikeerimine serverite vahel , hetktõmmissed (snapshots), veaparandus ja palju muud. Edaspidine kirjatükk kirjeldab Cephi klastri paigaldamist Debian 9 virtuaalmasinatele.

Paigaldamine

Eeldused

Praktumi läbiviimiseks kasutame kolme Debian 9 virtuaalmasinat mis lihtsuse huvides asu samas võrgus ning mille tulemüüridest on kõik sisse ja väljatulev liiklus lubatud.

Võrk: 192.168.122.0/24

Virtuaalmasinatele määratud staatilised IP aadressid

Nimi IP Roll
server-1 192.168.122.100 Deploy
server-2 192.168.122.101 OSD,MON, Metadata
server-3 192.168.122.102 OSD
server-4 192.168.122.103 OSD

Mõisted

OSD
( Object Storage Device ) - Cephi vaste tavalisele füüsilisele andmekandjale. Ühel serveril on soovitatav jooksutada ühte OSD teenust.
MON
Teenus mis jagab infot klientidele, et kus asuvad OSD teenust pakkuvad serverid ja Medadata serverid. Samtui toimu läbi selle logimine ja autentimine. Igast Cephi klastris peab olema vähemalt üks.
RDB
( RADOS Block Devices ) Tarkvaraline lahendus virtuaalsete blokkseadmete lomise tarvis. Looduds spetsiaalselt Ceph-i tarvis ja vaja klientservetitelt vastava kerneli mooduli kasutamist.

Paigaldus

Paigaldada on võimalik käsitsi igale masinale üskhaaval vajalikud teenused, kasutada oma eelistatud konfiguratsioonihaldus tarkvara nagu nt Saltstack, Ansible või Puppet millele kõigile on kogukonna poolt loodud valmis mooduleid või siis kasutada Ceph-i enda poolt pakutavat ceph-deploy utiliiti, mis võimalda kesksest serverist üle SSH ühenduse serveritesse paigaldust teha.

Järgnevas juhendis kasutamegi ceph-deploy utiliiti.

ceph-deploy

Selleks, et üle SSH paigaldada peame looma kasutaja ning andma talle õiguse paroolita ( võtmega ) üle SSH sisse logida.


Paigaldame Server-1 ceph-deploy tööriista

sudo apt-get install python-pip

Loome Kõigis serverites Ceph'i paigalduse tarvis kasutaja.

useradd -m -s /bin/bash ceph-deploy

passwd ceph-deploy # Määrame kontole salasõna

Anname loodud kasutajale ruudu õigused

echo "ceph-deploy ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy

sudo chmod 0440 /etc/sudoers.d/ceph-deploy

Loome Server-1 mida plaanime kasutada paigaldamiseks kasutada ssh võtmepaari

Ssh-rsa.gif

sudo -iu ceph-deploy # Vahetame kasutajat

ssh-keygen -o -t ed25519 # loome võtmepaari

Paigaldame loodud avaliku võtme kõigisse serveritesse

Ssh-copy-id.gif

ssh-copy-id ceph-deploy@192.168.122.101

ssh-copy-id ceph-deploy@192.168.122.102

ssh-copy-id ceph-deploy@192.168.122.103


Järgnevad käsud käivitame ainult Server-1 peal. Loome uue ceph-i klastri

su -c cephuser ceph-deploy new server-2

Paigaldame serveritesse ceph-i tarkvarapaketid

ceph-deploy install server-2 server-3 server-4


Seadistame montitooringu masina. Toodangus soovitatakse jooksutada vähemalt 3 monitooringu masinat + ei soovitada seda teha sama masina peal kus ka OSD jookse.

ceph-deploy mon create-initial ceph-deploy gatherkeys server-2


Kustutame lisaketaste mida soovime cephi jaoks kasutada partitsiooni tabelid tühjaks (Veendu ,et tegu õige kettaga! )

ceph-deploy disk zap server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb

Seadistame OSD'd. See loob vajalikud partitsioonid, seadista failissüteemi ja haagi loodud partitsioonid külge.

ceph-deploy osd prepare server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb

Aktiveerime eelpool loodud OSD'd

ceph-deploy osd activate server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb

Kui nüüd vaadata kas cepj-deployha või siis siis masinasse käsitsi sisse logida ja nt fdisk'iga uurida peaks näha olema, et on loodud 2 uut partitsiooni


ceph-deploy disk list server-2 server-3 server-4
...

...

[server-4][DEBUG ]  /dev/vdb2 ceph journal, for /dev/vdb1
[server-4][DEBUG ]  /dev/vdb1 ceph data, active, cluster ceph, osd.2, journal /dev/vdb2
server4#fdisk -l 
...
...
Device        Start      End  Sectors Size Type
/dev/vdb1  10487808 20971486 10483679   5G Ceph OSD
/dev/vdb2      2048 10487807 10485760   5G Ceph Journal

Jagame admin-võtmed teistele masinatel, et saaksime ceph-i käsurea haldustööriista misthahes masinast kasutada

ceph-deploy admin ceph-admin server-2 server-3 server-4


Testime

Veendume, et klaster töötab. Logime sisse nt server-2 ja käivitame käsud ceph health ja ceph -s veendumaks, et kõik on töökorras ja korrektselt paigaldatud. Oodatud tulemus oleks:

server2# ceph health
HEALTH_OK

server2# ceph -s
    cluster 8054565c-d01f-4dee-8c9e-b32cd1243129
     health HEALTH_OK
     monmap e1: 1 mons at {server-2=192.168.122.101:6789/0}
            election epoch 3, quorum 0 server-2
     osdmap e15: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v27: 64 pgs, 1 pools, 0 bytes data, 0 objects
            105 MB used, 15221 MB / 15326 MB avail
                  64 active+clean


Loome ja haagime virtuaalse blokkseadme server-2 külge:


server2# rbd create ketas1 --size 2000
server2# rbd ls -l
NAME    SIZE PARENT FMT PROT LOCK 
ketas1 2000M          2           

Laeme ja seadistame kerneli mooduli, et oleks võimalik seda ketast külge haakida

server2#sudo modprobe rbd 
server2#sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flatten

Haagime ketta serverile külge

server2#sudo rbd map ketas1

server2#fdisk -l 
...
...
Disk /dev/rbd0: 2 GiB, 2097152000 bytes, 4096000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes

Edasi saame juba nagu tavalise blokkseadme puhul sellele oma soovitud failisüsteemi peale lasta ja ketta külge haakida.

server2# sudo mkfs.ext4 /dev/rbd0 
server2# sudo mkdir /mnt/ceph-test
server2# sudo mount /dev/rbd0 /mnt/ceph-test/
server2# mount -l
...
/dev/rbd0 on /mnt/ceph-test type ext4 (rw,relatime,stripe=1024,data=ordered)
...

Viited

http://docs.ceph.com/docs/master/start/