Požadavek na připojení serveru do sítě pomocí dvou síťových karet kvůli zabezpečení proti výpadku trasy připojení je běžný a v případě řešení HA clusteru i nevyhnutelný. V Linuxu je možné zdvojené připojení řešit velmi snadno pomocí tzv. bondingu. Skutečná síťová rozhraní se spojí do jednoho virtuálního přes které poté probíhá veškerá komunikace.
V případě výpadku jednoho ze skutečných fyzických rozhraní bonding tento výpadek odstíní a přesměruje komunikaci přes fungující rozhraní. Proto je vhodné podobné zapojení použít například pro propojení dvou serverů u DRDB (mirror disků přes síť) nebo u replikace MySQL a podobných aplikací.
Dnes používané distribuce jsou na bonding připravené – v jádře je třeba podpora (modul bonding) a nainstalovaný program ifenslave. Popis, který zde uvedu je platný pro RedHat a Fedoru. Samozřejmě lze spojit více rozhraní i v jiných distribucích, ale konfigurace se může mírně lišit. V počítači mám víc síťových karet, ale použiji pouze dvě. Je vhodné vybrat porty na různých kartách – například kartu integrovanou na desce a druhou přidanou do pci-e slotu. Pro konfiguraci použiji síťová rozhraní eth0 a eth1, vytvořím virtuální rozhraní bond0, které dostane IP adresu 172.16.100.10.
Bonding v Linuxu může pracovat ve více režimech, podrobnější popis je možné najít v dokumentaci u jádra nebo například na webu http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s2-modules-bonding.html.
.
V souboru /etc/modprobe.conf si určím jaký modul pro které zařízení použít:
alias eth0 e1000e alias eth1 e1000e alias eth2 e1000e alias eth3 e1000e alias bond0 bonding
Soubor /etc/sysconfig/network-scripts/ifcfg-eth1:
DEVICE=eth1 ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes BOOTPROTO=none HWADDR=00:23:8b:cc:bb:aa
Soubor /etc/sysconfig/network-scripts/ifcfg-eth2:
DEVICE=eth2 ONBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes BOOTPROTO=none HWADDR=00:23:8b:ac:ab:ee
Soubor /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0 IPADDR=172.16.100.10 NETMASK=255.255.255.0 NETWORK=172.16.100.0 BROADCAST=172.16.100.255 ONBOOT=yes BOOTPROTO=none USERCTL=no
Po nakonfigurování stačí spustit příkaz ifup bond0 a je hotovo. Konfiguraci a nahození rozhraní je samozřejmě nutné provést na obou serverech.
Výsledek po provedení konfigurace by měl být přibližně následující:
[root@clemenza network-scripts]# for i in eth1 eth2 bond0; do ip l show $i; done 5: eth1:mtu 1500 qdisc pfifo_fast master bond0 qlen 1000 link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff 2: eth2: mtu 1500 qdisc pfifo_fast master bond0 qlen 1000 link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff 7: bond0: mtu 1500 qdisc noqueue link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff [root@clemenza network-scripts]# for i in eth1 eth2 bond0; do ip a show $i; done 5: eth1:mtu 1500 qdisc pfifo_fast master bond0 qlen 1000 link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff 2: eth2: mtu 1500 qdisc pfifo_fast master bond0 qlen 1000 link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff 7: bond0: mtu 1500 qdisc noqueue link/ether 00:23:8b:64:da:0b brd ff:ff:ff:ff:ff:ff inet 172.16.100.10/24 brd 172.16.100.255 scope global bond0 inet6 fe80::223:8bff:fe64:da0b/64 scope link valid_lft forever preferred_lft forever
No related posts.