Alapok az ábrához:
ceph Mon: Minden ceph storage clusternek van legalább egy monitor démonja. Feladata naprakészen tartani a ceph cluster állapotát illetve az OSD, Placement Ggroup (PG) és a CRUSH mappot.
ceph OSD: Minden ceph storage clusternek van legalább két OSD démonja, hogy "active+clean" állapotba legyen, ez jelzi, hogy minden ok. Ez démon lép interakcióba a logikai lemezzel, tárolja az adatot, visszaállít, Trimmel(ha kell, pl. SSD nél), mozgatja az adatokat, ügyelve az általunk beállított paraméterekre pl. replikációk száma.
ceph MDS: Metadata szerver, csak akkor kell ilyet telepítenünk ha a ceph fájlrendszert szeretnénk kipróbálni.
ceph Client: Mindenki aki használni akarja a storage-ünket.
Tesztkonfig:
- Hálózat:
- Vasak:
public network: 192.168.1.0/24 -Ezen komunikálnak a többiek.
cluster network: 192.168.2.0/24 -Ezen komunikálnak egymással a Ceph OSD-k.
Íme az öt ceph cluster node és az egy darab ntp server:
ceph1:
eth0:192.168.1.124
eth1:192.168.2.124
sdb
ceph2
eth0:192.168.1.238
eth1:192.168.2.238
sdb
ceph3
eth0:192.168.1.163
eth1:192.168.2.163
sdb
mon1
eth0:192.168.1.125
mon2
eth0:192.168.1.153
mon3
eth0:192.168.1.214
ntp-srv
eth0:192.168.1.230
Alapvetően két interfészük és két lemezük van(egy az OS-nek egy pedig egy OSD-nek) kivéve a monitor node mivel ő nem futtat OSD-t neki elég egy disk. Azért van 3 monitor mert így egy kieshet(quorum), OSD-ből 3 van, a háromszoros replikáció miatt ebből kettő is kieshet anélkül, hogy megállna a storage.
OS: Ubuntu14.04
RAM: 1024 MB
CPU:1
sda: 8GB (thin provision)
sdb: 2GB (fixed size disk)
eth0,eth1
Előkészületek:
- Névfeloldás kell DNS vagy hosts fájl.
- Telepíteni kell az ntp csomagot és beállítani ugyan azt a timeszervert az összes node-ra:
sudo apt-get install ntp -y && sudo sed -i 's/0\.ubuntu\.pool\.ntp\.org/ntp-srv/' /etc/ntp.conf
- Jelszó nélküli kulcsos ssh autentikáció kell(ssh-keygen), kell egy user(én "user" nevű felhasználót használok) amelyik az összes node-on fentvan és a kulcsával szabadon jelszó nélkül tud sshval kapcsolódni a cluster gépeire(ssh-copy-id), kivéve persze az ntp szervert.
- Jelszó nélküli sudo jog is kell(echo "user ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/user)
Teljes list az előkészületekről itt
Telepítés:
Elejétől végig a user nevű felhasználóval adom ki a parancsot adom ki a parancsokat
sudo echo "deb http://download.ceph.com/debian-jewel/ trusty main" | sudo tee /etc/apt/sources.list.d/ceph.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
sudo apt-get update && sudo apt-get install ceph-deploy -y
mkdir ceph-conf && cd ceph-conf
- Monitor nodeok telepítése:
ceph-deploy new mon{1..3}
- Kommenteljük ki az itt létrejövő ceph.conf-ból az auth részeket és írjuk bele:
[global]
...
#auth_cluster_required = cephx
#auth_service_required = cephx
#auth_client_required = cephx
# Egyszerűség kedvéért kikapcsolom az auth-ot.
auth_supported = none
# Külön válsztjuk a hálózatokat, később jól jön, ha bővítünk vagy keressük a szűk keresztmetszetet.
public_network = 192.168.1.0/24
cluster_network = 192.168.2.0/24# pg_num számítás: http://ceph.com/pgcalc/
# én most ezt nagyon nem számolgattam, mert csak teszt rendszer :)
osd pool default pg num = 64
osd pool default pgp num = 64[osd]
# Journal számítás MB-ban:
# expected throughput: Ez a disk vagy a network sebességét jelenti MB/s-ben, azt kell választani a kettő közül amelyik a szűk keresztmetszett.
# filestore max sync interval: Default 5, futó rendszernél lekérdezni az osd.0-tól így lehet:sudo ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | grep filestore_max_sync_interval
# osd journal size = {2 * (expected throughput * filestore max sync interval)} kivéve ha pl. külön SSD/HDD partíciót adunk meg journalnak, akkor ez a beállítás érvényét veszti és az egész partíciót használja.
# itt most nem számolgattam, mivel az összes virtuális gépem ugyan azon az egy szem SSD-én fut, virtuális hálózattal.
osd_journal_size = 256
# A recovery és a scrub(ez ilyen fsck jellegű dolog) így lassabb viszont kevésbé terheli le a clustert.
osd recovery max active = 1
osd max backfills = 1 - Ha a config kész végre telepítjük a ceph-et:
ceph-deploy install --release jewel {ceph{1..3},mon{1..3}}
- indítsuk el a monitorokat:
ceph-deploy mon create-initial
- Ez szépen kiírja a nodeok diskjeit, hogy lássuk miből lehet OSD-t csinálni:
ceph-deploy disk list ceph{1,2,3}
könnyű dolgom van, most csak egy darab sdb nevűre tehetek OSD-t - Elkészítjük az OSD-ket:
ceph-deploy osd create ceph{1,2,3}:sdb
Ha lenne külön SSD/HDD partíció a journalnak azt itt lehet megadni(persze ez később is módosítható), mégpedig úgy, hogyceph-deploy osd create ceph{1,2,3}:sdb:sdc1
itt az sdc1 egy minden OSD node-on jelen van - Másoljuk ki az admin kulcsot az admin node-ra, én most mindenhonnan akarom adminolni
ceph-deploy admin {ceph{1..3},mon{1..3}}
- Most örülnünk kéne mert kész, ehelyett:
$ ceph -s
(Ebbe még a hammer verzióval futottam bele, csak azért írom le mert tanúságos lehet)
$ ceph osd tree
Aceph osd tree
kimenetéből látszik, hogy 0 súllyal(weight) rendelkeznek az OSD-ék(pedig ennek >0 kéne lennie... sebaj beállítjuk kézzel!), a ceph ajánlás az, hogy 1-es súllyozást 1TB-os lemeznek adjunk, mivel ezek nálam virtuális lemezek 256MB(OSD journal)+~1790MB(OSD data) így a "0.00179"-es érték lesz a megfelelő:for i in {0..2}; do ceph osd crush reweight osd.$i 0.00179; done
- Ha minden jól megy, ezt kell látnunk:
Teszt:
Ezt már egy client1 nevű gépen csináltam, ami nem része a clusternak, egy monitor-node-ból clónoztam és telepítettem újra ceph kliensnek.
- Próbáljuk ki, először is csinálunk az rbd pool-ba egy 200MB-os lemezképet:
rbd create rbd/teszt --size 200
- Csatoljuk fel(ezt elvileg nem szabad elkövetni a cluster tagjain, csak a ceph klienseken, ezért csináltam egy klienst, majd megpróbáltam felcsatolni):
sudo rbd map rbd/teszt
Kúvvanyád! kis nyomozás után kiderült, hogy ezt a "exclusive-lock"-ot nem támogatja kliens kernel modul... nempara kikapcsoljuk! - Ez kiír egy rakat infót a lemezképrőő
rbd info rbd/teszt
- Kapcsoljuk ki szépen sorba:
rbd feature disable rbd/teszt deep-flatten; rbd feature disable rbd/teszt fast-diff; rbd feature disable teszt exclusive-lock
Mehet megint a map:sudo rbd map rbd/teszt
és most siker, van egy /dev/rbd0 eszközünk. - Jöhet a megformázás:
sudo mkfs.ext4 -m0 /dev/rbd/rbd/teszt
Azért ez a path mert /dev/rbd/$POOL_NAME/RBD_IMAGE_NAME - Felmountolom, rakok bele valamit:
sudo mount /dev/rbd/rbd/teszt /mnt/; dd if=/dev/random of=/mnt/teszt.iso bs=1024M count=3
- "Legyen tánc!"
- kallo blogja
- A hozzászóláshoz be kell jelentkezni
- 1543 megtekintés
Hozzászólások
bookmark
- A hozzászóláshoz be kell jelentkezni
[énis] :)
- A hozzászóláshoz be kell jelentkezni
+1 :)
Kérdés, Ceph storage-ot be tudok e applikálni VM tárolóként Hyper-V, ESXi, XenServer alá valahogy?:)
Köszi!
- A hozzászóláshoz be kell jelentkezni
Igen, valahogy be lehet tenni, de natívan és atombiztosan még egyiket sem :(
Személy szerint nem erőltetnem a xent. Én csak régen próbálkoztam az opensource xen-el, de akkor még nem tudta, talán csak úgy ha felcsatolod a ceph imaget és mint bármilyen blokkeszköz oda adod a xennek, így annyira nem üzemeltettném. Kicsit utána keresve elvileg már url=http://xenserver.org/blog/entry/tech-preview-of-xenserver-libvirt-ceph…] "natívan"(libvirtel), de még nem production ready.
Hyper-V és ESXI alá tudtommal csak úgy lehet ha kiajánlod az rbd imageket ISCSI-n vagy NFS-el.
Mostanában nem foglalkoztam ezekkel, szóval nyugodtan cáfoljon meg valaki aki jobban képbe van. Az biztos, hogy kvm+ceph az nagy királyság lehet jó konfiggal ;)
--------------------
http://grant-it.com/
- A hozzászóláshoz be kell jelentkezni