FreeBSD kézikönyv
Előző | Fejezet 31. Egyéb haladó hálózati témák | Következő

# 31.13. A Közös cím redundancia protokoll (CARP)

Írta: Tom Rhodes.

A Közös cím redundancia protokoll (Common Address Redundancy Protocol, avagy CARP) segítségével több gép képes egyazon IP-címen osztozni. Bizonyos konfigurációkban ez a terhelés elosztására (terhelés-kiegyenlítésre) vagy a rendelkezésre állás növelésére (hibatűrésre) alkalmazható. A benne szereplő gépek akár eltérő IP-címmel is rendelkezhetnek, ahogy azt majd a példában is láthatjuk.

A CARP támogatásának engedélyezéséhez a FreeBSD rendszermagját a következő beállítással kell újrafordítanunk:

    device	carp

A CARP által biztosított lehetőségek ezután már elérhetőek, és számos `sysctl` változón keresztül állíthatóak:

Változó | Leírás
--- | ---
`net.inet.carp.allow` | A beérkező CARP csomagok elfogadása. Alapértelmezés szerint engedélyezett.
`net.inet.carp.preempt` | Ezzel a beállítással az adott gépen az összes CARP felület leáll, ha közülük bármelyik is működésképtelenné válik. Alapértelmezés szerint tiltott.
`net.inet.carp.log` | A `0` értékkel kikapcsoljuk a naplózást. Az `1` értékkel a rossz CARP csomagok naplózását engedélyezzük. Az ettől nagyobb értékek esetén pedig a CARP felületek változásait naplózzuk. Az alapértelmezett értéke az `1`.
`net.inet.carp.arpbalance` | Az ARP protokoll segítségével próbálja meg a helyi hálózati forgalmat mentesíteni a terheléstől. Alapértelmezés szerint tiltott.
`net.inet.carp.suppress_preempt` | Ez a változó írásvédett, és a megszakítás elnyomásának állapotát mutatja. A megszakítás elnyomható, ha a felület egyik linkje nem működik. A `0` érték arra utal, hogy a megszakítást nem nyomták el. Minden probléma növeli ennek a változónak az értékét.

A CARP eszközök maguk az `ifconfig` paranccsal készíthetőek el:

    # ifconfig carp0 create

Egy valós környezetben az ilyen felületeknek egy VHID néven ismert egyedi azonosítóval kell rendelkezniük. Ez a VHID vagy más néven a virtuális gépazonosító (azaz Virtual Host Identification) fogja a gépünket a hálózat többi elemétől megkülönböztetni.

## 31.13.1. A CARP felhasználása a rendelkezésre állás javításában

A CARP használatának egyik módja, ahogy arra már korábban is utaltunk, a szerverek rendelkezésre állásának feljavítása. Ebben a példában három géppel fogunk hibatűrést biztosítani, melyik mindegyike egyedi IP-címmel rendelkezik és ugyanazt a webes tartalmat szolgáltatják. A gépeket egy Round Robin rendszerű (körbejáró) névfeloldással együtt használjuk. A tartalék gépünknek lesz még további két CARP felülete, külön a szerver IP-címeihez tartozó egyes webes tartalmakhoz. Amikor valami meghibásodik, a tartalék szerver átveszi a meghibásodott gép IP-címét. Ilyenkor a hiba teljesen észrevétlen marad a felhasználók számára. A tartalék szerveren a többi szerverrel egyező tartalomnak és szolgáltatásoknak kell megjelennie, hogy bármikor át tudja tőlük venni a forgalmat.

A hálózati neveiktől és a virtuális azonosítóiktól eltekintve a két gépet ugyanúgy kell beállítani. Ebben a példában a gépeket most az `a-gep.minta.org` és `b-gep.minta.org` nevekkel láttuk el. Először is a CARP beállításához el kell helyeznünk a megfelelő hivatkozásokat az `rc.conf` állományban. Az `a-gep.minta.org` esetében az `rc.conf` állomány a következő sorokat tartalmazza:

    hostname="a-gep.minta.org"
    ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0"
    cloned_interfaces="carp0"
    ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24"

Miközben a `b-gep.minta.org` az `rc.conf` állományában ezeket adjuk meg:

    hostname="b-gep.minta.org"
    ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0"
    cloned_interfaces="carp0"
    ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"

> Megjegyzés: Nagyon fontos, hogy az `ifconfig` parancs `pass` paraméterével megadott jelszavak megegyezzenek. A `carp` eszközök csak a megfelelő jelszót birtokló gépeket fogadják el. A virtuális gépazonosítónak azonban minden esetben el kell térnie.

A harmadik, `szolgaltato.minta.org` címmel rendelkező gépet fogjuk felkészíteni az előbbi gépek meghibásodására felkészíteni. Ennek a gépnek két `carp` eszközre lesz szüksége, melyek az egyes gépeket kezelik. Az ehhez illeszkedő sorok valahogy így fognak kinézni az `rc.conf` állományban:

    hostname="szolgaltato.minta.org"
    ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0"
    cloned_interfaces="carp0 carp1"
    ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24"
    ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"

Két `carp` eszköz használatával a `szolgaltato.minta.org` képes észlelni és átvenni bármelyik olyan gép IP-címét, amely nem válaszol.

> Megjegyzés: Az alap FreeBSD rendszermag használata esetén előfordulhat, hogy a megszakítás (a “preemption” opció) engedélyezett. Amennyiben így lenne, a `szolgaltato.minta.org` nem fogja minden esetben fogja rendesen visszaadni az IP-címet az eredeti tulajdonosának. Ilyenkor a rendszergazdának kell ezt manuálisan megtennie. Tehát a következő parancsot kell kiadnia a `szolgaltato.minta.org` gépen:

>     # ifconfig carp0 down && ifconfig carp0 up

> Ezt az adott géphez tartozó `carp` felülettel kell megcsinálni.

Innentől a CARP már teljesen engedélyezhető és készen áll a tesztelésre. A teszteléshez vagy a hálózati rendszert kell újraindítani, vagy a gépeket.

További információkat a carp(4) man oldalán találhatunk.

Előző | Tartalom | Következő
Az Aszinkron adatátviteli mód (ATM) | Fel | Függelék

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.