Kedves Olvasóink!
Létrehoztunk egy új blog-ot, az alábbi címen:
Írásainkat az új oldalon lehet majd olvasni, ezt az oldalt megszüntetjük.
Üdvözlettel:
A Szerkesztők
... a forrás - hálózat, android, vagy amit akartok
Kedves Olvasóink!
Létrehoztunk egy új blog-ot, az alábbi címen:
Írásainkat az új oldalon lehet majd olvasni, ezt az oldalt megszüntetjük.
Üdvözlettel:
A Szerkesztők
Telepítés
A tárolórendszer node-jai CentOS 5.6 operációs rendszerrel lesznek telepítve.
A CentOS (és egyébb RHEL deriváns rendszerek) esetében a telepítést nagymértékben leegyszerűsíti és automatizálja a Kickstart szoftver. Az eljárás lényege, hogy a telepítendő rendszer paramétereit (hosztnév, hálózati beállítások, root jelszó stb.) egy fájlban megadjuk a Kickstart-nak, ami aztán automatikusan feltetepíti az operációs rendszert (unattended installation).
Ennek a módszernek - az automatizáláson kívül - vannak egyéb előnyei is:
A node-okat tehát Kickstart módszerrel telepítettem, az alábbi konfiguráció szerint (nfs1 node):
# nfs1 kickstart file
# install options
reboot
text
install
url --url=http://install.server.local/centos32bit
# configuration options
lang hu_HU
keyboard hu
timezone Europe/Budapest
network --device eth0 --ip=192.168.151.11 --netmask=255.255.255.0 --gateway=192.168.151.254 --nameserver=192.168.151.254 --hostname=nfs1 --bootproto=static
skipx
bootloader --location=mbr
zerombr
key --skip
# security
auth --useshadow --enablemd5
rootpw --iscrypted $1$GvTZBQO2$hJWl9aH8DO1fOQ5soJwfR1
firewall --disabled
selinux --permissive
# partitioning
clearpart --drives=cciss/c0d0 --all --initlabel
clearpart --drives=cciss/c0d1 --all --initlabel
part raid.11 --size 10240 --ondisk cciss/c0d0
part raid.12 --size 2048 --ondisk cciss/c0d0
part raid.13 --size 1024 --ondisk cciss/c0d0 --grow
part raid.21 --size 10240 --ondisk cciss/c0d1
part raid.22 --size 2048 --ondisk cciss/c0d1
part raid.23 --size 1024 --ondisk cciss/c0d1 --grow
raid / --level 1 --fstype ext3 --device md0 raid.11 raid.21
raid swap --level 1 --fstype swap --device md1 raid.12 raid.22
# software
%packages --nobase
openssh
openssh-clients
openssh-askpass
openssh-server
# scripts
%post
#!/bin/bash
# Installing grub to the MBR at the end of install:
/sbin/grub --batch --device-map=/dev/null <<EOGRUB
device (hd0) /dev/cciss/c0d0
root (hd0,0)
setup (hd0)
quit
EOGRUB
/sbin/grub --batch --device-map=/dev/null <<EO2GRUB
device (hd0) /dev/cciss/c0d1
root (hd0,0)
setup (hd0)
quit
EO2GRUB
A konfigurációs fájl egy-két beállítása magyarázatra szorul:
Névfeloldás
Miután feltelepült a rendszer, első lépésként be kell állítani a névfeloldást, hogy a tárolórendszer node-jain futó szoftverek név alapján azonosíthassák egymást (/etc/hosts):
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.151.11 nfs1
192.168.151.12 nfs2
192.168.152.101 nfs1-ha
192.168.152.102 nfs2-ha
Szoftverforrások
A különféle szoftverkomponensek (Heartbeat, Pacemaker, stb.) eléréséhez további szoftverforrásokra van szükség - konkrétan az EPEL és CLUSTERLABS repository-kra -, telepítsük ezeket:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
Következő lépés
Miután a tárolórendszer node-jain elindult az operációs rendszer, elkezdhetjük feltelepíteni a kalszterszoftvereket.
A tároló kifejlesztéséhez külön tesztrendszert állítottam össze. Az alábbi szerver vasak (2 db) képezik a rendszer alapját:
Amint látható a gépek nem éles környezetre alkalmas eszközök, tesztelés céljára azonban megfelelnek. A VMware ESXi hoszt már komolyabb hardver:
Az erős VMware hoszt biztosítja, hogy ne a virtualizáció legyen a szűk keresztmetszet, ha teljesítmény méréseket végzünk a tárolórendszeren. Minden bizonnyal a "SAN" hálózati eszköz sem von majd le további hasznos százalékokat a rendszer teljesítményéből:
Linux. Az operációs rendszernek mindenképpen valamilyen UNIX-ból származtatott OS-t szerettem volna használni. Mivel már 12 éve foglalkozom Linux-szal, legjobban ezt az OS-t ismerem, így célszerűnek tűnt ezt választani. Természetesen vannak egyébb előnyei is a Linux-nak, de ezekről majd később.
A SAN protokoll kiválasztása már keményebb dió volt. Mint említettem az alap VMware ESXi alapvetően két variánst támogat: iSCSI-t és NFS-t (az utóbbiból a NFSv3 over TCP verziót). Mindkét protokollnak vannak előnyei és hátrányai:
A felsorolt érvek és ellenérvek alapján az NFS protokollt választottam.
Blokk szintű replikáció
Mint már említettem az előző blogbejegyzésben, a Linux tartalmaz merevlemezek közötti (RAID) és gépek közötti (DRBD) blokk replikációs modult is. A készülő rendszerben mindkét modult fel szeretném használni, hogy növeljem a tároló hibatűrését.
Logikai kötetkezelés
A módszer lényege, hogy a fizikai lemezeket (Physical Volume, PV) beletesszük egy nagy logikai tárolóba (Volume Group, VG) majd a logikai tárolóból különféle szeleteket hasítunk ki, adattárolás céljára (Logical Volume, LV). Ez a módszer nagyon dinamikusá teszi az adattárolást, mert az LV-k mérete folyamatosan változtatható és ha helyszűkében vagyunk, bármikor további fizikai lemezeket (PV) adhatunk a logikai tárolókhoz (VG).
Napjaink egyik legjobb LVM implementációja a ZFS, ami logikai kötetkezelő és fájlrendszer is egyben. Olyan finomságokkal van felvértezve, mint a blokk szintű replikáció (például RAID-Z) vagy a blokk szintű deduplikáció (ez utóbbi nagyon jól jön virtualizált környezetben). Sajnos a ZFS Linux alatt még gyerekcipőben jár, ezért a Linux LVM megoldását fogom használni.
HA modulA fentebb felsorolt szoftverek indulásának/leállásának vezérlését, működésének felügyeletét és hiba esetén a szükséges ellenintézkezések végrehajtását, mint egy karmester hangolja össze a klaszter szoftver. Linux alatt többféle klaszter is elérhető, én a Heartbeat/Pacemaker párost favorizálom.
A LinuxHA projekt hozta létre a Heartbeat klaszer keretrendszert és üzenetküldési réteget. A Heartbeat elsődleges feladata, hogy kiépítse és menedzselje a klaszert alkotó gépek közötti kommunikációt és létrehozza a klaszter infrastruktúrát.
A LinuxHA-ból kivált Pacemaker projekt létrehozott egy Cluster Resource Manager (CRM) modult, mely a klaszter különféle erőforrásait (fájlrendszerek, IP címek, szolgáltatások stb.) kezeli. A Pacemaker egy központi adatbázisban (CIB) tárolja a klaszter állapotát és minden egyes állapotváltozásra meghatározott módon reagál. A Pacemaker teljes mértékben testreszabható és nagyon komplex klaszterek alkíthatóak ki vele.
A következő fázis
Ebben a bejegyzésben bemutattam, hogy milyen hadverekből és szoftverekből tervezem megépíteni a tárolórendszert. A következő lépésben elkészítem a rendszer tervét.
VMware ESXi kompatibilitás
Redundancia, hibatűrés
A kialakítandó rendszert több (egész pontosan kettő) NAS eszközből álló klaszterként képzelem el, melyek között blokk szintű adatreplikáció történik. Ez azért fontos szempont, mert így a rendszer egyik node-jának kiesése esetén a másikon gyorsabban lehet helyreállítani az adattárolási szolgáltatást, mintha mentésekből probálnánk megtenni azt.
Egyszerű menedzsment
A tárolórendszerrel szemben nem várom el, hogy bonyolult webes felülettel rendelkezzen, elég ha soros konzolról és SSH kapcsolaton keresztül menedzselhető. A kevesebb néha több (KISS elv).
Modularitás
CDP üzeneteket a cdp-send parancs segítségével tudunk küldeni. A CDP szolgáltatás kialakításához már csak egy LSB kompatibilis init-szkriptre van szükségünk (amit a csomag nem tartalmaz):