Archive for November, 2008

Recentemente precisei colocar um grupo de servidores em alta disponibilidade (High availability) e resolvi usar um recurso conhecido como “bond”.

Fácil de implementar, tudo que você irá precisar são 2 placas de rede, 2 cabos de rede, sendo cada um destes conectado a 1 switch. Dessa forma, um dos switch’s ficando indisponível, conseguiremos manter o Servidor atendendo à demanda.

Vamos as configurações:

Precisamos manter as configurações das 2 interfaces de rede sem IP’s. Isso acontece, porque o bond vai assumir as duas placas de rede ele pode balancear a carga de dados entre elas, a opção default do bond, ou no caso, fazer a soma dos links, ou seja, se tivermos cada interface trabalhando a 1Gb o “throughput” do link será de 2Gb. 8)

Abaixo a conf de cada eth:

/etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=”seu MAC ADDRESS”
IPV6ADDR=
IPV6PREFIX=
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

/etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corporation 82571EB Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=none
HWADDR=”seu MAC ADDRESS”
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Além da configuração das 2 eth’s, precisamos criar um arquivo com as configurações do bond.
Iremos chamá-lo de /etc/sysconfig/network-scripts/ifcfg-bond0 e seu conteúdo será:

#bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.10.4.0
NETMASK=255.255.255.0
IPADDR=10.10.4.1
USERCTL=no

Agora, para subirmos a interface de bond, precisamos setar algumas variáveis no arquivo /etc/modprobe.conf

alias bond0 bonding
options bonding max_bonds=1 mode=0 miimon=100

- A primeira linha, irá criar um alias para a interface virtual bond0 baseado nas informações contidas no arquivo /etc/sysconfig/network-scripts/ifcfg-bond0.
- A segunda linha diz max_bonds=1 para termos um bond no servidor e mode=0 onde os links onde os links trabalharão em balanceamento roudrobin. Caso queira aumentar somar o link, esse valor deverá ser alterado.

Caso seu servidor precise mais de um bond (4 ou mais placas de rede), você precisará aumentar o valor da variável max_bonds para o numero de bonds necessários.

Pronto! As configurações estão feitas, apenas reinicie a rede e você acaba de ter um servidor rodando com alta disponibilidade dos links de rede.

Você pode testar o balanceamento olhando o arquivo /proc/net/bonding/bond0. Rode o comando abaixo e tire um dos cabos. Em tempo real ele lhe informará se o link está down ou up de cada interface agregada ao bond

Para mais informações, consulte:
/usr/share/doc/iputils-20020927/README.bonding

By meu camarada Ingo Schult

É facinho substituir o Apache pelo IIS… basicamente eh isso aqui:

dar um grep no src/* do apache procurando por algum define tipo:

#define SERVER_VERSION Apache/2.x.y

substituir pra:

#define SERVER_VERSION Microsoft-IIS/6.0

Recompilar o código e boa, ai eh só testar:

$ telnet supersite.com.br 80
HEAD / HTTP/1.0 (enter, enter)

HTTP/1.1 200 OK

Server: Microsoft-IIS/6.0

Pronto.

:D