Szóval a konfig:
ntp-srv - Ez egyben a host és az ubuntu 15.10-es desktop gépem,kvm-el és virt-manager-rel
ceph1 - 14.04 vm
ceph2 - 14.04 vm
ceph3 - 14.04 vm
mon1 - 14.04 vm
mon2 - 14.04 vm
mon3 - 14.04 vm
openwrt - openwrt-15.05.1 vm, ennek a diskje a ceph-en lesz
Ceph kliens telepítése a host(ntp-srv) gépre:
Ezeket a parancsokat egy ceph admin gépről indítom ugye ezt az előző blogbejegyzésemben felraktam az összes gépre.
Különböző függőségek(ugye ezen ubuntu 15.10 van) miatt csak hammer verziót tudtam rakni a host gépemre, sebaj... így csináltam:
ceph-deploy install --no-adjust-repos ntp-srv# ubuntu repóból dolgozok
ceph-deploy admin ntp-srv
Openwrt disk beszerzése, ceph-re másolása és vm indítása:
- Leszedtem egy openwrt-15.05.1-x86-64-combined-ext4.img nevű lemezképet madj felmásoltam a ceph rbd pooljába:
rbd import Downloads/openwrt-15.05.1-x86-64-combined-ext4.img rbd/openwrt
- Megint fogtam a letöltött imaget beletettem(ezt virt-managerbe csináltam, nem részletezem) egy vm-be és elindítom a vm-et majd ha meggyőződtem róla, hogy fut szépen le is állítom.
- Mivel a virt-manager még nem nagyon támogatja a cephet de a libvirt igen, kézzel átszerkesztem az openwrt vm konfigját(/etc/libvirt/qemu/openwrt.xml), hogy az imént felmásot disket használja.
Ezt a disk részt átírom:
erre:
A többihez nem nyúlok.
A szerkesztés után kell egy libvirt restart, hogy felnyalja az új konfigot
sudo service libvirt-bin restart
- Teszteléshez elindítom a VM-et majd kimentem a futó vm konfigját és ellenőrzöm ,hogy az van-e benne amit beleszerkesztettem, így mentem ki:
sudo virsh dumpxml openwrt > openwrt.xml
A virtuális ceph-en van a vm diskje
Na most akkor végre nekikezdhetek a frissítésnek
Előkészületek:
- Itt vannak a verziók: jól látható, hogy 5 verziót kell ugranom.
- Itt vannak a tanácsok a frissítéshez: egyből nem frissíthetek jewel-re, csak a hammer-ra
- Itt vannak tanácsok hammer-ra frissítéshez
- Itt vannak tanácsok jewel-re frissítéshez
Frissítés:
Ezeket a parancsokat megint egy ceph admin gépről indítom
- Elsőre telepítem a legfrissebb ceph-deploy csomagot:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - && sudo apt-key add -
echo deb http://download.ceph.com/debian-jewel/ trusty main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt-get update && sudo apt-get install ceph-deploy -y
- A release-notes szerint a monitor node-okkal kell kezdenem:
cd ceph-conf && ceph-deploy install --release giant mon3
biztonság kedvéért egyszerre csak egyet* (igen elbasztam, hammer-re kellett volna, de véletlen giant-ra frissítettem, sebaj)
Eleresztem megint a frissítést, de most már hammer-re:
ceph-deploy install --release hammer mon3
Újra is indítom:
ssh mon3 'sudo restart ceph-mon-all'
- Mivel a ceph státus OK maradt és az openwrt vm is fut frissítem a többi monitort, de csak egyenként, mert egyszerre csak egy eshet ki a háromból.
- Szerk: ****
- Jöhetnek az OSD-k, itt merek egyszerre kettőt frissíteni**.
ceph-deploy install --release hammer ceph{2..3}
Újraindítom az OSD-ket is:
for i in ceph{2..3}; do ssh $i 'sudo restart ceph-osd-all'; done
Minden rendben ment most is, ezért megcsinálom a maradék OSD démont is.
így ellenörzöm:
for i in {ceph{1..3},mon{1..3},ntp-srv};do echo $i; ssh $i 'sudo dpkg -l | grep ceph'; done
- Mehetünk tovább a release-notesba, immár hammer-ról jewle-re, itt gyorsan meg is találtam a:
rbd default features = 1
ceph.conf paramétert, ami arra van, hogy default ne kapcsolja be azokat a feature-ket amiket egyébként az rbd kliens kernel modul nem támogat, ugye ebbe arcal beleszaladtam az előbb blogbejegyzésembe :)
Történt közben egy olyan változás, hogy az új verzión már nem root-ként fognak futni a ceph démonok hanem ceph usrrel, a munkahelyi játszótéren(a virtualbox-os) ez nem probléma mert ott user felhasználót használtam deploy-ra, itthon viszont egy régebbi beidegződés okán ceph usert(mintha direkt szopatnám magam), ezt a ceph usert éles környezetben is használtam régebben akkor(régebbi verziókon) logikusnak tűnt. Nem para, van rá megoldás a release-notes-ba ...nyílván más is ráfutott.
A feledat az, hogy(Szerk: így utólag ránézve a listára/parancsokra fel kellett volna tegyek egy configmanagementet pl. ansibile, de az egy következő blogbejegyzés lesz):- Amíg még megvan a ceph nevű userem csinálok másik usert, sudoers-el és ssh kulcsokkal:
for i in {ceph{1..3},mon{1..3},ntp-srv};do echo $i; ssh $i 'sudo useradd -mU -s "/bin/bash" user; echo "user ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/user; sudo chmod 640 /etc/sudoers.d/user; sudo cp -r /home/ceph/. /home/user/; sudo chown user:user -R /home/user/.;'; done
Ami fontos a .ssh mappába a kulcson és authorized_keys fájlon kívül az a config fájl, nálam ez a tartalma:- Host client* mon* ceph* 192.168.1.* 192.168.0.*
- StrictHostKeyChecking = no
- UserKnownHostsFile = /dev/null
- LogLevel = QUIET
Gyors teszt:
sudo su - user
for i in {ceph{1..3},mon{1..3},ntp-srv};do ssh $i 'hostname -f';done
- Amíg még megvan a ceph nevű userem csinálok másik usert, sudoers-el és ssh kulcsokkal:
- Ha a teszt lefutott és kiírta az összes hostnevet Leszedhetem a ceph usert, groupot és sudores fájlt immár a user felhasználóval:
for i in {ceph{1..3},mon{1..3},ntp-srv};do echo $i;ssh $i 'sudo userdel -f ceph; sudo groupdel ceph; sudo rm /etc/sudoers.d/ceph';done
- A monitorokon frissítem a ceph csomagokat jewel-re, ahogy szoktam monitorral kezdek, egyszerre csak egyet:
ceph-deploy install --release jewel mon3
Újra is indítom, most kicsit másképp mint eddig:
ssh mon3 'sudo stop ceph-all && sudo chown -R ceph:ceph /var/lib/ceph && sudo start ceph-all'
# Ezt a release-notes-ba találtam, azt hiszem ez egyértelmű, mivel ugye usert változtattunk.
Hibátlanúl lefutott, megcsinálom a többi monitorra is.
Az utolsó monitor újraindítása után gyorsan kaptam is egy hibaüzenetet, csak igaz "csak" warning.
"crush map has legacy tunables (require bobtail, min is firefly)"
Az itt leírtak szerint váltok tunablest***:
ceph osd crush tunables hammer
# és megint visszaálltunk "HEALTH_OK" állapotra. Azért hammer-ra mentem mert az osd-k még ezen a verzión vannak(ezzel a lépéssel lehet várhattam volna az OSD-k és kliensek frissítéséig, majd akkor egyből mehetett volna optimal-ra.) - Most az OSD node-okon is frissítem a ceph csomagokat jewel-re, most kettesével mehet:
- ****
- Most tolom a hoston is a frissítést. Itt gyorsan hibába is futok, mert a 15.10 nem támogatott, nembaj megpróbálom rátákolni a xenial verziót.
Ezzel az elég egyértelmű hibával szált el:[ntp-srv][WARNIN] W: Failed to fetch https://download.ceph.com/debian-jewel/dists/wily/main/binary-amd64/Packages HttpError404
.
Itt jön a tákolás:
ssh ntps-srv 'sudo sed -i 's/wily/xenial/' /etc/apt/sources.list.d/ceph.list'
# Mint a fenti hibaüzenetből látszik itt már a jewel repo fájl van, így elég csak a wily-t xenial-ra cserélni.
ceph-deploy install --no-adjust-repos --release jewel ntp-srv
# itt ugye megtiltom a ceph-deploy-nak, hogy fejenvágja a ceph.list fájlt. - Megint ellenőrizzük a verzióinkat:
for i in {ceph{1..3},mon{1..3},ntp-srv};do echo -e "$i\n"; ssh $i 'dpkg -l | grep ceph';done
A python-ceph nem frissűlt, azzal most nem foglalkozom, hogy egyátalán minden gépen szükség van-e rá, csak simán lefrissítem kézzel:
for i in {ceph{1..3},mon{1..3},ntp-srv};do echo -e "$i\n"; ssh $i 'sudo apt-get install -y python-ceph';done
- A ceph verzió az összes node-on: 10.2.0-1trusty, a most elérhető legfrissebb stabil, így átrakhatom a tunablest optimal-ra.
ceph osd crush tunables optimal
Kész, az openwrt-s gép még mindig fut, észre se vett semmit az eseményekből :)
ceph-deploy install --release jewel ceph{2,3}
for i in ceph{2,3};do ssh $i 'sudo stop ceph-all && sudo chown -R ceph:ceph /var/lib/ceph && sudo start ceph-all';done
# Ez a chown sokáig is eltarthat, ha sok az (ojjektum)
Az utolsó OSD-n is megcsinálom, minden rendben ment.
* - Ha 5 monitorom lenne a quorum miatt egyszerre két monitort is frissíthetnék, arra kell vigyázni, hogy a többség fusson.
** - Erősen konfig függő, hogy egyszerre hányat frissítek, pl, hogy hány replikációt használok vagy ha lennének erasure coded pool-ok akkor a K,M változókból a legkisebb M-nél többet semmiképen sem.
*** - Ezzel óvatosan mert ezzel váltogatunk az adat elosztásának az algoritmusai között, értelem szerűen ha elállítom az adatoknak is mozognia kell az új algoritmus szerint, egyszóval lehetséges, hogy kicsit belassul a storage(ha sok adat van rajta) amíg minden a helyére nem kerül, ne csúcsidőben csináljuk ;) szerk: lásd ( NagyZ | 2016. május 3., kedd - 3:45 )
Szerk: **** Egy fontos dolog kimaradt, mielőtt lelőjük az OSD-ket egy éles rendszeren érdemes lehet, ideiglenesen pár dolgot bekapcsolni:
ceph osd set noout
# Azt csinálja, hogy kikapcsolja az adatmozgást, amíg min_size(ceph osd pool get rbd min_size) darab replikáció van, így a következőkben, erre figyelni kell, hogy ennyi OSD maradjon.
Ez a két opció azért van, hogy amíg frissítünk/újraindítgatunk ne terhelje más az amúgy is hiányos clusterünket.
ceph osd set nodeep-scrub
ceph osd set noscrub
- kallo blogja
- A hozzászóláshoz be kell jelentkezni
- 1220 megtekintés
Hozzászólások
Thx a beszámolót/howtot/akármit! :)
- A hozzászóláshoz be kell jelentkezni
+1, hamarosan pont jól jön ;)
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
a 3*-os megjegyzeshez: tunable valtas (illetve cephnel BARMILYEN adatmozgassal jaro muvelet siman kinyirja az osszes VMet (IO waitbe kerulnek, a kernel meg elkezdi nyomni az uzeneteket, hogy stuck IO), szoval nem javaslom.*
*: sajat csillagos megjegyzes: ez csak kis rendszereket erinti szerintunk, mi a hetekben fogunk egy hammer->jewel upgradet csinalni egy 2PB-s clusteren, majd meglatjuk
- A hozzászóláshoz be kell jelentkezni
Köszi az infót, én kissé elbagatellizáltam a dolgot. Jól látom, hogy a másik lehetőség kikapcsolni a warningot?(mon warn on legacy crush tunables = false)
--------------------
http://grant-it.com/
- A hozzászóláshoz be kell jelentkezni
igen, amugy marad a warning. viszont mindenkepp ajanlom meglepni a tunable atallitast, az uj crush algoritmus sokkal jobb adatelosztast tesz lehetove.
- A hozzászóláshoz be kell jelentkezni
a 2.-es pontban hibas a formazas
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Kezdő blogos vagyok, ezért ilyen béna még az egész, majd még dolgozok a formázáson, terjedelmesebb szövegnél eléggé kaotikus még nekem.
alper061: Nincs mit, hátha valakinek hasznos vagy beleköt akkor én tanulok.
--------------------
http://grant-it.com/
- A hozzászóláshoz be kell jelentkezni
fix'd
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Király! Köszi!:))
- A hozzászóláshoz be kell jelentkezni