Már esett szó magas rendelkezésre állású rendszerekről, konkrétan a SUN Cluster 3.2-t mutattam be egy írásomban. Most a nagyvállalatoknál sokkal inkább elterjedt Veritas vagy Symantec Cluster technológiával kívánom megismertetni a kedves olvasót.

Milyen különbségek fedezhetőek fel a Veritas és a SUN Cluster között?

Az első legfontosabb talán, hogy míg a Sun Cluster kernel szinten épül be a Solaris rendszerbe, és természetesen csak Solarishoz érhető el, addig a Veritas multiplatformos (Solaris, HP-UX, AIX, Linux, Windows), és a Veritas Cluster Suite (VCS) nem más mint egy user space-ben futó alkalmazás.

Többnyire előnyei vannak ennek a tulajdonságának a VCS-nek. Először is tetszőlegesen lehet installálni majd uninstallálni. A SUN cluster esetében ez elég körülményes az esetek többségében teljes OS reinstallt jelent.

A multiplatformossága miatt tetszőleges OS-en alkalmazható ez a program. Tehát a megszerzett tudás és használat minden platformon hasznosítható, vagy akár közös management-el irányítható.

Azt se fejeltsük el kihangsúlyozni, hogy a VCS csak egy program, ami a programok kezelésével magas rendelkezésre állást biztosít. a VCS viszont csupán egy vezérlő program. Amennyiben a VCS leáll, vagy hiba történik a VCS-el magával, az nem érinti a futatott alkalmazást. Az alkalmazás ugyan úgy futni fog, csupán a magas rendelkezésre állást fogjuk elveszíteni. Tehát ha az alkalmazást költöztetni kell valami hiba folytán, akkor a VCS azt nem fogja megtenni. Amennyiben nincs hiba az alkalmazás tökéletesen fog futni továbbra is.

A SUN Cluster esetében ez nem így van. Ott ha baj van valami a clusterrel, akkor leáll az alkalmazás maga is.

Rendszerkövetelmények és ajánlások a telepítéshez

A VCS mára már része a Symantec Storage Foundation termékének. Ahol azt látjuk, hogy Storage Foundation HA, ott biztosra vehetjük, hogy a HA (High Availability ) a VCS-t jelöli. Cserébe 60 napig akárki letöltheti ezt a terméket is és szabadon kipróbálhatja.

Veritas Storage Foundation and High Availability Solutions, v5.1

    Solaris 9 & 10 on Sparc, 10 on x64
    AIX 5.3 and 6.1
    Red Hat Enterprise Linux 5 on x86_64
    Novell SUSE Linux Enterprise Server 10 & 11 on x86_64
    Oracle Enterprise Linux 5 on x86_64

Veritas Storage Foundation and High Availability Solutions, v5.0

    Solaris (Sparc and x64)
    AIX
    HP-UX 11iv2 (PA-RISC and Itanium)
    Red Hat Enterprise Linux 4 & 5 (RHEL4 & RHEL5), Oracle Enterprise Linux 4 & 5 (OEL4 & OEL5); 64-bit
    SUSE Linux Enterprise Server 9 & 10 (SLES9 & SLES10) ; 64-bit
    RHEL4 & SLES9 for Linux on Power PC

The Storage Foundation & High Availability Solutions for Windows software supports

    Windows Server 2003 32-bit, x64, and IA64
    Windows Server 2003 R2 32-bit and x64
    Windows Server 2008 32-bit, x64, and IA64
    Windows Server 2008 R2 x64 and IA64

Ezeken túl a VCS-nek szüksége van egy Heart Beat dedikált vonalra, amin a cluster információkat fogják a cluster node-k cserélgetni egymás között. Ebből egy is elegendő, de ajánlott inkább a kettő.

A VCS szintén ajánl két (redundáns) hálózati interface-t a plublikus hálózat felé.

A VCS maga a rendszertől körülbelől 256MB RAM-ot (és legalább 360Mb SWAP-et) igényel és számottevő CPU teljesítményt nem igényel.

VCS 5.1 install

Először is le kell tölteni a a Symantec oldaláról a megfelelő installer csomagot. Én most egy Solaris 10-re fogom installálni azt.

node1# cd /tmp
node1# ls -lah

Tömörítsük ki:
node1# gunzip -c VRTS_SF_HA_Solutions_5.1_SP1_Solaris_SPARC.tar.gz | tar -xf –
noce1# ls -lah

A telepítő a következő állományokat fogja tartalmazni:
node1# cd dvd1-sol_sparc/
node1# ls -lah

Az installálás viszonylag adminisztrátor barát lesz. Elég csak az install scriptet elindítani:
node1# # ./installer

A menüben most válasszuk az I menüt azaz “Install a Product”.

A következő menüben választhatunk a felsorolt termékek közül. A mi esetünkben most magára a Storage Foundation és High Availability-re lesz szükségünk, tehát 4.

Ezek után természetesen elkell fogadni, hogy a felhasználási szerződéssel egyetértünk, és annak feltételeit olvastuk és jóváhagyjuk:

A következő pontnál azt kell kiválasztanunk, hogy a Storage Foundation HA csomagon belül mennyi hozzátartozó összetevőt kívánunk használni. Én jelen pillanatban azt javaslom rakjunk fel mindent, aki majd tudja miket tartalmaznak ezek a csomagok, azok majd bátran testre szabhatják akár a minimális lehetőséget is. Tehát 3.

Most meg kell adnunk, a HOSTNEVEIT azon gépeknek, amik tagjai lesznek ennek a clusternek. Én jelen pillanatban egy két node-s clustert akarok építeni, tehát space-el elválasztva fel kell sorolnom a hostneveit. DEBRECEN-01 DEBRECEN-02

FONTOS! hogy ezeket előtte vagy bele kell írni az /etc/hosts file-ba, hogy tudja, vagy pedig a DNS serverünknek, amit használnak a gépek tudnia kell.

Ezek után el is indul a telepítés. Először kommunikációs teszt fog jönni, hogy az adott node-ról a többi node-ra lehetséges a kommunikáció. SSH vagy RSH-n kell tudni kommunikálniuk és természetesen root-ként.

Ehhez a node2-n engedélyezni kell a root logint.

node2 # vi /etc/ssh/sshd_config
PermitRootLogin yes
node2# svcadm restart ssh
Ezek után nyomhatunk “y”-t a node1 installációnál.

Adjuk meg a root jelszót a node2-nek:

Válasszuk ki, milyen típusú protokollon akarjuk a kommunikációt az installálás alatt, természetesen mi SSH-t állítottunk be, tehát 1.

Ha minden rendben van, akkor a következőt kell látnunk:

Ezek után az ellenörzés automatikusan elindul, nekünk csak várnunk kell és a VCS telepítő mind időre mind aktivitásra jelezni fogja hol jár:

Engem most figyelmezett, hogy több mint 5 másodperces eltérés van a két server órája között. Ez produktív esetben problémát jelent, tehát szinte kötelező az NTP-t közös idő szerverre állítani, de én most tovább nyomom.

Kapni fogunk egy képernyőt azzal kapcsolatban, hogy milyen csomagok és patchek fognak települni a rendszerünkre, üssünk entert:

Ezek után az installáció automatikusan elindul mindegyik node-n, amit szintén informatívan tudunk követni hála a szöveges telepítőnek:

Amikor a telepítő lefut, akkor mindkét node-n telepítve lesznek a szükséges állományok. A következő feladat a licenselés lesz erre kérdez rá még a telepítő:

Vagy megadjuk a Licens-ünket, vagy pedig license nélkül haladunk tovább. Ilyenkor 60 napig használhatjuk a terméket, minden féle feature korlátozás nélkül.

A továbbiakban választanunk kell a Standard HA és a Enterprise HA opciók között, majd bizonyos külön license opciókat is jóváhagyni:

Ezek után az installer rá fog kérdezni, hogy szerenénk-e konfigurálni a clusterünket. Én most itt nemet fogok nyomni, hogy megmutassam, hogy mi is szükséges ahhoz, aki időt akar nyerni, az nyugottan nyomhat igent is.

Ezek után már a telepítő kilép és elkezdhetjük használni a clusterünket.

A Veritas Cluster Suite részei és konfigurálása

A VCS alapvetően három nagy és főbb részből áll. Az első a HAD. Ez a High Availability Deamon. Ez felelős a folyamatok kezeléséért hiba esetén, a konfigurációért, a különböző user kommunikációkért. A következő a LLT, azaz a Low Latency Transport. Ez felelős magáért az interconnect hálózatért tehát a clusterek egymás közötti kommunikációjáért. A harmadik pedig a GAB, azaz Group membership Services Atomic Broadcast. Ez a service felel azért, hogy az LLT által nyújtott szolgáltatáson ellenőrizze a cluster tagokat, és ezek státuszinformációinak értelmezésében.

Akkor most konfiguráljuk a clustert, ehhez indítsuk el a következő scriptet scriptet:

node1# /opt/VRTS/install/installsfha -configure

Adjuk meg a 2 node nevét amit telepítettünk. Ezek után egy ellenőrzés jön, ami megvizsgálja, hogy a két node mire is lesz alkalmas.

A következő kérdés az I/O fencingre fog utalni. Ugyanis el kell döntenünk be akarjuk-e kapcsolni az I/O fencinget vagy nem. A VCS I/O fencing-nek hívja azt, amit a SUN cluster-ben quorum disk-nek hívunk. Tehát egy teljesen más, disk alapú megoldást, ami a “SPLIT BRAIN”-ek elkerülésére lehet alkalmazni. Nem feltétlenül szükséges, de ajánlott.

Mi egyenlőre hagyjuk ezt ki.

Ezen a képernyőn csak egy rövid magyarázatot kapunk azzal kapcsolatban, hogy használjuk a továbbiakban az installer interaktív menüjét, és, hogy amíg mindenen nem mentünk végig, addig nem íródik ki semmi konfigurációs file-ba. Enter.

Először is egy egyedi nevet kell adni a cluster-nek. Nem a node-knak, azoknak már van neve. Magának a gyűjtő csoportnak, amihez a cluster node-k fognak tartozni. Ennek egy szónak kell lennie.

Azután egy egyedi számot is kell a clusterhoz rendelni.

Ezek után kell az LLT rétegét megadnunk tehát a gépek közötti saját kapcsolatot, heart beatet vagy interconnectet.

Számunkra az ethernet alapú LLT tökéletes lesz, nyomjunk hát “1”-et.

Erre a rendszerünk automatikusan detektálja milyen interfacek elérhetőek, és kéri, hogy az első heartbeat linket adjuk meg a felderített listából. Én így is tettem, egy primary és egy secondary kapcsolatot definiálva:

A következő kérdés az, hogy low-priority heartbeat linket akarunk-e megadni. Ilyenkor általában a meglévő admin hálózatot szoktuk megadni. Ezt a hálózatot csak akkor használja, ha megadott interconnect kapcsolatok már nem működnek. Ez akár lehet nem dedikált csatorna is, a lényeg, hogy a két gép lássa egymást rajta.

Utolsó kérdésként rákérdez a rendszer, hogy mindkét gépen ugyan azokat a hálózati interfacekat használjuk a megadott célra. Az én esetemben igen, tehát “y”. Erre pedig indul is az ellenőrzés:

Amennyiben ez helyesen lement, egy összesítő táblázatot fogunk kapni, amit jóvá kell hagynunk:

Az adminisztráláshoz, egy speciális virtuális IP-t definiálhatunk amennyiben ezt szeretnénk, nekem viszont teljesen jó lesz most a publikus interface.

Külön szolgáltatáskénént bekapcsolhatjuk a Symantec Security Services-t, amivel az interconnecteken folyó kommunikációt is titkosíthatjuk. Kifejezetten ultrabiztonságos helyeken lehet erre igény. Nálam most feleseges, tehát “n”.

Ezek után lehetőségünk van a VCS-hez delegálni virtuális felhasználókat. Alapból egy admin/password páros áll rendelkezésre, ha ezen változtatni akarunk itt megtehetjük, én minden esetre nem. Illetve új felhasználót se akarok hozzáadni.

Lehetőségünk van leveles értesítésre, minden féle eseménynél. Ehhez definiállnunk kell egy SMTP-t. Én ezt most nem kérem tehát “n”.


Ezzel a végére is értünk a konfigurálásnak. A rendszer rá fog kérdezni, hogy leállíthatja-e a clustert, hogy kiírja a konfigurációt file-ba, majd azt betöltse:



Ezzel kész is a konfigurációja a VCS-nek.

# /opt/VRTSvcs/bin/hastatus -sum

Konfigurációs állományok

Most már látjuk,hogy is állt össze a konfiguráció, milyen értékek, információk voltka szükségesek, most nézzük meg, milyen konfigurációs állományokba íródtak ki ezek.

# cat /etc/llthosts
0 DEBRECEN-01
1 DEBRECEN-02

# cat /etc/llttab
set-node DEBRECEN-01
set-cluster 1
link ce2 /dev/ce:2 – ether – –
link ce3 /dev/ce:3 – ether – –
link-lowpri ce0 /dev/ce:0 – ether – –

# cat /etc/gabtab
/sbin/gabconfig -c -n2

# cat /etc/VRTSvcs/conf/config/main.cf
include “OracleASMTypes.cf”
include “types.cf”
include “Db2udbTypes.cf”
include “OracleTypes.cf”
include “SybaseTypes.cf”

cluster DEBRECEN (
UserNames = { admin = ejkCjeJgkFkkIskEjh }
Administrators = { admin }
)

system DEBRECEN-01 (
)

system DEBRECEN-02 (
)

Természetesen ezen konfigurációs állományokat kézzel is szerkeszthetjük, persze csak az tegye, aki tudja is mit és hogy kell.

Solaris alatt a következő servicek fognak a fentebbi konfigurációkhoz tartozni:
# svcs llt
# svcs gab
# svcs vcs

Mivel a legtöbb VCS parancs a /opt/VRTSvcs/bin/ alatt érhető el, érdemes ezt a PATH változóba beletenni:
# export PATH=$PATH:/opt/VRTSvcs/bin/

Készítsünk egy failover NFS Service Groupot

A VCS konfigurációs állományát lehet kézzel szerkeszteni, de nem ajánlott. Erre a célra jó kis vezérlő utasításokat találtak ki. Először is, hogy módosítani tudjuk a következő parancs szükséges:

# haconf -makerw

Természetesen amit ezek után adnuk meg, az csak memóriában fog éllni, hogy file-ba is kiíródjon ahhoz a következő parancs szükséges:

# haconf -dump
Vagy ha egyből le is akarjuk zárni akkor:
# haconf -dum -makero

Mi is kell egy NFS servernek

Akkor nézzük csak, mire is lesz szükségünk, ahhoz, hogy NFS servert tudjunk definiálni clusterba:

– egy network interface amin a kívánt hálózat elérhető
– egy IP cím ami a használt network interface-n működni fog
– egy disk group amibe diskek lesznek
– egy volume ami a fenti disk group-hoz tartozik és azon a kíván NFS server adatai lesznek
– egy mountpoint, ahova a volume fel lesz csatolva
– maga az NFS megosztások

A mostani példámban én kettő darab Service Group-ot (SG) fogok csinálni. A SG a SUN Clusternél a Resource Groupokkal egyezik meg. Olyan csoport, ami összefogja az egyes működési részeket, és ezzel egy teljes önálló alkalmazást emulál. Nézzük inkább, hogy is fest.

Az egyik SG lesz felelős a hálózatért, ennek a neve lesz ipSG a másik az NFS dolgaiért ennek a neve lesz nfsSG.

# hagrp -add ipSG
# hagrp -add nfsSG

Egyből meg is kell adnunk, hogy ezek a csoportok, mely node-kon lehetnek onlinek, tehát hol lehessen őket elindítani, és persze a sorszámukat, ezzel egy sorrendiséget meghatározva:

# hagrp -modify ipSG SystemList DEBRECEN-01 1 DEBRECEN-02 2
# hagrp -modify nfsSG SystemList DEBRECEN-01 1 DEBRECEN-02 2

Viszont mit is csináltunk most? A VCS minden objektumának, tehát a group-oknak és a resource-knak maguknak is vannak változóik, és értékeik. Ezeket a -display kapcsolóval láthatjuk meg. Például:

# hagrp -display ipSG

Tehát automatikusan, amikor -add kapcsolóval létrehozunk egy objektumot, akkor alapből hozzárendelünk változókat, és értékeket. A további konfigurálás pedig abból áll, hogy a -modify kapcsolóval ezeken az alapértelmezett értékeken változtatunk. Amúgy a /etc/VRTSvcs/conf/config/types.cf file tartalmazza az elérhető objektumokat.

Na, de folytassuk, akkor az ipSG-t. Ahogy mondtam ez csak egy csoport. Beállítottuk, hol tud online lenni, most már csak adnunk kell hozzá resourcekat, amik ténylegesen működtetni fogják. Mit is mondtam mi az első ami kell. Egy network interface ami a megfelelő hálózatba lóg:

# hares -add nfsNIC NIC ipSG

Jól látszik, hogy a parancs struktúrája a következő:

# hares -add ÚJ_RESOURCES_NEVE MILYEN_TIPUSU MILYEN_SERVICE_GROUPBA

Ahhoz, hogy jól működjön ebben be kell állítanunk a használni kívánt network interface nevét:
# hares -modify nfsNIC Device ce0

Mi volt a következő ami kellett? Egy IP cím, ami ezen a hálózati interfacen lehet:

# hares -add nfsIP IP ipSG

És módosítsuk azt, hogy milyen eszközön legyen, milyen cím, és milyen maszkkal.

# hares -modify nfsIP Device ce0
# hares -modify nfsIP Address 192.168.132.19
# hares -modify nfsIP NetMask 255.255.255.128

Ezzel a hálózatért felelő ipSG service group letudva. Nézzük a nfsSG-t.

Én gyorsan most összedobok egy nfsDG nevű Disk Groupot, egy vol01 nevű volumet veritas volume managerrel és vxfs-el. Akit ez részletesebben érdekel az olvassa el a cikkemet róla itt.

# vxdisk list
# /etc/vx/bin/vxdisksetup -i disk_3
# vxdg init nfsDG lemez1=disk_3
# vxassist -g nfsDG -U fsgen make vol01 100m
# mkfs -F vxfs /dev/vx/rdsk/nfsDG/vol01

Először is adjunk egy diskgroup resourcet neki.

# hares -add nfsDG DiskGroup nfsSG

Módosítsuk, hogy a mi nfsDG-nket használja:

# hares -modify nfsDG DiskGroup nfsDG

Adjuk hozzá a volume-t is:

# hares -add nfsVOL01 Volume nfsSG

Változtassuk meg, hogy a vol01 és a nfsDG legyen használva:

# hares -modify nfsVOL01 Volume vol01
# hares -modify nfsVOL01 DiskGroup nfsDG

Ezek után jöhet a mountoló resource:

# hares -add nfsMOUNT01 Mount nfsSG

Állítsuk be a mountolást mondjuk az /export/vol01-ra.

Ehhez először gondoskodjunk mindkét gépen a mountpoint meglétéről:

node1# mkdir /export/vol01
node2# mkdir /export/vol01

Aztán magát a resourcet állítsuk, be, milyen device-t moundoljon, milyen filerendszerrel, milyen FSCK optionnal és persze hova:

# hares -modify nfsMOUNT01 BlockDevice /dev/vx/dsk/nfsDG/vol01
# hares -modify nfsMOUNT01 FSType vxfs
# hares -modify nfsMOUNT01 MountPoint /export/vol01
# hares -modify nfsMOUNT01 FsckOpt ” -y”

!!!Nagyon fontos, hogy a MountPoint esetében a PATH végére ne tegyünk “/” jelet

Most jöhet a tényleges NFS resource, ami az alkalmazás lesz, ami a megosztásokat fogja kezelni:

# hares -add nfsNFS NFS nfsSG

Módosítsuk az instance számát:

# hares -modify nfsNFS Nservers 24

Végül pedig a megosztásokat magukat hozzuk létre:

# hares -add nfsSHARE01 Share nfsSG

Állítsuk be, hogy mit osztunk meg és milyen opciókkal:

# hares -modify nfsSHARE01 PathName /export/vol01
# hares -modify nfsSHARE01 Options “rw”

!!!Nagyon fontos, hogy a PathName esetében a PATH végére ne tegyünk “/” jelet

Dependenciák

Ugyanis nem mindegy ezek a resourcek milyen sorrendben indulnak el. Sőt, annak sincs értelme, hogy a mountolás megtörténjen ha még a volume nem is elérhető.

Tehát egy sorrendiséget kell felállítani. Ezt úgy tudjuk megtenni, hogy összelinkeljük megmondjuk hogy Mi ne induljon el amig EZ a resource nem fut.

# hares -link nfsIP nfsNIC
# hares -link nfsVOL01 nfsDG
# hares -link nfsMOUNT01 nfsVOL01
# hares -link nfsSHARE01 nfsMOUNT01
# hares -link nfsSHARE01 nfsNFS

Viszont nekünk két resource groupunk is van, tehát nem csak egy csoporton belüli függést kell beállítanunk, hanem a két csoport között is. Tehát amíg nincs hálózat tehát ipSG addig ne induljon el az nfsSG.

# hagrp -link nfsSG ipSG online local hard

Mielőtt indítanánk

Minden resource tartalmaz egy “ENABLED” változót. Ami alapértelmezetten 0, tehát nincs aktiválva. Ezt egyesével is bekapcsolhatjuk rajta, vagy a következő paranccsal. Tehát elindíthatóak lesznek:

# hagrp -enableresources ipSG
# hagrp -enableresources nfsSG

A másik, hogy gondoskodnunk kell arról, hogy nincs lokáis NFS service ami fut, és amivel a cluster összeakadhat. Sajnos Solaris 10 alatt ez alapértelmezett. Így törölnünk kell az SMF servicet is:

# svccfg delete -f svc:/network/nfs/server:default
# svccfg delete -f svc:/network/nfs/mapid:default

Indítás

Akkor indítsuk el, mindkét resource groupt, ami persze autómatikusan a megfelelő sorrendben elindítja majd a resource-it is.

# hagrp -online ipSG -sys DEBRECEN-01
# hagrp -online nfsSG -sys DEBRECEN-01

# hastatus -sum

Amennyiben, szeretnénk azt, hogy automatikusan induljanak a resourcek, akkor még a következő módosításokat kell eszközölnünk. Fel kell építenünk egy autostart listát:

# hagrp -modify ipSG AutoStartList DEBRECEN-01 DEBRECEN-02
# hagrp -modify nfsSG AutoStartList DEBRECEN-01 DEBRECEN-02

Készítsünk egy failover Zona resourcet

Aki esetleges nem tudná hogy a Zóna vagy Container mi is, annak ajánlom a Solaris Zónák cikkemet.

Ahhoz, hogy Zónát tudjunk integrálni VCS-be, ahhoz először is készítenünk kell egy zónát. Nem részletezném az ehhez szükséges parancsokat, akit érdekel a Zónás cikkben elolvashatja. Az egyszerűség kedvéért ZFS-t fogok használni a Zónához.

# zpool create zone c2t2d0
# zonecfg -z testzone
testzone: No such zone configured
Use ‘create’ to begin configuring a new zone.
zonecfg:testzone create -b
zonecfg:testzone set zonepath=/zone
zonecfg:testzone add net
zonecfg:testzone:net set physical=ce0
zonecfg:testzone:net set address=192.168.132.18
zonecfg:testzone:net end
zonecfg:testzone verify
zonecfg:testzone commit
zonecfg:testzone exit
# chmod 700 /zone/
# zoneadm -z testzone install
Preparing to install zone testzone.
Creating list of files to copy from the global zone.
Copying <159431> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1261> packages on the zone.
Initialized <1261> packages on zone.
Zone testzone is initialized.
Installation of <2> packages was skipped.
The file contains a log of the zone installation.
# zoneadm -z testzone boot
# zlogin -C testzone
# zoneadm -z testzone halt
# zpool export zone

Most, hogy van egy zónánk, már csak magas rendelkezésreállásuvá kell tennünk. Először is kell nekünk egy Service Group. Ebbe kell, hogy legyen egy interface, amit a zona konfigban definiáltunk. Ennek elérhetőnek kell lenni, különben a zóna az életben nem fogja tudni felhúzni az IP-jét. Aztán kell egy zpool importálás. Szerencsére a zpool önagában tartalmazza a filerendszert önmagát, tehát ezzel több gondunk nem lesz.

Ezek után pedig magát a zónát kell elindítanunk. Nézzük ezt parancsok formájában:

Tegyük írhatóvá a konfigurációt:
# haconf -makerw

Hozzunk létre egy új Service Groupt:
# hagrp -add zoneSG

Módosítsük a SystemList-áját, hogy kik futtathatják:
# hagrp -modify zoneSG SystemList DEBRECEN-01 1 DEBRECEN-02 2

Akkor ahogy az NFSnél is hozzunk létre egy NIC resource-g, ami azért felel, hogy a megfelelő network interface elérhető vagy nem.

# hares -add zoneNIC NIC zoneSG
# hares -modify zoneNIC Device ce0

Adjunk hozzá egy Zpool resourcet. Ez fog gondoskodni, arról, hogy az importálás és exportálás működjön.

# hares -add zoneZPOOL Zpool zoneSG
Adjuk meg a zóna nevét:
# hares -modify zoneZPOOL PoolName zone

Most már csak egy olyan resource-ra van szükségünk, ami a Zónát magát fogja indítani illetve leállítani.
# hares -add zoneZONE Zone zoneSG
A zónák nevét viszont magába a Service Groupba kell megadnunk. Fontos, hogy ezt mindkét node-n meg kell csinálni. Az eddigieket elég volt az egyik node-n megtenni.
node1# hagrp -modify zoneSG ContainerInfo Name testzone Type Zone Enabled 1
node2# hagrp -modify zoneSG ContainerInfo Name testzone Type Zone Enabled 1

Fontos ezen túl, hogy a Zona config mindkét gépen léteznie kell. Mivel az egyik node-ra installáltuk ténylegesen ezért ott ki kell exportálnunk a configot, és létrehozni a másikon:

node1# zonecfg -z testzone export > testzone.cfg
Át kell másolni a testzone.cfg-t a node2-re, majd:
node2 # zonecfg -z testzone < testzone.cfg

Linkeljük őket össze. Konkrétan azt kell megmondanunk két paranccsal, hogy a Zóna maga ne próbáljon meg elindulni, amíg a Zpool és a Network interface nem elérhető.

# hares -link zoneZONE zoneNIC
# hares -link zoneZONE zoneZPOOL

Engedélyezzük az összes resourcest a zonaSG-ben:
# hagrp -enableresources zoneSG

Írjuk ki a konfigot file-ba is:
# haconf -dump

Indítsuk el az egészet az első node-n:
# hagrp -online zoneSG -sys DEBRECEN-01

# hastatus -sum

Ahogy látszik, a zóna nagyszerűen fut. Hogy biztosan meg tudjunk róla győződni:
#zoneadm list -cv

Service Groupok kezelése

Ezek után nézzünk pár olyan utasítást, amivel a már létrehozott Service Groupokat lehet mozgatni. Van két node természetes igény mozgatni tudjuk a Service Groupokat egymás között, tehát switcheljünk:

Először az nfs Service Groupot.

# hastatus -sum
# hagrp -switch nfsSG -to DEBRECEN-02
# hastatus -sum

Jól látszik, hogy a switchelést követve szépen átköltözött az ipSG és az nfsSG is.

Most switcheljük át a zoneSG-t is.

# hastatus -sum
# hagrp -switch zoneSG -to DEBRECEN-02
# hastatus -sum

Ha valamit le akarunk állítani használhatjuk a következő parancsot:

# hagrp -offline zoneSG -sys DEBRECEN-02

Ha ugyan ezt csak egy resource-val szeretnénk megtenni, akkor:

# hares – offline zoneZone -sys DEBRECEN-02

VCS Cheatsheet

Szerintem az alapokat és a felépítését sikerült bemutatni ezzel a cikkel a VCS-nek. Természetesen ennél sokkal többet tud. Most csak a felszínt súroltuk, azt is csak praktikus módon, amit bárki utánam tud csinálni.

A továbbiakhoz, és hogy látszódjon mennyire is komplex a VCS mellékelek egy táblázatot ami összefoglalja a használható parancsokat. Jól fog látszani, hogy egy viszonylag könnyen elsajátítható konvencióra épülnek a parancsok:

LLT and GRAB

VCS uses two components, LLT and GAB to share data over the private networks among systems.
These components provide the performance and reliability required by VCS.

LLTLLT (Low Latency Transport) provides fast, kernel-to-kernel comms and monitors network connections. The system admin configures the LLT by creating a configuration file (llttab) that describes the systems in the cluster and private network links among them. The LLT runs in layer 2 of the network stack
GABGAB (Group membership and Atomic Broadcast) provides the global message order required to maintain a synchronised state among the systems, and monitors disk comms such as that required by the VCS heartbeat utility. The system admin configures GAB driver by creating a configuration file ( gabtab).

LLT and GAB files

/etc/llthosts

The file is a database, containing one entry per system, that links the LLT system ID with the hosts name. The file is identical on each server in the cluster.

/etc/llttab

The file contains information that is derived during installation and is used by the utility lltconfig.

/etc/gabtab

The file contains the information needed to configure the GAB driver. This file is used by the gabconfig utility.

/etc/VRTSvcs/conf/config/main.cf

The VCS configuration file. The file contains the information that defines the cluster and its systems.

Gabtab Entries

/sbin/gabdiskconf – i /dev/dsk/c1t2d0s2 -s 16 -S 1123
/sbin/gabdiskconf – i /dev/dsk/c1t2d0s2 -s 144 -S 1124

/sbin/gabdiskhb -a /dev/dsk/c1t2d0s2 -s 16 -p a -s 1123
/sbin/gabdiskhb -a /dev/dsk/c1t2d0s2 -s 144 -p h -s 1124
/sbin/gabconfig -c -n2

gabdiskconf

-i   Initialises the disk region
-s   Start Block
-S   Signature

gabdiskhb (heartbeat disks)

-a   Add a gab disk heartbeat resource
-s   Start Block

-p   Port
-S   Signature

gabconfig

-c   Configure the driver for use
-n   Number of systems in the cluster.

LLT and GAB Commands

Verifying that links are active for LLTlltstat -n
verbose output of the lltstat commandlltstat -nvv | more
open ports for LLTlltstat -p
display the values of LLT configuration directiveslltstat -c
lists information about each configured LLT linklltstat -l
List all MAC addresses in the clusterlltconfig -a list
stop the LLT runninglltconfig -U
start the LLTlltconfig -c
verify that GAB is operating

gabconfig -a

Note: port a indicates that GAB is communicating, port h indicates that VCS is started

stop GAB runninggabconfig -U
start the GABgabconfig -c -n <number of nodes>
override the seed values in the gabtab filegabconfig -c -x

GAB Port Memberbership

List Membership

gabconfig -a

Unregister port f/opt/VRTS/bin/fsclustadm cfsdeinit
Port Functiona   gab driver
b   I/O fencing (designed to guarantee data integrity)
d   ODM (Oracle Disk Manager)
f   CFS (Cluster File System)
h   VCS (VERITAS Cluster Server: high availability daemon)

o   VCSMM driver (kernel module needed for Oracle and VCS interface)
q   QuickLog daemon
v   CVM (Cluster Volume Manager)
w   vxconfigd (module for cvm)

Cluster daemons

High Availability Daemonhad
Companion Daemonhashadow
Resource Agent daemon<resource>Agent
Web Console cluster managerment daemonCmdServer

Cluster Log Files

Log Directory/var/VRTSvcs/log
primary log file (engine log file)/var/VRTSvcs/log/engine_A.log

Starting and Stopping the cluster

"-stale" instructs the engine to treat the local config as stale
"-force" instructs the engine to treat a stale config as a valid one

hastart [-stale|-force]

Bring the cluster into running mode from a stale state using the configuration file from a particular server

hasys -force <server_name>
stop the cluster on the local server but leave the application/s running, do not failover the application/shastop -local
stop cluster on local server but evacuate (failover) the application/s to another node within the clusterhastop -local -evacuate

stop the cluster on all nodes but leave the application/s running

hastop -all -force

Cluster Status

display cluster summaryhastatus -summary
continually monitor clusterhastatus
verify the cluster is operatinghasys -display

Cluster Details

information about a clusterhaclus -display
value for a specific cluster attributehaclus -value <attribute>
modify a cluster attributehaclus -modify <attribute name> <new>
Enable LinkMonitoringhaclus -enable LinkMonitoring
Disable LinkMonitoringhaclus -disable LinkMonitoring

Users

add a userhauser -add <username>
modify a userhauser -update <username>
delete a userhauser -delete <username>
display all usershauser -display

System Operations

add a system to the clusterhasys -add <sys>
delete a system from the clusterhasys -delete <sys>
Modify a system attributeshasys -modify <sys> <modify options>
list a system statehasys -state
Force a system to starthasys -force
Display the systems attributeshasys -display [-sys]
List all the systems in the clusterhasys -list
Change the load attribute of a systemhasys -load <system> <value>
Display the value of a systems nodeid (/etc/llthosts)hasys -nodeid
Freeze a system (No offlining system, No groups onlining)

hasys -freeze [-persistent][-evacuate]

Note: main.cf must be in write mode

Unfreeze a system ( reenable groups and resource back online)

hasys -unfreeze [-persistent]

Note: main.cf must be in write mode

Dynamic Configuration 

The VCS configuration must be in read/write mode in order to make changes. When in read/write mode the
configuration becomes stale, a .stale file is created in $VCS_CONF/conf/config. When the configuration is put
back into read only mode the .stale file is removed.

Change configuration to read/write modehaconf -makerw
Change configuration to read-only modehaconf -dump -makero
Check what mode cluster is running in

haclus -display |grep -i ‘readonly’

0 = write mode
1 = read only mode

Check the configuration file

hacf -verify /etc/VRTS/conf/config

Note: you can point to any directory as long as it has main.cf and types.cf

convert a main.cf file into cluster commandshacf -cftocmd /etc/VRTS/conf/config -dest /tmp
convert a command file into a main.cf file

hacf -cmdtocf /tmp -dest /etc/VRTS/conf/config

Service Groups

add a service grouphaconf -makerw
  hagrp -add groupw

  hagrp -modify groupw SystemList sun1 1 sun2 2
  hagrp -autoenable groupw -sys sun1
haconf -dump -makero

delete a service grouphaconf -makerw
  hagrp -delete groupw

haconf -dump -makero

change a service group

haconf -makerw
  hagrp -modify groupw SystemList sun1 1 sun2 2 sun3 3
haconf -dump -makero

Note: use the "hagrp -display <group>" to list attributes

list the service groupshagrp -list
list the groups dependencieshagrp -dep <group>
list the parameters of a grouphagrp -display <group>
display a service group’s resourcehagrp -resources <group>
display the current state of the service grouphagrp -state <group>
clear a faulted non-persistent resource in a specific grphagrp -clear <group> [-sys] <host> <sys>
Change the system list in a cluster

# remove the host
hagrp -modify grp_zlnrssd SystemList -delete <hostname>

# add the new host (don’t forget to state its position)

hagrp -modify grp_zlnrssd SystemList -add <hostname> 1

# update the autostart list
hagrp -modify grp_zlnrssd AutoStartList <host> <host>

Service Group Operations

Start a service group and bring its resources onlinehagrp -online <group> -sys <sys>
Stop a service group and takes its resources offlinehagrp -offline <group> -sys <sys>
Switch a service group from system to anotherhagrp -switch <group> to <sys>
Enable all the resources in a grouphagrp -enableresources <group>
Disable all the resources in a grouphagrp -disableresources <group>
Freeze a service group (disable onlining and offlining)

hagrp -freeze <group> [-persistent]

note: use the following to check "hagrp -display <group> | grep TFrozen"

Unfreeze a service group (enable onlining and offlining)

hagrp -unfreeze <group> [-persistent]

note: use the following to check "hagrp -display <group> | grep TFrozen"

Enable a service group. Enabled groups can only be brought online

haconf -makerw
  hagrp -enable <group> [-sys]

haconf -dump -makero

Note to check run the following command "hagrp -display | grep Enabled"

Disable a service group. Stop from bringing online

haconf -makerw

  hagrp -disable <group> [-sys]
haconf -dump -makero

Note to check run the following command "hagrp -display | grep Enabled"

Flush a service group and enable corrective action.hagrp -flush <group> -sys <system>

Resources

add a resourcehaconf -makerw
  hares -add appDG DiskGroup groupw
  hares -modify appDG Enabled 1
  hares -modify appDG DiskGroup appdg
  hares -modify appDG StartVolumes 0

haconf -dump -makero

delete a resourcehaconf -makerw
  hares -delete <resource>
haconf -dump -makero
change a resource

haconf -makerw
  hares -modify appDG Enabled 1
haconf -dump -makero

Note: list parameters "hares -display <resource>"

change a resource attribute to be globally widehares -global <resource> <attribute> <value>
change a resource attribute to be locally widehares -local <resource> <attribute> <value>
list the parameters of a resourcehares -display <resource>
list the resourceshares -list  
list the resource dependencieshares -dep

Resource Operations

Online a resourcehares -online <resource> [-sys]
Offline a resourcehares -offline <resource> [-sys]
display the state of a resource( offline, online, etc)hares -state
display the parameters of a resourcehares -display <resource>
Offline a resource and propagate the command to its childrenhares -offprop <resource> -sys <sys>
Cause a resource agent to immediately monitor the resourcehares -probe <resource> -sys <sys>
Clearing a resource (automatically initiates the onlining)hares -clear <resource> [-sys]

Resource Types

Add a resource typehatype -add <type>
Remove a resource typehatype -delete <type>
List all resource typeshatype -list
Display a resource typehatype -display <type>
List a partitcular resource typehatype -resources <type>
Change a particular resource types attributeshatype -value <type> <attr>

Resource Agents

add a agentpkgadd -d . <agent package>
remove a agentpkgrm <agent package>
change a agentn/a
list all ha agentshaagent -list  
Display agents run-time information i.e has it started, is it running ?haagent -display <agent_name>  
Display agents faultshaagent -display |grep Faults

Resource Agent Operations

Start an agenthaagent -start <agent_name>[-sys]
Stop an agenthaagent -stop <agent_name>[-sys]