Estes tipos de cluster são utilizados para base de dados de missões críticas, correio, servidores de arquivos, aplicações web, e uma série de outros serviços.
Resumo
Para quem tem uma grande quantidade de acessos e roda aplicações que são essências, que não podem ter a produção afetada por uma queda, mesmo que temporariamente, bom, ai vai um exemplo de como montar um cluster de servidores web usando o recurso do LVS (Linux Virtual Server).
Topologia
Teremos a seguinte topologia em nosso exemplo, na qual iremos nos basear para efetuarmos a configuração logo abaixo.
Iremos usar o modo DR do LVS (Direct Routing)
Servidor real (Servidor onde está instalado o software de gerenciamento das conexões)
Nosso servidor real, ou seja, nosso front-end terá dois ips:
IP REAL (eth0) = 10.0.20.10/24
IP VIRTUAL (eth0:1)= 10.0.20.20/32
Os servidores que fazem parte do cluster, irão possuir o mesmo endereço ip, que no caso nós chamamos de IP VIRTUAL.
Servidor web 01
IP REAL (eth0) = 10.0.20.11/24
IP VIRTUAL (l0:1) = 10.0.20.20/32
Servidor web 02
IP REAL (eth0) = 10.0.20.12/24
IP VIRTUAL (l0:1) = 10.0.20.20/32
Servidor web 03
IP REAL (eth0) = 10.0.20.13/24
IP VIRTUAL (l0:1) = 10.0.20.20/32
Pré-requisitos
Distribuição: CentOS 4.x ou CentOS 5.x
Pacotes: ipvsadm, piranha
O pacote ipvsadm é responsável pela administração da distribuição das conexões aos servidores.
O pacote piranha é apenas a interface (GUI) de administração, é nela que iremos configurar os servidores que fazem parte do cluster, qual tipo, e outras mais...
Instalação
[root@centos ]# yum install ipvsadm piranha
Após instalados os pacotes acima, vamos definir uma senha de acesso a interface de administração do piranha usando o comando abaixo:
[root@centos ]# piranha-passwd
Após termos definidos uma senha para o usuário piranha, vamos iniciar o serviço usando o seguinte comando:
[root@centos ]# service piranha-gui start
[root@centos ]# chkconfig piranha on
Depois de termos inicializado o serviço vamos abrir a interface de administração:
http://meuservidor.com.br:3636


Após efetuarmos o login, será mostrado a tela de controle e monitoramento (CONTROL/MONITORING)

Primary server public IP: 10.0.20.10 (IP REAL)
Primary Server private IP: deixe em branco
Use network type: direct

Na aba REDUNDANCY só é necessária quando utilizamos um servidor secundário para alta disponibilidade, não sendo necessário neste caso.
Vamos então a aba VIRTUAL SERVERS

Nesta aba criaremos o host virtual, responsável pelo encaminhamento das solicitações. Para criarmos um servidor virtual, clique em ADD, depois selecione o novo servidor e clique em EDIT. Será exibida a tela abaixo onde em VIRTUAL SERVER devemos entrar com as seguintes informações:
Name: Nome do servidor virtual
Application port: Endereço do serviço onde está rodando sua aplicação
Virtual Network Mask: Máscara de rede da rede virtual, que no caso é de 32bits (255.255.255.255).
Firewall Mark: Não aplicável.
Device: O nome do dispositivo que será criado na interface virtual.
Re-entry Timeout: Intervalo de verificações, no caso de uso do HEARTHBEAT, não aplicável no nosso caso.
Service Timeout: Define o intervalo de tempo em que o servidor será considerado como DEAD, retirando o mesmo do Cluster.
Quiesce Server: Habilita a limpeza automática das das tabelas de roteamento caso um host anteriormente considerado como DEAD retorna ao status de ativo.
Load monitoring tool: Usado para monitorar os status dos hosts em caso de uso com o HEARTHBEAT. Não aplicável.
Scheduling: É o algoritmo que será utilizado para decidir como será efetuado o balanceamento das conexões entre os REAL SERVERS. Neste caso utilizamos o tipo Weighted least-connections, ele irá enviar as conexões para os serviços que possuírem o menor numero de conexões ATIVAS.


Name: nome do servidor REAL
Address: IP do servidor REAL
Weight: Prioridade usada pelo algoritmo de balanceamento.


Após realizar toda configuração indicada acima, vamos iniciar o serviço pulse, responsável pelo gerenciamento do cluster.
[root@centos ]# service pulse start
[root@centos ]# chkconfig pulse on
8 comentários:
Ola Marcos... parabéns pelo artigo. Eu queria saber se tem como funciona o ipvs para configurar sem o modo grafico.
Olá Ueider, tem sim!
você pode fazer toda a configuração do ipvs pelo arquivo de configuração do lvs.conf
Não consegui fazer essa configuração pelo lvs.conf. Eu instalei o heardbeat e o ldirectord, e fiz as configurações no ldirectord.ha. Coloquei lá o ip e porta das máquinas que eu estou direcionando.
Ueider,
não cheguei a utilizar o heardbeat e nem o ldirectord. Recomendo que você siga o tutorial ou me explique melhor o que você deseja fazer para eu poder te ajudar.
Na verdade Marcos, eu quero criar um balanceamento para 2 servidores web, sem utilizar interface gráfica. Estou utilizando o heardbeat para atualizar as info de um web para outro, e o ldrirectord para fazer o load balancer. Não sei se tem um modo mais fácil ... mas encontrei tutoriais parecidos ...
Ueider,
no meu caso, estou usando um servidor de frontend com o lvs instalado, esse servidor faz a distribuição das conexões httpd de formal igual para os servidores http que tem atras dele. Todos os servidores web tem a mesma configuração e mesmos dados. O heardbeat só é usado em caso de contingência, no caso se seu servidor lvs parar você deve ter outro de backup para assumir as conexões.
Marcos, muito bom seu post! Talvez me ajude muito, preciso criar um cluster para balancear httpd, squid, iptables, samba... tenho mais outro servidor com oracle e outro SAN para dos dados
node1 (master)
node2 (node)
node3 (node)
oracle
san 1TB
também com uma rede privada para os servers.
seria uma estrutura correta?
Rafael
SP
Ola como vc configurou sua interfase de loopback
IP VIRTUAL (l0:1) = 10.0.20.20/32
Vc. poderia colocar um exemplo de uma delas
Postar um comentário