• Rezultati Niso Bili Najdeni

Visoka razpoloˇ zljivost

42 POGLAVJE 5. EKSPERIMENTALNO VREDNOTENJE

5.5. VISOKA RAZPOLO ˇZLJIVOST 43

Zelo pomembna sta parametra bindnetaddr in mcastaddr. Prvega na-stavimo na naslov podomreˇzja, kar omogoˇca kopiranje datoteke na ostala vo-zliˇsˇca, saj tako ne definiramo dotiˇcnega vozliˇsˇca in nam ni treba v vsako dato-teko navesti seznama naslovov vozliˇsˇc v gruˇci. Drugi parameter, mcastaddr je multicast naslov, ki doloˇca skupino prejemnih naprav v omreˇzju. Sle-dnjega lahko preberemo iz omreˇznih nastavitev vozliˇsˇca z ukazom netstat -g.

Koda 5.16: Nastavljanje datoteke corosync.conf

...

i n t e r f a c e {

r i n g n u m b e r : 0

b i n d n e t a d d r : 1 0 . 0 . 0 . 0 m c a s t a d d r : 2 3 9 . 2 5 5 . 1 . 1 m c a s t p o r t : 5 4 0 5

} ...

Za nemoteno delovanje je ob zagonu operacijskega sistema potreben zagon Corosynca, kar je privzeto izkljuˇceno. V datoteki /etc/default/corosync je treba parameter START spremeniti na yes.

5.5.2 Namestitev paketa Pacemaker

Pacemaker za razliko od paketa Corosync ne potrebuje dodatnega nastavlja-nja. Glavni del paketa Pacemaker so skripte, imenovane resource agents, ki so namenjene nadzoru in preklopu raznovrstnih storitev. V primeru, da ta ne vsebuje primerne skripte, lahko ob upoˇstevanju smernic napiˇsemo svojo in jo dodamo v mnoˇzico.

Ker paket, ki je na voljo, ne vsebuje zadnjih verzij agentov, sem te pre-nesel in namestil iz uradnega ClusterLabs git repozitorija2. Zdaj, ko imamo vse potrebne pakete in nastavitve, lahko preverimo stanje gruˇce, kot kaˇze koda 5.17.

44 POGLAVJE 5. EKSPERIMENTALNO VREDNOTENJE

Koda 5.17: Stanje streˇznikov v gruˇci

c r m _ m o n -1

= = = = = = = = = = = =

L a s t u p d a t e d : Sat Set 6 2 1 : 3 0 : 2 7 2 0 1 4 S t a c k : c o r o s y n c

C u r r e n t DC : z a b b i x 1 (1) - p a r t i t i o n w i t h q u o r u m V e r s i o n : 1 . 1 . 1 0 - 4 2 f 2 0 6 3

2 N o d e s c o n f i g u r e d 0 R e s o u r c e s c o n f i g u r e d

= = = = = = = = = = = =

O n l i n e : [ z a b b i x 1 z a b b i x 2 ]

5.5.3 PostgreSQL

V podpoglavju 5.2 smo opisali namestitev in nastavitev podatkovne baze Po-stgreSQL, ki deluje v naˇcinu podvajanja (streaming replication). Podvajanje podatkov iz aktivnega na pasivno vozliˇsˇce ˇze poteka, vendar v primeru padca aktivnega streˇznika ne pride do preklopa.

Pred nastavitvijo agentov za upravljanje preklopa moramo nastaviti na-videzna IP naslova, ki bosta uporabljena za dostop do podatkovne baze in za podvajanje. V ta namen uporabimo OCF (Open Cluster Framework) agenta, ki je ˇse del starega paketa Heartbeat. Gre za razˇsiritev nadzornih linux agentov, ki so namenjeni za nadzor najrazliˇcnejˇsih virov, kot so IP naslovi, datoteˇcni sistemi, podatkovne baze in drugi.

Koda 5.18: Nastavitev virtualnih IP naslovov podatkovne baze

crm c o n f i g u r e e d i t

p r i m i t i v e vip - m a s t e r ocf : h e a r t b e a t : I P a d d r 2 \ p a r a m s ip = " 1 0 . 0 . 0 . 1 2 5 " c i d r _ n e t m a s k = " 2 4 " \

i f l a b e l = " 1 " nic =" br - lan "

op s t a r t t i m e o u t = " 6 0 s " i n t e r v a l ="0 s " on - f a i l =" s t o p "

op s t o p t i m e o u t = " 6 0 s " i n t e r v a l ="0 s " on - f a i l =" b l o c k "

op m o n i t o r t i m e o u t = " 6 0 s " i n t e r v a l = " 1 0 s " on - f a i l =" r e s t a r t "

5.5. VISOKA RAZPOLO ˇZLJIVOST 45

Iz kode 5.18 je razvidno, da definiramo navidezni IP 10.0.0.125, kateremu doloˇcimo akcije za nadzor, zagon in izklop. Enak postopek ponovimo ˇse za IP 10.0.0.126, kateremu doloˇcimo imevip-rep. Pozorni moramo biti tudi na na-stavitev imena mreˇznega vmesnika, na podlagi katerega se nastavi navidezni vmesnik.

Naslednji korak je definicija nastavitev, ki bodo nadzirale podatkovno bazo.

Koda 5.19: Nastavitev preklopa PostgreSQL podatkovne baze

crm c o n f i g u r e e d i t

p r i m i t i v e p g s q l ocf : h e a r t b e a t : p g s q l \ p a r a m s \

p g c t l ="/ usr / lib / p o s t g r e s q l / 9 . 3 / bin / p g _ c t l "

p s q l ="/ usr / lib / p o s t g r e s q l / 9 . 3 / bin / p s q l "

p g d a t a ="/ opt / p g _ d a t a /" n o d e _ l i s t =" z a b b i x 1 z a b b i x 2 "

r e p _ m o d e =" a s y n c " m a s t e r _ i p = " 1 0 . 0 . 0 . 1 2 6 "

s t a r t _ o p t =" - p 5 4 3 2 "

r e s t o r e _ c o m m a n d =" cp / opt / p g _ a r c h i v e /% f % p "

p r i m a r y _ c o n n i n f o _ o p t =" k e e p a l i v e s _ i d l e =60 \ k e e p a l i v e s _ i n t e r v a l =5 k e e p a l i v e s _ c o u n t =5"

t m p d i r ="/ var / run / p o s t g r e s q l " r e s t a r t _ o n _ p r o m o t e =" t r u e "

c o n f i g ="/ etc / p o s t g r e s q l / 9 . 3 / m a i n / p o s t g r e s q l . c o n f "

op s t a r t i n t e r v a l ="0 s " t i m e o u t = " 6 0 s " on - f a i l =" r e s t a r t "

op p r o m o t e i n t e r v a l ="0 s " t i m e o u t = " 6 0 s " on - f a i l =" r e s t a r t "

op d e m o t e i n t e r v a l ="0 s " t i m e o u t = " 6 0 s " on - f a i l =" s t o p "

op s t o p i n t e r v a l ="0 s " t i m e o u t = " 6 0 s " on - f a i l =" b l o c k "

op n o t i f y i n t e r v a l ="0 s " t i m e o u t ="0 s "

op m o n i t o r i n t e r v a l ="3 s " r o l e =" M a s t e r " t i m e o u t = " 6 0 s " \ on - f a i l =" r e s t a r t "

op m o n i t o r i n t e r v a l ="4 s " t i m e o u t = " 6 0 s " on - f a i l =" r e s t a r t "

V kodi 5.19 uporabimo obstojeˇcega ocf resource agenta pgsql, ki ima vgrajeno podporo za preklop. Doloˇciti moramo pot do pgctl skripte, ki upra-vlja s PostgreSQL procesom, pot do vmesnika (psql) za upravljanje s

podat-46 POGLAVJE 5. EKSPERIMENTALNO VREDNOTENJE

se bodo shranjevali podatki. Agent podpira ˇse veliko drugih parametrov, ki so potrebni za delovanje, kot na primer node list, ki mora vsebovati imena vseh vozliˇsˇc, master ip in pa restore command ter primery conninfo opt, ki sta namenjena nastavitvirecovery.conf datoteke. Sledijo ˇse parametri, ki skr-bijo za operacije nad procesom, kjer doloˇcimo interval preverjanja in ˇcasovno omejitev.

Nastavitve je treba zdruˇziti v skupino tako, da se bodo viri preklapljali skupaj in prepreˇcili nepravilno delovanje, do katerega bi priˇslo, ˇce bi bili virtualni IP naslovi nastavljeni na enem vozliˇsˇcu, aktivni streˇznik podatkovne baze pa na drugem. Za tem omejimo ˇse ˇstevilo aktivnih in pasivnih streˇznikov ter nastavimo vrstni red zagona virov. Ta je zelo pomemben, ker mora biti podatkovna baza pripravljena na poizvedbe, ˇse preden jih streˇznik zaˇcne sprejemati. Nastavitve so vidne v kodi 5.20.

Koda 5.20: Zdruˇzevanje in nastavitev vrstnega reda zagona virov

g r o u p master - g r o u p vip - m a s t e r vip - rep

ms m s P o s t g r e s q l p g s q l m e t a master - max = " 1 " clone - max = " 2 " \ master - node - max = " 1 " clone - node - max = " 1 " n o t i f y =" t r u e "

c o l o c a t i o n r s c _ c o l o c a t i o n -1 inf : master - g r o u p \ m s P o s t g r e s q l : M a s t e r

o r d e r r s c _ o r d e r -1 0: m s P o s t g r e s q l : p r o m o t e \ master - g r o u p : s t a r t s y m m e t r i c a l = f a l s e o r d e r r s c _ o r d e r -2 0: m s P o s t g r e s q l : d e m o t e \

master - g r o u p : s t o p s y m m e t r i c a l = f a l s e

5.5.4 Zabbix sistem

Za nastavitev preklopa uporabimo LSB resource agents (Linux Standard Base)agente. To so agenti, ki operirajo s skriptami, ki lahko zaˇzenejo ali uga-snejo proces ter vraˇcajo status delovanja. V osnovi gre za zagonske skripte, ki jih po navadi pridobimo od operacijskega sistema oziroma skupaj s pro-gramom ali pa napiˇsemo svoje. Edini pogoj je, da zadoˇsˇcajo LSB zahtevam.

Namestitev Zabbix sistema sem opisal ˇze v podpoglavju 5.3, vendar za

5.5. VISOKA RAZPOLO ˇZLJIVOST 47

samo delovanje ne potrebujemo visoke razpoloˇzljivosti. Pred nastavitvijo po-trebujemo skripte, ki skrbijo za zagon, izklop in vraˇcilo statusa programa.

Ker te skripte niso nameˇsˇcene ob namestitvi Zabbix sistema iz izvorne kode, moramo zanje poskrbeti sami. Skripte z osnovnimi funkcionalnostmi se na-hajajo v izvorni kodi, vendar je potrebno sprogramirati funkcionalnost za vraˇcilo statusa, kar je vidno v kodi 5.21.

Koda 5.21: Nastavitev zagonskih skript Zabbix sistema

cp m i s c / i n i t . d / d e b i a n / zabbix - s e r v e r / etc / i n i t . d

# D o p l o n i t e v d a t o t e k e / etc / i n i t . d / zabbix - s e r v e r . / lib / lsb / init - f u n c t i o n s

...

s t a t u s | m o n i t o r )

s t a t u s _ o f _ p r o c - p $ P I D $ D A E M O N $ N A M E \

&& e x i t 0 || e x i t $ ?

;;

...

c h m o d 755 / etc / i n i t . d / zabbix - s e r v e r update - rc . d zabbix - s e r v e r d e f a u l t s

c h m o d 755 / etc / i n i t . d / zabbix - a g e n t supdate - rc . d zabbix - a g e n t d e f a u l t s

V kodi 5.17 vidimo, da sta v gruˇci aktivni dve vozliˇsˇci, vendar ni poda-nih nobepoda-nih nastavitev. Zagonske skripte, ki smo jih nastavili v kodi 5.21, igrajo kljuˇcni pomen pri nadzoru aktivnosti Zabbix streˇznika. V kodi 5.22 nastavimo pregledovanje aktivnosti procesa na 5 sekund. Poleg preverjanja stanja sistema dodamo ˇse preverjanje dostopnosti privzetega imena zabbix.

Koda 5.22: Nastavitve nadzora Zabbix streˇznika in aktivnosti navideznega IP naslova 1

crm c o n f i g u r e e d i t

48 POGLAVJE 5. EKSPERIMENTALNO VREDNOTENJE

op m o n i t o r i n t e r v a l ="5 s "

p r i m i t i v e ha - ip ocf : h e a r t b e a t : I P a d d r \

p a r a m s m o n i t o r = " 1 0 . 0 . 0 . 1 2 4 " op m o n i t o r i n t e r v a l ="2 s "

g r o u p ha - z a b b i x ha - z a b b i x _ s e r v e r ha - ip p r o p e r t y ...

default - r e s o u r c e - s t i c k i n e s s = " 1 0 0 "

Oba ukaza za preverjanje zdruˇzimo v skupinoha-zabbix, s ˇcimer doloˇcimo, da se bo izvajanje premikalo z vozliˇsˇca na vozliˇsˇce skupaj. Tako prepreˇcimo, da je IP aktiven na enem vozliˇsˇcu, Zabbix streˇznik pa teˇce na drugem. Na koncu dodamo ˇse parameter default-resource-stickiness, s katerim kar se da omejimo preklapljanje med vozliˇsˇci. Tako se bo izvajanje preklopilo drugam le v primeru, da Pacemaker najde bolj optimalno vozliˇsˇce.