Hlavní navigace

OpenBSD 4.1: redundance a load-balancing

4. 5. 2007
Doba čtení: 6 minut

Sdílet

OpenBSD projekt vydává novou verzi svého operačního systému každých šest měsíců. Dne 1. května vyšla oficiálně nová verze OpenBSD. Jejím tématem je opět poskytování, respektive neposkytování dokumentace k hardware. Co nového nám OpenBSD 4.1 přináší? Kromě podpory nového hardware jsou tu i další zajímavé novinky.

Úvodem je potřeba opět připomenout, že fungování OpenBSD projektu je postaveno na prodeji oficiálních médií, OpenBSD suvenýrech a dotacích. Jestliže jste si tedy ještě neobjednali oficiální média OpenBSD 4.1, můžete tak učinit přes belgického distributora kd85.com.

CD OpenBSD

Když se totiž podíváme na stránku dotací, zjistíme, že tam nefiguruje žádná z těch velkých nadnárodních IT korporací, které přitom těží z vývoje OpenBSD, respektive OpenSSH, jež je vyvíjeno paralelně při OpenBSD, nejvíce. OpenSSH je součástí většiny instalací komerčních UNIXů, komerčních softwarových produktů nebo základem síťové infrastruktury. Jestli tedy OpenBSD/OpenSSH využíváte (v komerční sféře), buďte fér a objednejte si oficiální média nebo pošlete alespoň menší dotaci.

Téma OpenBSD 4.1: dokumentace k hardware

Tématem nové verze OpenBSD je opět poskytování respektive neposkytování dokumentace k hardware výrobci. Během uplynulého půl roku vývojáři OpenBSD v žádném případě neslevili ze svých pozic, a tak například kritizovali výrobcem dodané binární ovladače nebo podepisování NDA. NDA znamená, že vývojář podepíše smlouvu o utajení a výrobce mu dovolí nahlédnout do specifikace zařízení. Výsledkem je binární ovladač, s největší pravděpodobností určený pouze pro jednu platformu a jeden operační systém.

Puffy

Proč ne binární ovladače? Protože to není open-source; ovladač neprochází důkladným bezpečnostním auditem (na rozdíl od firmware, který je natažen do zařízení, běží ovladač v privilegovaném prostředí jádra; připomeňme bug NVIDIA ovladače), funkce dodaného ovladače nemusí splňovat naše kritéria (příklad RAID ovladačů – každý pes jiná ves = častá neexistence unifikovaného administračního nástroje, naštěstí existují přístupnější výrobci, díky nim vývojáři OpenBSD vytvořili pseudo-vrstvu bio(4) a tímto dali vzniknout jednotnému RAID management interface využívajícího bio(4) a majícího přístup přímo k firmware řadiče – bioctl(8), nebo zrušení oficiálního přístupu k ovladači po určitém čase…

Kritika padla tedy například na projekt OLPC (za podepsání NDA kvůli bezdrátové kartě Marvell 88W8388), Free Linux Driver Development – pokus o vytváření ovladačů při podepsání NDA nebo nedávno na FreeBSD. Projekt podepsal smlouvu s Intelem o distribuci firmware k bezdrátovým kartám. Licence firmware totiž znemožňuje distribuci se systémem, a tak bohužel nemůžete využít tyto zařízení ihned během instalace. FreeBSD byl již dříve kritizován za akceptování uzavřených binárních ovladačů. Adaptoval například NDIS, známý též jako Project Evil, který umožňuje využít ovladače z Windows nebo různé binární ovladače k RAID řadičům. Tato kritika byla mimo jiné jedním z důvodů, proč mě OpenBSD kdysi zaujalo.

Jsou zde i pozitivní výsledky OpenBSD aktivit na poli požadování dokumentace k hardware. V nedávné době se do -current větve dostal nový ovladač tht(4) k 10Gb ethernetových kartám od firmy Tehuti Networks Ltd. Firma nejdříve nabídla spolupráci s podmínkou podepsání NDA, ale po vysvětlení důvodu, proc musí OpenBSD projekt nabídku odmítnout, se firma rozhodla změnit postoj a otevřela dokumentaci, změnila licenční politiku k distribuci firmware a bezplatně poskytla projektu několik karet. Samotné karty dle příspěvku na Undeadly.org jsou v porovnání s jinými výrobci jednoduché a mají čistý design. Poučí se z této situace vývojáři jiných systémů?

Nově podporovaný hardware

I přes všechny strasti s vývojem ovladačů pro OpenBSD verze 4.1 přinese rozšiřující se řadu podporovaného hardware. Nově je podporována platforma OpenBSD/landisk – Hitachi/Renesas SH-4 CPU embedded zařízení, ktere vyrábí firma Plextor. Byla vylepšena podpora UltraSPARCIII, byly překonány škaredé hacky se zákazem L1 cache v CPU, a tak nyní tato platforma běží rychleji. Rovněž se blýská na testování OpenBSD na UltraSPARC-IV.

Byla rozšířena sada podporovaných síťových (ethernet, 802.11a/b/g i fibre) karet (například cas(4)  – Sun Cassini, které jsou právě přítomny na zmíněných UltraSPARCIII nebo vic(4)  – Vmware VMXnet – pro akcelerované virtuální síťové rozhraní nacházející se v instalacích virtuálních mašin.

Novinky v software

Samozřejmě to nejzajímavější u OpenBSD 4.1 je softwarová část, přesněji síťové služby. Minulá verze 4.0 inovovala a zjednodušila nastaveni IPSec. Tématem vylepšení u 4.1 by se dalo nazvat – redundance a load-balancing.

Nová verze oficiálně představila hoststated(8)  – host status daemon. hoststated vám s pomocí OpenBSD PF umožní vytvořit load-balancing relay či application layer proxy (vrstva 3 a vrstva 7 modelu OSI), vše s podporou SSL. Možnosti nasazení mohou být různé. S hoststated  tedy můžete například jednoduše vytvořit SSL akcelerátor pro web servery, podporující přidávání/změnu HTTP hlaviček, GET proměnných a uchování session ID.

Styl konfiguračních souborů pro hoststated(8) je opět velmi podobný jiným daemonům v OpenBSD. Můžete používat makra, tabulky atd. Následující část byla převzata z hoststated.con­f(5) a ukazuje nastavení pro SSL load-balancing s více webservery.

# macros
www1=front-www1.private.example.com
www2=front-www2.private.example.com
www3=front-www3.private.example.com
www4=front-www4.private.example.com

# global configuration for hoststated(8)
interval 5

# table
# definujeme i zakladni testovani dostupnosti
# urciteho webserveru
table phphosts {
    timeout 300
    real port 8080
    check http "/" digest 630aa3c2f...
    host $www1
    host $www2
    host $www3
    host $www4
}

# protocol settings
# vkladani HTTP hlavicek
protocol http_ssl {
    protocol http
    header append "$REMOTE_ADDR" to "X-Forwarded-For"
    header append "$SERVER_ADDR:$SERVER_PORT" to "X-Forwarded-By"
    header change "Keep-Alive" to "$TIMEOUT"
    url hash "sessid"
    cookie hash "sessid"
    path filter "*command=*" from "/cgi-bin/index.cgi"
    ssl { sslv2, ciphers "MEDIUM:HIGH" }
}

# relay/layer 7 proxy settings
# definujeme, ktere pozadavky hoststated obsluhuje
# a tabulku cilovych stroju
relay sslaccel {
    listen on www.example.com port 443 ssl
    protocol http_ssl
    table phphosts loadbalance
} 

Možnosti jsou opravdu zajímavé. Můžete přidat další stroj a celou sestavu obohatit o carp a pfsync a máte fail-over i tuto SSL relay. Další možností může být relaying IPv6 HTTP provozu na webový server Apache 1.3.x v základu OpenBSD. Ten totiž neobsahuje podporu IPv6, protože dostupné patche narušuji API modul.

Hoststated je sice nový daemon, jak ale psal Reyk Floeter (pracující pro Vantronix využívající OpenBSD ve svých produktech) na Undeadly.org, už je pro něj vymyšleno mnoho dalších vylepšení. Po vydání 4.1 se připravuje lepší podpora carp(4), white/blacklisting, preinspection – no hoststated není pouhý load-balancer, ale stává se z něj pořádně výkonný relay pro různé protokoly,a možná časem i nějaká služba monitorující síťové služby, protože již teď má zajímavé možnosti detekce jejich stavu.

Mezi další sítové novinky patří ripd(8)  – v rámci projektu OpenBSD napsaný nový RIP – smerovací daemon pod BSD licencí. Vlastní služba pro hraniční směrovací protokol BGP – OpenBGPD má nyní CGI rozhraní bgplg(8) a shell bgplgsh(8) (ukazka).

Verze 4.1 bude sice ještě obsahovat opatchovanou verzi X.Org 6.9.0, ale v rámci přechodu na modulární X.Org byly z X.Org odstraněny veškeré závislosti na autotools a GNU pkg-config. Tento proces byl nazván Xenocara. OpenBSD vytvořilo náhradu pkg-config se stejným názvem napsanou v Perlu a distribuovanou pod BSD licencí. Modulární X.Org bychom měli vidět ve verzi 4.2.

OpenBSD PF nyní obsahuje časově omezené tabulky, výhodné v kombinaci se spamd(8), a podporu více pflog zařízení.

Jestliže byste chtěli použít fail-over anti-spam cluster, spamd nyní podporuje synchronizaci greylist databází mezi nody.

Protože (zatím?) carp nepodporuje režim bridge(4), dá se využít pro potřeby fail-over na layer 2 (např. firewallová bridge fail-over sestava) kombinace s managovatelnými přepínači podporující 802.1D-2004 STP a nyní i rychlejší RSTP.

Schéma

Software z portů

A jak je na tom software instalovaný z portů? Přesněji z předpřipravených balíčků? OpenBSD totiž jako správný postup doporučuje instalaci z balíčků, neexistující balíčky k určitému portu jsou následkem restriktivní licence. Jestliže 4.0 uvedla po těžkém opravování port OpenOffice.org, tak ve verzi 4.1 je již k dispozici balíček na serverech.

CS24_early

Dále tam najdete gstreamer-0.10, KDE 3.5.6, na portaci novějšího GNOME se pracuje, Firefox 2.0.0.2, PostgreSQL 8.2.3, port pro Apache 2.x (stále se doporučuje opatchovaný/chro­otovaný Apache 1.3 – bohužel bez podpory IPv6), fedora_base – knihovny pro compat_linux(8) (emulaci Linux API) – nahrazující zastaralé postavené na RedHat, a mnoho dalších nových balíčků.

Závěrem

OpenBSD 4.1 možná nepřináší tak marketingově zajímavé novinky, ale i tak můžeme být velmi potěšeni. OpenBSD jde stále svou cestou a myslím, že je to cesta vynikající – striktní politika, licence, zaměření na bezpečnost a redundance… Jestliže již OpenBSD používáte, můžete si být jisti, že systém stále žije a vyvíjí se – nezapomeňte na dotaci, ta může podpořit práci třeba na podpoře CARP pro bridge režim, podpora IPv6 u OSPFD, vylepšení hoststated nebo více balíčků pro Apache 2.x. Ještě se stále rozmýšlíte, jaký systém nasadit na síti? “Cože? Vy jste ještě nenainstalovali OpenBSD?”

Byl pro vás článek přínosný?