Sunday, January 6, 2013

Fazer bond ou team de 2 ou mais placas de Rede

Sistema Operativo: CentOS 6.3

No caso específico decidi adicionar 2 placas de rede extra ao servidor DNS no meu ambiente de virtualização, ficando assim com 3 placas de rede controladas por uma outra virtual chamada bond0 e a ideia era tê-las em balanceamento de carga para alto desempenho. Isto significa que 3 placas recebem e enviam dados como se de uma se tratasse.

Primeiro passo foi verificar se as placas foram realmente adicionadas e correctamente detectadas pelo sistema(após um reboot) com um simples ifconfig:


[root@dns1 rules.d]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:77
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febf:a677/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:183 errors:0 dropped:0 overruns:0 frame:0
          TX packets:145 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:22215 (21.6 KiB)  TX bytes:18011 (17.5 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:81
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:8B
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Felizmente as 3 placas foram apresentadas ao sistema, sendo que a eth0 já estava anteriormente presente, daí a configuração a si associada. Foram adicionadas a eth1 e eth2.

Depois criei os ficheiros network-script das duas novas placas em /etc/sysconfig/network-scripts, aproveitando a oportunidade para configurar já as duas novas placas como membros desse bond (configurações a vermelho) e já agora, os endereços físicos (MAC) podem ser vistos através do comando acima (o ifconfig):


DEVICE="eth1"

HWADDR="00:0C:29:BF:A6:81"
NM_CONTROLLED="yes"
ONBOOT="yes"
MASTER=bond0
SLAVE="yes"

DEVICE="eth2"
HWADDR="00:0C:29:BF:A6:8B"
NM_CONTROLLED="yes"
ONBOOT="yes"
MASTER=bond0
SLAVE="yes"

Mudei também a configuração da placa eth0 removendo as linhas que dizem respeito às configurações de rede pois essas passarão para o bond e deixarão de estar em alguma das placas de rede.


DEVICE="eth0"
HWADDR="00:0C:29:BF:A6:77"
NM_CONTROLLED="yes"
ONBOOT="yes"
MASTER=bond0
SLAVE="yes"

Finalmente configurei/criei o tal ficheiro que diz respeito ao grupo das placas com o nome ifcfg-bond0 em /etc/sysconfig/network-scripts também:

DEVICE=bond0

IPADDR=192.168.100.10
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
GATEWAY=192.168.100.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no


Atenção que este nome pode ser mudado e usado à medida, podia chamar-se grupo0, team1, placas ou até aslkjc... desde que este nome seja/fosse referenciado correctamente no ficheiro de configuração modprobe que diz respeito ao módulo de bonding em /etc/modprobe.d que deverá ser criado com o nome de bonding.conf - até poderá ser outro se quiserem mas EU acho sempre melhor manter os standards - e com o seguinte conteúdo:

alias bond0 bonding
options bond0 mode=6 miimon=100

de seguida o módulo tem de ser carregado para o kernel da seguinte forma:

modprobe bonding

finalmente, deve também ser reiniciado o serviço de rede:

service network restart

para confirmar que está tudo a funcionar podem e devem ser usados os seguintes dois comandos com os respectivos resultados esperados:

[root@dns1 modprobe.d]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:77
          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febf:a677/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:5742 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2613 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:671700 (655.9 KiB)  TX bytes:373720 (364.9 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:77
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:4823 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2186 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:523052 (510.7 KiB)  TX bytes:300777 (293.7 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:77
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:459 errors:0 dropped:0 overruns:0 frame:0
          TX packets:214 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:74303 (72.5 KiB)  TX bytes:38963 (38.0 KiB)

eth2      Link encap:Ethernet  HWaddr 00:0C:29:BF:A6:77
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:460 errors:0 dropped:0 overruns:0 frame:0
          TX packets:213 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:74345 (72.6 KiB)  TX bytes:33980 (33.1 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:374 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:206019 (201.1 KiB)  TX bytes:206019 (201.1 KiB)

[root@dns1 modprobe.d]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:bf:a6:77
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:bf:a6:81
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:bf:a6:8b
Slave queue ID: 0



No comments:

Post a Comment