OpenBSD

008: SECURITY FIX: May 26, 2004

Címkék

Az IPv6 kód xdm(1)-ben való megjelenésével a 'requestPort' erőforrás egyik ellenőrzése véletlenül kimaradt. Ha a DisplayManager.requestPort 0 értéket vesz fel, akkor az xdm egy chooserFd TCP socketet nyit az összes interfészen, amely biztonsági rizikót jelenthet. Bővebben a Bugzilla-ban.A hibát javító patch elérhető az OpenBSD 3.5-stable kiadáshoz. A korábbi OpenBSD kiadások nem érintettek, mert az OpenBSD 3.4 még az XFree86 4.3-mal érkezett, és az IPv6 integráció csak a XFree86 4.3 és az XFree86 4.4 között került beépítésre.

Bővebb infó az OpenBSD errata odalon.

StackGhost OpenBSD/sparc-on

Címkék

Theo de Raadt bejelentése szerint egy újabb védelmi mechanizmusnak örvendhetnek a sparc (v6 v7 v8) gépek tulajdonosai a W^X és a Propolice mellett. Az új funkció a StackGhost névre hallgat, és védelmet nyújt a puffer túlcsordulásos támadásokkal szemben.Az anyagot Mike Frantzen írta pár évvel ezelőtt az OpenBSD 2.8-hoz, de csak most került be az OpenBSD -current-be.

A StackGhost-ról bővebben ebben a PDF fileban olvashatsz. Bővebb a KernelTrap-on.

OpenBSD: Terhelés-elosztó web szerver készítése CARP-pal

Címkék

Az OpenBSD-vel foglalkozó előző írásaimban megismerkedhettünk az OpenBSD 3.5 telepítésének menetével, elvégeztük a rendszer alapvető beállítását, lefordítottuk a saját, az OpenBSD csapat által támogatott kernelünket, majd megpróbáltunk magas rendelkezésre-állású failover web szervert készíteni az OpenBSD 3.5-ben bemutatkozó CARP segítségével.

Az elkészült web szerverünk szépen tette is a dolgát egy ideig. Szerencsére sikerült olyan web tartalommal feltölteni, amelyre sokan voltak kíváncsiak.

Egyszer csak azt vettük észre, hogy a web szerverünk folyamatosan lassult, majd először csak délutánonként nem volt elérhető, a későbbiekben pedig rendszeresen kiszolgálási gondjaink akadtak. Főleg olyankor, amikor egy-egy sokat látogatott oldalon linkelték a mi web oldalunkat, és hirtelen nagy számú kérés érkezett felénk, amelyet a web szerverünk nem tudott kiszolgálni. Az interneten a fent leírt jelenséget Slashdot effektusnak nevezik. A Slashdot effektus, vagy egyéb nagy webes terhelés ellen egy ideig harcolhatunk úgy, hogy nagyobb teljesítményű processzort, több memóriát, gyorsabb merevlemezt építünk a gépünkbe, de egy idő után rá kell jönnünk, hogy az ilyen típusú terhelések ellen egy géppel nem vehetjük fel sikerrel a harcot.Szóval két dolgot tehetünk, az egyik, hogy felfele, vertikálisan skálázzuk a rendszerünket, a másik pedig az, hogy horizontálisan bővítjük azt. Lássuk, hogy melyik típusú skálázás mit jelent.

Fel skálázás (scale-up):

------------------------

Pár évvel ezelőtt még de facto szabvány eljárásnak volt tekinthető a felfele történő skálázás akkor, ha egy rendszer teljesítményét növelni kellett. A recept egyszerű volt, vegyél még nagyobb, még erősebb vasat, tömj bele egy marék processzort, egy zsák memóriát, SCSI merevlemezeket, gyors hálózati csatolót. Ha ez egy idő után kevés lesz, akkor tegyél bele ezekből kétszer annyit, vagy kétszer gyorsabbat. A piacra egyre gyorsabb és gyorsabb processzorok érkeztek - egy ideig szinte követve Moore híres törvényét - így biztosított volt, hogy egyre nagyobb teljesítmény zsúfolhassunk egy darab rendszerbe. Aztán a szabványnak tekinthető elgondolás megdőlt, több okból is kifolyólag: egy idő után képtelenség felfele skálázni, mert nem tudunk több és gyorsabb eszközt beleépíteni a gépbe. A gép egymaga nem képes redundáns működésre, így ha meghibásodik, akkor a rajta futó szolgáltatások elérhetetlenné váltak. Ezért megszületett az új elgondolás, az oldal irányba történő skálázás.

Ki skálázás (scale-out):

------------------------

Az oldal irányban skálázott rendszerek is sokkal nagyobb teljesítményt nyújtanak, mint egy szóló rendszer, de teljesen más megközelítésből. Clusterezéssel, vagy egyéb más eljárással feldaraboljuk a rendszerre irányuló terhelést, azokat elosztjuk több kisebb teljesítményű szerver között, így az egyes szerverek képesek megbirkózni a nagy terhelés rájuk háruló kisebb részeivel. Magyarul a munkát nem egy nagy vas (szaknyelven előforul big iron néven is) végzi, hanem több kisebb szerver, amelynek az összegzett teljesítménye azonban meghaladja az egy nagy szerver teljesítményét. Már most látszik, hogy ennek az elképzelésnek sok előnye van az előzőhöz képest. Az egyik a redundáns működés. Ha a rendszerünk egyik tagja kiesik mondjuk meghibásodás miatt, akkor a többi szerver függetlenül a leállt tagtól, tovább tud szolgáltatni. A jelenség annyi lesz, hogy a kiesett tag feladata a többi szerverre hárul, és azokon elosztva annyival nagyobb workload jelentkezik, amennyit a kiesett szerver végzett. A másik előnye ennek a megközelítésnek, az, hogy szinte a végtelenségig bővíthető, szemben a big iron megközelítéssel. Tegyük fel, hogy a 4 node-ból álló webszerverünk már nem képes kiszolgálni a kéréseket. Mit teszünk? Egyszerűen üzembe helyezünk egy újabb node-ot, és a probléma meg van oldva. Ha egy nem elég, akkor beüzemelünk még egyet, kettőt, vagy éppen ahányra szükségünk van.

Tehát a mai jelszó a oldal irányú skálázás! Már csak azért is mert a cikksorozat az OpenBSD köré épül, és ha akarnám se tudnám a rendszert felfele skálázni, annál az egyszerű oknál fogva, hogy az OpenBSD nem képes felfele növekedni. Hogy miért? Mert nem támogatja az SMP-t (több processzoros működést), és egy processzornál többet nem képes (jelenleg) kezelni.

Szóval scale-out. Nézzük mi jöhet szóba:

RR DNS:

-------

Az első ami eszembe jut, az a szegény ember load-balancer-je a Round Robin DNS (hívják LB DNS-nek is). A RR DNS lényege, hogy az egy web oldalra irányuló kéréseket több gépre osztjuk el úgy, hogy a hosthoz több bejegyzést készítünk a DNS szerverben. Tételezzük fel, hogy a hup.hu zónafile-jában az alábbi bejegyzéseket készítjük a (BIND) DNS szerverünkön:

www 60 in A 195.228.252.138

www 60 in A 195.228.252.139

Mostantól ha valaki lekéri a www.hup.hu IP címét a DNS szerverektől, akkor az esetek felében a 195.228.252.138-as címet, míg az esetek másik felében a 195.228.252.139-es címet fogja visszakapni.

# host www.hup.hu

www.hup.hu has address 195.228.252.138

www.hup.hu has address 195.228.252.139

majd utána:

# host www.hup.hu

www.hup.hu has address 195.228.252.139

www.hup.hu has address 195.228.252.138

Az alkalmazasok nagy része csak az elsőnek visszakapott számot használja fel, így a dolog szépen működik. Kb. az esetek felében a kérés az egyik szerverre, míg az esetek másik felében a masik szerverre érkezik. A DNS konfigban a TTL (Time To Live) értéket lehetőleg alacsonyan kell tartanunk, hogy az útban levő cache DNS szerverek ne tartsák sokáig gyorsítótárban az IP címeket és ne ``ragadjanak le'' az egyiknél. Így a terhelés szépen közelítőleg 50-50%-ban eloszlik a két gép között.

``Hurrá, megcsináltuk!" - kiálthatnánk fel, és itt véget is érne a cikk. Igen megcsináltuk, de ha ilyen egyszerű lenne, akkor nem lennének komoly berendezések, amelyek ezt a funkciót biztosítják. Ennek a megoldásnak vagy egy nagy hátránya. Ha az egyik szerver kiesik, akkor a DNS feloldások felében a kliens gépek egy olyan szerver IP címét adják vissza, amely már nem él. Ez komoly probléma lehet. A megoldás ilyenkor, az lehet, hogy 1.) módosítjuk a DNS konfigurációt, és megvárjuk míg az elterjed a többi DNS szerver között, 2.) ``gányolunk'', és ping, shell, és arp manipuláló segédprogramokat felhasználva a meghalt gép IP-címét átvesszük az élő gépre. Vagy kitalálunk valami mást...

Van egy másik (olcsó) megoldás is (drága van több is), mégpedig az, hogy munkába fogjuk az OpenBSD-t és a CARP-ot.

A múlt alkalommal felépítettünk egy failover CARP rendszert, amelynek egyik hibája az volt, hogy nem biztosított terhelés-elosztást. Ezt fogjuk most tovább fejlesztni.

Tehát a kiindulási alap ugyanaz, mint a múltkor. Ahhoz, hogy egy ARP elosztott virtuális hostot létre tudjunk hozni, mind a két fizikai hostra (Puffy és Rock) konfigurálni kell egy virtuális hostot, amely majd válaszolni fog az ARP kérésekre, és ez által kezelni fogja a webes forgalmat.

Először felállítjuk a carp csatoló-felületeket a Puffy névre hallgató gépen:

# ifconfig carp0 create

# ifconfig carp0 vhid 1 pass foobar 192.168.5.100

(eddig jutottunk a múltkot, és most folytatjuk)

# ifconfig carp1 create

# ifconfig carp1 vhid 2 advskew 100 pass foobar 192.168.5.100

Majd felállítjuk a carp csatoló-felületeket a Rock névre hallgató gépen is:

# ifconfig carp0 create

# ifconfig carp0 vhid 1 advskew 100 pass foobar 192.168.5.100

(itt eddig jutottunk a múltkor, és innen folytatjuk)

# ifconfig carp1 create

# ifconfig carp1 vhid 2 pass foobar 192.168.5.100

Ha ez kész, akkor az ARP balancing funkciót engedélyezni kell mindegyik hoston:

# sysctl net.inet.carp.arpbalance=1

(reboot után is maradandó beállítást a /etc/sysctl.conf fileban kell elkövetni)

Amikor a hostok ARP kérést kapnak a 192.168.5.100-as címre, a kérés IP címe alapján kiválasztódik az egyik virtuális host. A virtuális host azon tagja fog válaszolni a kérésre, amelyik a MASTER, a többi pedig ignorálja a kérést. Mivel mindig az a host lesz a MASTER a virtuális hostok közül, amelyik gyakoribb időközönként hirdeti magát, abban az esetben, ha az 1-es számú virtuális host (vhid 1) választódik ki, akkor a Puffy névre hallgató gép fog a kérésre válaszolni, mert a vhid 1-ben ő a MASTER. Ebből következik, hogy a 2-es számú virtuális host (vhid 2) kiválasztódása esetén a Rock névre hallgató gép fog válaszolni, hiszen a vhid 2-vel jelölt virtuális hostban a Rock a MASTER.

A konfiguráció az alábbiak szerint néz ki a Puffy-ról nézve:

és a Rock-ról nézve:

A fenti konfigurációból az következik, hogy az ARP kérések eloszlanak (a kérés forrásának címe alapján) a virtuális (vhid 1 és vhid 2) hostok között, melynek az eredménye az lesz, hogy a webes forgalom is eloszlik a hostok között. Ha az egyik host meghal, akkor a másik magához ragadja a virtuális MAC address-t, és az fog a továbbiakban a kérésekre válaszolni.

A fenti konfigurációnak is van hátránya természetesen. Az egyik, hogy csak akkor működik az ARP balancing, ha a csoport tagjai egy fizikai subnet-en helyezkednek el. A CARP-ban implementált load balancing magában sajnos nem tökéletes. Mivel a CARP a kérést indító IP címének HASH-e alapján dönti el, hogy melyik virtuális host fogja a kérést lekezelni, sokat nem várhatunk tőle. Például abban az esetben, ha le szeretnénk tölteni egy file-t a szerverről, és azzal egy időben még böngészni is szeretnénk a web szerveren, akkor sajnos ugyanattól a szervertől fogjuk kapni az adatokat.

Bővebb információt a carp(4), sysctl(3), inet(4), ifconfig(8), sysctl(8) oldalakon kaphatsz.

Jó barkácsolást!

OpenBSD ports-security levelező lista

Címkék

Nemrég elindult a ports-security levelező lista. Erre a listára a portokat és a csomagokat érintő biztonsági figyelmeztetéseket küldjük a támogatott kiadásokhoz. Jelenleg ez az OpenBSD 3.4 és az OpenBSD 3.5. Az SA-k alapjául az OpenBSD VuXML dokumentum szolgál, amely megtekinthető a http://www.vuxml.org/openbsd címen.A bejelentés igen nagy flamet keltett az OpenBSD Journalon. A főbb okok:

1) Miért is van erre szükség?

Mert nem minden felhasználónak van meg a lehetősége arra, hogy a http://www.openbsd.hu/pkg-stable.html oldalt bújja nap mint nap. Ezen kívül volt még egy lehetőség arra, hogy nyomon kövesse az ember a biztonsági javításokat a ports tree-ben. Ez pedig nem más, mint a CVS logok. Szerintem egyértelmű, hogy ez miért is rossz. Egy átlag felhasználót nem igazán érdekli az napi rendszerességgel, hogy mi kerül be a tree-be. Persze aki kiváncsi rá annak ez nem okozott problémát.

2) Csak időpocsékolás.

Ez nézőpont kérdése. Már akkor is megérte a dolog, ha csak pár felhasználót segített ki a dolog.

Tehát aki még nem tudott a dologról, annak ajánlatos feliratkozni erre a listára, hogy minél hamarabb értesüljön a javított portokról és csomagokról.

Ezen kívül felhívom a figyelmeteket arra, hogy a javított portokat csak i386-ra csomagolják újra. Így ha más architectúrát használsz, kénytelen leszel sajátkezűleg fordítani.



És végül már csak annyi, hogy ~1 hónapja elérhető a http://www.openbsd.hu mirror a Magyar BSD Egyesületnek köszönhetően. (2 óránként syncel)

Happy hacking

OpenBSD: magas rendelkezésre-állású webszerver készítése CARP-pal

Címkék

Most, hogy sikeresen feltelepítettük az OpenBSD 3.5 operációs rendszerünket, beállítgattuk az alapvető dolgokat, és megtanultunk szupportált kernelt fordítani, azt a feladatot kaptuk, hogy olyan web szervert kell készítenünk, amely üzleti kritikus környezetben fog működni, és ha törik ha szakad annak üzemelnie kell.

Nem megengedett a downtime, és meg van adva, hogy éves szinten maximum 5 percet állhat a web szerverünk. Ez azt jelenti, hogy 99.999% (5 9-es) rendelkezésre-állású (High Availability - HA) web szervert kell készítenünk, amely az év 365 napján üzemel. Sok pénzünk nincs, a nagy vasak elfelejtve, de van a sarokban néhány jobb minőségű asztali PC, amelyet a nemrég elbocsátott kollégák hagytak itt. Ezekből kell a feladatot megoldani.

Nem kis feladat, és több helyen is buktatókkal van tűzdelve, de azért próbáljuk meg!

A magas rendelkezésre-állású rendszereknél a legnagyobb ellenfelünk a Single Point of Failure (SPF), amit magyarra talán úgy lehetne átültetni, hogy az ``egy pontból eredő megbízhatatlanság" vagy ``egy pontból eredő hibaforrás". Ha HA rendszert akaruk építeni, akkor rendszerünkből el kell tünteni a SPF-eket.

A SPF olyan meghibásodás, amely ha bekövetkezik, akkor a HA rendszerünk üzemszerű működése megszűnik. Képzeljünk el egy failover clustert, amely egy darab 220 voltos hosszabbítóba van bedugva. Hiába van 2 node-ból álló cluster-ünk, hiába figyeli az egyik node szorgalmasan a másik node által küldözgetett heartbeat-eket, ha jön a takarító néni, és szépen kitakarítja a konnektorból a betápot. Ebben az esetben a SPF a 220 voltos áramellátás. Vagy képzeljük el shared SCSI alapú failover cluster esetén, hogy meghibásodik a node-okat a diszk alrendszerrel összekötő kábel. Ez esetben a frontendek hiába működnek, ha a backend megadta magát. Itt az SPF a diszk alrendszert a node-okkal összekötő kábel lenne. Sok egyéb példát lehetne még hozni, de egy biztos: a jelszó a SPF-ek eltüntetése.Térjünk vissza az eredeti feladathoz. A feladat az, hogy egy web szervert kell építeni, amelynek kihagyás nélkül kell üzemelnie. Tételezzük fel, hogy egy nagy cégnél dolgozunk, ahol külön ember felel az áramellátásért és a hálózati infrastruktúráért, ezért azzal nem kell törődnünk. Tételezzük fel, hogy olyan szünetmentes áramforrásokat kapunk, amelyek külön körön vannak, mindegyiket generátor hajt, ha az áramszolgáltató leáll. Tételezzük fel, hogy a UTP fali aljzatban állandóan van ``delej'', azaz az ethernet hálózatunk 100%-os rendelkezésre-állással bír. Tekintsünk el attól, hogy bekövetkezhet egy földrengés, vagy robbanás, amely miatt a web szerverünk elérhetetlenné válik (nem interkontinentális clustert építünk egyelőre :-), stb.

Egy ilyen környezetben a mi feladatunk a következő:

- biztosítsuk, hogy a web szervert futtató vas állandóan, hiba nélkül működjön

- biztosítsuk, hogy a vason futó web szerver 365 napon keresztül kiszolgálja a kéréseket, de emellett az összes biztonsági (security) és az üzemszerű működést javító (reliability) fix felkerüljün a szerverünkre

``Ezt lehetetlen megcsinálni! Felmondok!'' - mondhatnánk egyszerűen. ``Hiába van 100%-os áramellátás, hiába 100%-os a hálózat, elromolhat a ethernet kártya, tönkremehet a CPU, elfüstölhet a RAM, stb. De ha szerencsém van, és ezek nem következnek be, akkor sem tudom a legfrissebb kernel patcheket feltenni anélkül, hogy újra ne kelljen indítanom a szervert. Két újraindítás egy évben, és már nem is tudom hozni az 5 9-es rendelkezésre-állást''.

Szerintem ne mondjunk fel, hanem kérjünk fizetésemelést, és csináljuk meg!

Arra gondolom mindenki rájött, hogy ahhoz hogy a fenti kívánalmakat teljesítsük nem lesz elegendő egy számítógép. Ahhoz, hogy állandó szolgáltatást tudjunk nyújtani, valamilyen failover cluster megoldást kell készítenünk. A failover cluster lényege, hogy minimum 2 node-ból álló rendszert építünk, amelyre teljesen azonos (jelen esetben HTTP szerver) szolgáltatásokat telepítünk. Van két szerverünk, amelyre feltelepítettük a céges web oldalakat. Külön-külön megszólítva szépen vissza is adják a kért web oldalt, és most már csak azt kell megoldanunk, hogy ha az egyik kiesik, akkor a helyét vegye át a másik.

A két node-os failover cluster-ezés egyik megvalósítása úgy működik, hogy adott a két node, amelyeknek saját IP címe van. A cluster service nem csinál mást, mint a két IP cím elé egy virtuális IP címet tesz, és az adott kondícióktól függően kapcsolgat a két szerver között.

A szerverek a virtuális IP címen keresztül lesznek elérhetőek. Lesz egy elsődleges szerver, amelyet nevezzünk MASTER-nek. Alapértelmezés szerint a MASTER szerver fogja a céges web oldalt kiszolgálni. A másik node lesz a BACKUP. Ha minden jól megy, akkor a MASTER kiszolgálja az webes kéréseket, és a BACKUP szerver szépen csendben pihen. De tegyük fel, hogy a MASTER szerverben eldurran a merevlemez, és megáll az egész gép. Ilyenkor a cluster szerviz észreveszi a hibát, és a virtuális IP címet az eddig pihenő BACKUP szerverre ``irányítja''. Ez a másodperc töredéke alatt lezajlódik, jó esetben a felhasználó ebből a váltásból semmit nem észlel. Ezt a váltást nevezzük failover-nek.

Hogy honnan tudja a BACKUP szerver, hogy át kell vennie a feladatot a MASTER szervertől? Onnan, hogy a két gép összeköttetésben áll egymással. Az összeköttetésen (amely lehet dedikált ethernet hálózat a két gép között (gyk. crosslink kábel), vagy soros porti kommunikáció, stb.) keresztül a szerverek ún. ``heartbeat'' jeleket küldözgetnek egymásnak (ezek általában speciális broadcast UDP csomagok, de lehet más megoldás is). Amíg a BACKUP szerver folyamatosan érzékeli a MASTER szervert, addig semmit nem tesz, marad ``készenléti'' állapotban. Viszont, ha a ``heartbeat'' csomagok nem érkeznek meg egy bizonyos időn belül, akkor a BACKUP szerver megkezdi a failover folyamatot, és magához veszi az irányítást. Ettől a pillanattól kezdve a BACKUP szerver MASTER-ré válik, és ő fogja kiszolgálni a kéréseket. Ha közben a megállt szerverben kicseréljük a merevlemezt, újratelepítjük a szervert, majd bekapcsoljuk és az visszatér az élők sorába, akkor ez a szerver lesz a BACKUP szerver, és a folyamat kezdődik elölről. Az ritka, hogy a két szerver egyszerre menjen tönkre (van villámvédelem, redundáns áramellátás, kölün körön vannak, stb.). Így már egy nagy lépést tettünk a magas rendelkezésre-állás felé. Ebben a felépítésben az egyik szervert bármikor leállíthatjuk, hogy abban hardvert cseréljünk, vagy akár az egész operációs rendszert megfrissítsük, kernelt cseréljünk, stb. A webes ügyfelek ebből semmit nem vesznek észre.

``Mi van akkor, ha a másik szerver akkor hal meg, mikor az egyik node le van kapcsolva?''

Akkor baj van, de ez ellen lehet védekezni azzal, hogy nem kettő, hanem 3-4, stb. node-ból álló clustert építünk. Ennek csak a pénztárcánk szab határt.

``Jó, jó de egy ilyen rendszer kiépítése biztos sok pénzbe kerül.''

Ha a windowsos világban, vagy hardveres berendezésben gondolkodunk akkor amikor egy ilyen megoldás után nézünk, akkor bizony nem kevés pénzünkbe fog kerülni a biztonság. De mi gondolkodjuk inkább nyílt forrásban, és oldjuk meg abból!

Az OpenBSD 3.5 megjelenésével kapunk egy olyan eszközt, amellyel a fent leírt scenariot meg tudjuk oldani. Az eszköz nem más mint egy protokoll, amely a CARP névre hallgat. A CARP jelentése Common Address Redundancy Protocol, ami magyarra lefordítva valami ilyesmit tesz: közös címen alapuló redundancia protokoll. A CARP-ról bővebben olvashatsz a HupWiki CARP szócikkében, vagy az OpenBSD 3.5 carp(4) man oldalon.

Tehát a feladatot OpenBSD 3.5-ös gépekkel, és CARP-pal fogjuk megoldani.

Lássunk hozzá!

Kiindulási alap:

Adott két gépünk, amelyre feltelepítettünk az OpenBSD 3.5-öt, beállítottunk, és engedélyeztünk az induláskor, hogy az alaprendszer részeként kapott Apache web szerver elinduljon. Beállítottuk a gépeken a hálózatokat. A két gép jelenleg így fest:

Puffy:

------

IP cím: 192.168.5.10

Netmask: 255.255.255.0

Rock:

-----

IP cím: 192.168.5.11

Netmask: 255.255.255.0

A két gépet megszólítva böngészőn keresztül ugyanazt a céges web oldalt kapjuk meg (ezt előzőleg feltelepítettük a gépekre). Azt szeretnénk, hogy a két gép a 192.168.5.100-as IP címen osztozzon (virtuális IP cím - erre lesz majd a DNS szerverben bejegyezve a web oldalunk), és a Puffy névre hallgató gép legyen a MASTER gép, ha mindkettő elérhető. A Rock lesz a készenlétben álló BACKUP, amely azonnal átveszi a Puffy szerepét, ha az nem elérhető.

Itt jön a képbe a CARP. A CARP-ot két dologgal lehet konfigurálni. Az egyik az ifconfig(8), a másik pedig a sysctl(3). A sysctl-lel az alábbi dolgokat lehet állítani:

net.inet.carp.allow = a host fogadja-e vagy sem a CARP csomagokat (alapértelmezés szerint be van kapcsolva)

net.inet.carp.arpbalance = load balance (terhelés elosztó) megoldáshoz használatos, jelenleg nem használjuk (alapértelmezés szerint ki van kapcsolva) (erről a másik cikkben lesz szó)

net.inet.carp.log = CARP hibákat logolja (alapértelmezés szerint ki van kapcsolva)

net.inet.carp.preempt = a természetes kiválasztódást engedélyezi a CARP hostok között (alapértelmezés szerint ki van kapcsolva)

A hostokat a következőképpen konfiguráljuk.

Puffy:

------

puffy# ifconfig carp0 create

Ezzel létrehoztuk a carp0 interfészt.

puffy# ifconfig carp0 vhid 1 pass foobar 192.168.5.100

Ezzel a paranccsal a carp0-ot a vhid 1 csoportba tettünk. A vhid a ``virtual host identifier'', amely azt jelöli, hogy mely CARP hostok tartoznak egy virtuális csoportba. A pass-sal megadtuk azt a jelszót, amellyel a CARP hostok igazolják magukat, és a végén megadtuk azt a virtuális IP címet, amelyen a virtuális web szerverünk elérhető lesz.

Ahhoz, hogy a reboot után ezek a beállítások meg is maradjanak, létre kell hozni a /etc/hostname.carp0 filet, amely a következőket kell, hogy tartalmazza:

puffy# cat /etc/hostname.carp0

inet 192.168.5.100 255.255.255.0 192.168.5.255 vhid 1 pass foobar

Értelemszerűen az adatok: IP cím, netmask, broadcast, virtual host ID, jelszó.

Most ugyanezt eljátszuk a másik hoston, a Rock-on is.

rock# ifconfig carp0 create

rock# ifconfig carp0 vhid 1 pass foobar 192.168.5.100

Elkészítjuk a /etc/hostname.carp0 filet ezen a hoston is.

Az a rendszer lesz a MASTER, amelynek a carp0 interfésze előbb felhúzódik. Viszont mi van akkor, ha azt szeretnénk, hogy a Puffy legyen a MASTER mindig, ha az lehetséges, mert mondjuk annak erősebb a hardvere? Semmi gond, ez lehetséges, csak tudatni kell a CARP-pal.

Mindig az lesz a MASTER gép, amely sűrűbb időközönként hirdeti magát. Annyit kell elérnünk, hogy a Puffy gyakrabban hirdesse magát, mint a Rock, és akkor ha mindkét gép elérhető, akkor a Puffy lesz a MASTER. Természetesen ebben az esetben a Rock lesz a BACKUP. Ha a Puffy megszűnik hirdeti magát egy bizonyos perióduson belül (ez az idő a háromszorosa a BACKUP (Rock) hirdetési intervallumának), akkor a Rock megkezdi a failover procedúrát, átveszi az irányítást, és ő lesz a MASTER. Ez annyit tesz, hogy ezután ő fog válaszolni a 192.168.5.100 IP címhez tartozó ARP kérésekre.

Ha azt szeretnénk, hogy a Puffy sűrűbben hirdesse magát, mint a Rock (és ezzel ő legyen a MASTER), akkor a Rock-on le kell csökkenteni a hidetés frekvenciáját az alábbi paranccsal:

rock# ifconfig carp0 advskew 100

(ha maradandóan akarjuk a beállítást akkor így módosul a /etc/hostname.carp0 file:

inet 192.168.5.100 255.255.255.0 192.168.5.255 vhid 1 advskew 100 pass foobar)

Természetesen a következőt hozzá kell adni a /etc/sysctl.conf-hoz:

net.inet.carp.preempt=1

(kézzel: sysctl -w net.inet.carp.preempt=1)

A bővebb parancsokért nézd még meg a carp(4), ifconfig(8), sysctl(3) man oldalakat.

Ezzel a magas rendelkezésre-állású web szerverünk elkészült.





A képen az látható, hogy a Puffy a MASTER, és jelenleg ő szolgálja ki az oldalakat. A Rock jelenleg készenlétben áll.




A képen az látható, hogy a Puffy megállt, és a Rock elvégezte a failovert. Jelenleg a Rock szolgálja ki az oldalakat.




A képen az látható, hogy a Puffy visszatért az élők sorába (HDD csere), és ismét ő a MASTER, mert a hirdetési frekvenciája nagyobb, mint a Rock-é. Jelenleg a Puffy szolgálja ki az oldalakat.

Szeretnél segíteni az OpenBSD-nek?

Címkék

Anonymous küldte be a hírt:

Kedves jelenlegi, vagy leendő OpenBSD felhasználó! Ha szeretnéd támogatni a projektünket, akkor az alábbi dologban tudnál a segítségünkre lenni:

Nagyon nagy hasznát tudnánk venni olyan hardvereknek amelyek jelenleg nem támogatottak az OpenBSD operációs rendszer által, illetve olyan hardvereknek is, amelyek támogatottak de tesztelésre nagyon jól jönnének. Itt különböző architektúrájú gépekre gondolunk (sparc, sparc64, amd64, alpha, stb.).Ha szeretnél segíteni, kérlek látogasd meg a http://www.openbsd.hu/want.html oldalt, ahol egy nagy listát találsz arról, hogy mire is lenne jelenleg legnagyobb szükség. Ha úgy gondolod, hogy szívesen támogatnál Magyarországról folyó fejlesztést, akkor kérlek írj egy emailt a robert@openbsd.org címre.

Természetesen hardvereket ideiglenesen is örömmel fogadok, és miután megfelelő támogatottság jött létre hozzájuk, az adományozott dolgokat azonnal visszaszolgáltatom. Legjobban 64-bites gépekre lenne óriási szükség a portolási problémák megoldásához.

Segítségeteket előre is köszönöm.

A PF User's Guide BSD Licenc alatt

Címkék

Daniel Hartmeier, az OpenBSD-s PF szerzőjének bejelentése szerint a OpenBSD PF User's Guide munka BSD Licenc alá került. Nick Holland és Joel Knight nagyszerű munkája mostantól szabadon felhasználható bárkinek bármilyen céllal. Ettől a pillanattól kezdve lehetőség van arra, hogy más projektek - mint például a FreeBSD, amely nemrég olvasztotta be a PF-et - közreműködhessenek a dokumentum fejlődésében.