Busca


imprimir pdf

Filer + Cluster (vários servidores)


Preâmbulo


Dispõe dum espaço disco seguro (RAID) sobre um servidor de armazenamento (filer). Partilha este espaço entre vários servidores dedicados (via NFS). A OVH atribuiu-lhe um novo endereço IP (IP do balanceamento de carga, balanced IP). Finalmente, a OVH configurou os seus servidores para que eles acedem ao espaço seguro e recebem o tráfego desde o IP de balanceamento de carga.

Como o seu servidor é modificado


Se pretender utilizar directamente o serviço Cluster sem estudar o seu funcionamento detalhado, pode passar a secção Primeiros passos com o seu cluster.

1. Configuração do IP de balanceamento de carga

Para que o servidor aceita os pacotes desde o IP de balanceamento de carga, uma interface de rede virtual é adicionada em lo:0:
lo:0 Link encap:Local Loopback
inet addr:213.251.xxx.xxx Mask:255.255.255.255
UP LOOPBACK RUNNING MTU:16436 Metric:1

O rooteamento também é modificado ao nível do servidor (adição da table 201 no iproute2).

2. Configuração de uma rede privada para o acesso ao filer

O acesso ao filer faz-se via uma rede privada 192.168.xxx.xxx. Cada servidor têm o seu próprio IP privado configurado como eth0:0:
eth0:0 Link encap:Ethernet HWaddr 00:E0:4C:82:32:3F
inet addr:192.168.xxx.xxx Bcast:192.168.xxx.255 Mask:255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:19 Base address:0xc000


3. Montagem da partição segura

O espaço seguro é montado nos seus servidores via NFS em /home/ha. O ficheiro /etc/fstab tem uma nova linha:
192.168.xxx.xxx:/vol0/Z-xxx-xxx /home/ha nfs rw 0 0


4. Instalação da sonda

A fim de garantir o principio de 'alta disponibilidade', o sistema de balanceamento de carga deve saber retirar uma máquina do cluster
quando esta fica indisponível. Para isso, instalamos um deamon sobre cada servidor (OCO) que verifica se o servidor está 'apto' a responder aos pedidos. Por defeito, OCO verifica unicamente se o porto 80 responde aos pedidos HTTP. Pode com facilidade adicionar os scripts que precisa para efectuar verificações mais especificas (verifique que PHP responde correctamente, verificar o FTP, etc.)

Funcionamento de OCO

OCO está instalado em /usr/local/oco, o deamon foi lançando automaticamente no arranque do servidor por /etc/init.d/oco.
Os scripts de verificações estão nos directórios
/usr/local/oco/60sec ou /usr/local/oco/120sec ou
/usr/local/oco/300sec.


Eles são automaticamente executados em função da frequência correspondente ao directório. Cada script escreve um ficheiro no directório /usr/local/oco/result. O conteúdo deste ficheiro é um numero:

  • 200 se está tudo bem.
  • 300 ou mais, se existe um defeito.

É pelo menos preciso um ficheiro contendo 200 no directório /usr/local/oco/result para que o servidor seja adicionado ao cluster. Se um ficheiro ou mais contêm 300 (ou superior a 300), então o servidor é retirado do cluster. Se pelo o menos um ficheiro têm uma data de modificação superior a 15 minutos, então o servidor é retirado do cluster.

Aviso:
Se modificar os scripts de verificação fornecidos com OCO, mude o nome dos scripts porque senão as suas modificações serão eliminadas durante a actualização de OCO.

5. Fluxo redes a autorizar

Se o seu servidor tem um firewall, deverá autorizar os seguintes fluxos sobre o seu servidor :

  • comunicações com o balanceador de carga (OCO): deve autorizar os fluxos desde xx.yy.zz.240 e xx.yy.zz.241 e xx.yy.zz.242 para o porto 79 do seu servidor (xx.yy.zz sendo os 3 primeiros bites do seu IP principal). Por exemplo ;

iptables -A INPUT -s 213.251.164.240 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT
iptables -A INPUT -s 213.251.164.241 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT
iptables -A INPUT -s 213.251.164.242 -i eth0 -p tcp -m tcp --dport 79 -j ACCEPT

  • comunicações com o filer: deve autorizar o tráfego NFS entre o seu servidor e o filer (encontrará o IP do filer no ficheiro /etc/fstab, é do tipo 192.168.1.1). Por exemplo:

iptables -A INPUT -s 192.168.59.2 -i eth0 -j ACCEPT


Primeiros passos com o seu cluster


A primeira coisa que vai querer fazer com o seu cluster é com certeza pedidos HTTP.

1. Utilização do filer

Para que o balanceamento de carga funciona o melhor possível, deve ter as mesmas páginas e os mesmos scripts sobre todos os servidores. Para isso, o melhor é utilizar o espaço de armazenamento remoto que foi montado em /home/ha.
Copie os seus sites em /home/ha/xxxxx, eles estarão então visíveis a partir de cada servidor. Se utiliza os CGI em suexec ou suphp, deve velar que os users e os uid sejam idênticos sobre cada servidor (e eventualmente modificar /etc/passwd).
Finalmente, temos de modificar o ficheiro de configuração apache httpd.conf para indicar os caminhos de acesso correctos (/home/ha/yyyy) nos 'DocumentRoot'.

2. Repartição dos pedidos HTTP

Pegamos, por exemplo, um servidor dedicado cujo IP é 213.186.33.2 e o IP de load-balancing atribuído é 213.251.131.8.
Temos de modificar o ficheiro de configuração apache httpd.conf :

  • adicionar 'NameVirtualHost' 213.251.131.8 debaixo da linha 'NameVirtualHost' 213.186.33.2,
  • modificar os 'VirtualHost' de tal maneira que Apache responde aos pedidos destinados a todos os IP do servidor: para fazer isso, substituir <'VirtualHost' 213.186.33.2> por <'VirtualHost' 213.186.33.2 213.251.131.8>,
  • finalmente, utilizar o IP de load-balancing em vez do IP do servidor na configuração DNS dos seus domínios,por exemplo:

www.omeudominio.com A 213.186.33.2
fica
www.omeudominio.com A 213.251.131.8


3. Testar o balanceamento de carga antes de modificar as entradas DNS e/ou durante a propagação

Sobre o seu posto CLIENTE (browser), pode temporariamente fixar a resolução de um domínio para o IP de load-balancing :

  • se está sob Linux, adicione a seguinte linha ao ficheiro /etc/hosts:

213.251.131.8 www.omeudominio.com

  • sob windows, edite o ficheiro correspondente a sua versão:

Windows 95/98/Me: c:windowshosts
Windows NT/2000/XP Pro: c:winntsystem32driversetchosts
Windows XP Home: c:windowssystem32driversetchosts
e adicione a linha:
213.251.131.8 www.omeudominio.com


Limitações


É tecnicamente possível repartir os pacotes destinados a todos os portos (HTTP:80, SMTP:25, STREAMING, etc). No entanto, é impossível utilizar esta solução para MySQL (e com certeza uma maioria dos softwares de bases de dados). Este limite é intrínseco ao softwares de bases de dados. É preciso utilizar as soluções propostas pelos autores dos softwares.