Ceph: Difference between revisions
No edit summary |
No edit summary |
||
(20 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Autor == | == Autor == | ||
Rain Adamson AK31 | |||
== Sissejuhatus == | == Sissejuhatus == | ||
Ceph on vabavaraline tarkvara mis võimaldab luua luua serverite vahel tarkvaralise salvestusseadme, mida on võimalik kasutada nii blokkseadmena kui ka | 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 | 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 == | == Paigaldamine == | ||
=== Eeldused === | === 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. | 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 | |||
{| class="wikitable" | |||
! 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 === | === 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 [https://github.com/ceph/ceph-deploy ceph-deploy] utiliiti, mis võimalda kesksest serverist üle SSH ühenduse serveritesse paigaldust teha. | ||
Järgnevas juhendis kasutamegi [https://github.com/ceph/ceph-deploy 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 | |||
<code> sudo apt-get install python-pip </code> | |||
Loome Kõigis serverites Ceph'i paigalduse tarvis kasutaja. | |||
<code> | |||
useradd -m -s /bin/bash ceph-deploy | |||
passwd ceph-deploy # Määrame kontole salasõna | |||
</code> | |||
Anname loodud kasutajale ruudu õigused | |||
<code> | |||
echo "ceph-deploy ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy | |||
sudo chmod 0440 /etc/sudoers.d/ceph-deploy | |||
</code> | |||
Loome Server-1 mida plaanime kasutada paigaldamiseks kasutada ssh võtmepaari | |||
[[File:ssh-rsa.gif|thumb]] | |||
<code> | |||
sudo -iu ceph-deploy # Vahetame kasutajat | |||
ssh-keygen -o -t ed25519 # loome võtmepaari | |||
</code> | |||
Paigaldame loodud avaliku võtme kõigisse serveritesse | |||
[[File:ssh-copy-id.gif|thumb]] | |||
<code> | |||
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 | |||
</code> | |||
Järgnevad käsud käivitame ainult Server-1 peal. | |||
Loome uue ceph-i klastri | |||
<code> | |||
su -c cephuser | |||
ceph-deploy new server-2 | |||
</code> | |||
Paigaldame serveritesse ceph-i tarkvarapaketid | |||
<code> | |||
ceph-deploy install server-2 server-3 server-4 | |||
</code> | |||
Seadistame montitooringu masina. Toodangus soovitatakse jooksutada vähemalt 3 monitooringu masinat + ei soovitada seda teha sama masina peal kus ka OSD jookse. | |||
<code> | |||
ceph-deploy mon create-initial | |||
ceph-deploy gatherkeys server-2 | |||
</code> | |||
Kustutame lisaketaste mida soovime cephi jaoks kasutada partitsiooni tabelid tühjaks (Veendu ,et tegu õige kettaga! ) | |||
<code> ceph-deploy disk zap server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb </code> | |||
Seadistame OSD'd. See loob vajalikud partitsioonid, seadista failissüteemi ja haagi loodud partitsioonid külge. | |||
<code> ceph-deploy osd prepare server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb </code> | |||
Aktiveerime eelpool loodud OSD'd | |||
<code>ceph-deploy osd activate server-2:/dev/vdb server-3:/dev/vdb server-4:/dev/vdb </code> | |||
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 | |||
<pre> | |||
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 | |||
</pre> | |||
Jagame admin-võtmed teistele masinatel, et saaksime ceph-i käsurea haldustööriista misthahes masinast kasutada | |||
<code> ceph-deploy admin ceph-admin server-2 server-3 server-4 </code> | |||
=== Testime === | === Testime === | ||
Veendume, et klaster töötab. Logime sisse nt server-2 ja käivitame käsud | |||
<code> ceph health </code> ja <code> ceph -s </code> veendumaks, et kõik on töökorras ja korrektselt paigaldatud. Oodatud tulemus oleks: | |||
<pre> | |||
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 | |||
</pre> | |||
Loome ja haagime virtuaalse blokkseadme server-2 külge: | |||
<pre> | |||
server2# rbd create ketas1 --size 2000 | |||
server2# rbd ls -l | |||
NAME SIZE PARENT FMT PROT LOCK | |||
ketas1 2000M 2 | |||
</pre> | |||
Laeme ja seadistame kerneli mooduli, et oleks võimalik seda ketast külge haakida | |||
<pre> | |||
server2#sudo modprobe rbd | |||
server2#sudo rbd feature disable disk01 exclusive-lock object-map fast-diff deep-flatten | |||
</pre> | |||
Haagime ketta serverile külge | |||
<pre> | |||
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 | |||
</pre> | |||
Edasi saame juba nagu tavalise blokkseadme puhul sellele oma soovitud failisüsteemi peale lasta ja ketta külge haakida. | |||
<pre> | |||
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) | |||
... | |||
</pre> | |||
== Viited == | |||
http://docs.ceph.com/docs/master/start/ | |||
[[Category:Andmesalvestustehnoloogiad]] | [[Category:Andmesalvestustehnoloogiad]] |
Latest revision as of 23:44, 22 January 2018
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
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 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) ...