Programas Livres para a Alta Disponibilidade em Servidores
HugoHugoRogerRogerCleberCleber
ClauzioClauzio
Serviços em Redes de ComputadoresServiços em Redes de ComputadoresProfº João Eriberto Mota FilhoProfº João Eriberto Mota Filho
Agenda● Alta disponibilidadeAlta disponibilidade
– conceito
– calculo/medida da disponibilidade
– classificação
– ambiente HA
● ProgramasProgramas
– heartbeat
– drbd
– mon
– hapm
● ConclusãoConclusão
Conceito
● HAHA não é apenas um produto ou não é apenas um produto ou aplicaçãoaplicação
● HAHA é uma característica de sistema é uma característica de sistema computacionalcomputacional
““A disponibilidade de um sistema A disponibilidade de um sistema computacional, indicada por A(t), é a computacional, indicada por A(t), é a probabilidade de que este sistema probabilidade de que este sistema esteja funcionando e pronto para uso esteja funcionando e pronto para uso em um dado instante t.”em um dado instante t.”
Calculo da disponibilidade
● VariáveisVariáveis– MTTF (Tempo médio até apresentar falha)– MTTR (Tempo médio de reparo)
A=MTTF
MTTFMTTR
medida da disponibilidade
Classificação
● A disponibilidade de um sistema A disponibilidade de um sistema computacional pode ser dividida em computacional pode ser dividida em três classes:três classes:– Disponibilidade básica
● 99%
– Alta disponibilidade● 99,9%; 99,99%; 99,999%...
– Disponibilidade contínua● 1
Ambiente HA
● HardwareHardware: redundância de máquinas, : redundância de máquinas, linkslinks, conexão dedicada e de alta , conexão dedicada e de alta velocidadevelocidade
● Espelhamento de dados: dados Espelhamento de dados: dados espelhados em tempo realespelhados em tempo real
● Controle de serviços: o sistema deve ser Controle de serviços: o sistema deve ser autônomo e capaz de reconfigurar-seautônomo e capaz de reconfigurar-se
● Monitoração: o sistema deve monitorar Monitoração: o sistema deve monitorar seus serviços e disparar uma seus serviços e disparar uma reconfiguração em caso de defeitosreconfiguração em caso de defeitos
HeartBeat (Linux - HA)HeartBeat (Linux - HA)
HeartBeat
● O HeartbeatHeartbeat é um dos componentes do projeto Linux-HA (High-Availability Linux);
● Roda nas plataformas Linux, FreeBSD e Solaris;
● DetectaDetecta a morte de um 'host' e gerênciagerência cluster.
HeartBeat
● Cluster: Alta Disponibilidade;Cluster: Alta Disponibilidade;
● Cluster: Balanceamento de Carga;Cluster: Balanceamento de Carga;
● Cluster: Alta Performance;Cluster: Alta Performance;
HeartBeat
● Segmentos UDPSegmentos UDP são enviados regulamente entre os hosts;
● Se o segmento não for recebido;● Será detectadodetectado que um host está com
problema;● E é tomada uma ação;
HeartBeat
● Quando o serviço HeartBeat é iniciado em um host uma Interface VirtualInterface Virtual sobe;
● Essa Interface Virtual será acessada pelos clientesclientes;
● Se esse host falhar, então será detectadodetectado e a interface do outro host subirá como o mesmo IP;
● Um ARP gratuitoARP gratuito é enviado para todas máquinas;
HeartBeat
HeartBeat
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11
HeartBeat
HeartBeat
IP VirtualIP Virtual10.0.0.2010.0.0.20
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11
HeartBeat
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11UDPUDP
IP VirtualIP Virtual10.0.0.2010.0.0.20
HeartBeat
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11UDPUDP
IP VirtualIP Virtual10.0.0.2010.0.0.20
HeartBeat
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11UDPUDP
IP VirtualIP Virtual10.0.0.2010.0.0.20
HeartBeat
● Problema:Problema: o MAC está amarrado no SWITCHSWITCH e na Tabela ARPTabela ARP das Máquinas;
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11UDPUDP
IP VirtualIP Virtual10.0.0.2010.0.0.20
HeartBeat
● Solução:Solução: ARP gratuito;
HeartBeat
Master Slave
10.0.0.1010.0.0.10 10.0.0.1110.0.0.11ARPARP
IP VirtualIP Virtual10.0.0.2010.0.0.20
HeartBeat
● Tráfego UDP entre o MASTERMASTER e o SLAVESLAVE:
HeartBeat
● Interface Virtual na MASTERMASTER:
HeartBeat
● Interface virtual no SLAVESLAVE quando o MASTER foi desligado:
HeartBeat - Teste
HeartBeat - Teste
● --> Na MASTER
[Distributed Replicated Block Device]
DRBD
● Desenvolvido por Philipp Reisner (2000)● Versão atual 8.x● Replicação de discos entre 2 nós, através
da rede
DRBD
DRBD
● Trabalha com journaling file system (ext3, XFS, JFS, etc...)
● Possui 3 protocolos de integridade dados
● Master/Slave, somente um sistema pode lêr/escrever em um determinado tempo
● Quando o servidor master falha o servidor slave assume
● Possui mecanismo de “resync” inteligente
● Necessário integração com Heartbeat
DRBD
DRBD
● Instalação
tar -zxvf drbd-8.0.4.tar.gz
cd drbd-0.8.0.4/drbd
make clean all; make; make install
● Configuração
carrega módulo no kernel (modprobe drbd)
cria dispositivo drbd (mknod /dev/drbd0 b 147; mkfs.ext3 /dev/drbd0)
configura drbd.conf e inicia o serviço (init.d/drbd start)
configura servidor drbd primario no master (drbdadmin primary all)
sincroniza discos (drbdadmin –overwrite-data-of-peer primary all)
monta disco no servidor master (mount -t ext3 /dev/drbd0 /ha_backup)
DRBD# drbd.conf (deve ser copiado nos 2 servidores)
resource drbd0 { #primeiro espelhamento protocol=C #protocolo usado (A-B-C) fsck-cmd=fsck.ext2 -p -y #se necessário
disk { #dados do disco do-panic #se erro, um kernel panic para maquina disk-size=4096543 #se discos não iguais }
on server1 { #primeiro nodo device=/dev/drbd0 #dispositivo de drbd disk=/dev/hda3 #dispositivo de bloco address=192.168.1.2:7789 # endereço IP/porta }
on server2 { #primeiro nodo device=/dev/drbd0 #dispositivo de drbd disk=/dev/hda3 #dispositivo de bloco address=192.168.1.3:7789 #endereço IP/porta }
DRBD# haresources (arquivo de configuração do heartbeat)
server1 192.168.1.4 drbddisk Filesystem::/dev/drbd0::/ha_backup::ext3 servicos
onde:
server1 #servidor master 192.168.1.4 #ip virtual drbddisk #torna o dispositivo como primário Filesystem::/dev/drbd0::/ha_backup::ext3 #monta file system servicos #inicia em ordem os servicos que utilizam o file system
Service Monitoring Daemon
MON - ?● É uma ferramenta para monitorar a
disponibilidade dos serviços e enviar alertas,
● Desenvolvido e mantido por Jim Trocki(Unisys)
● GNU GLP,
● Simples, contudo muito adaptável aos projetos,
● Simples de adicionar alertas e monitores,
● Quando um alerta é dado, os dados são recolhidos para a da geração de relatório de uso geral,
● Propósito Geral: se você pode testar com software, você pode monitorá-lo.
MON - Características● Portátil (escrito em Perl),
● Linux, Solaris, Cygwin (Windows),
● Pode monitorar vários servidores,
● Configurável, extensível, integra com outros sistemas,
● Os arquivos de configuração são feitos de acordo com as outras ferramentas que irá intergrar.
MON – Váriosmonitores
● http, lpd, smtp, ldap, imap, pop3, telnet, dns,
● Msql, mysql, oracle, postgres, informix, sybase
● reboot, processes, rpc, clock, espaço em disco,
● traceroutes, router ,● interfaces, ipsec tunnels, ● NT services, samba, printers.
MON – Váriosmonitores
MON – Componentes
● Servidor● Clientes● Monitores● Trap● Alertas
MON - Funções
● Servidor- Programação e execução dos monitores(quando necessário),gerência alertas(envia alertas durante períodos específicos), logs, aceita traps remotos,
● Clientes- Pergunta e controla o servidor, mostrar relatórios
MON - Funções● Monitores
- Testa a condição de um serviço- Os testes são definidos pelos usuários,- Possibilita teste em nível de aplicação,- Comunica com os sistemas monitorados através do HTTP, do SNMP, etc.
● Trap- Emiti notificações para o servidor mon ou para outras entidades externas,
MON - Funções● Alertas
- Executar ações em casos de falhas, em servidor de pagina, de email, na ação corretiva (HA fail-over), etc.- Chama processos separadamente,- Simples de escrever,
MON - Configuração● cfbasedir = /etc/ha.d/mon/etc
alertdir = /usr/lib/mon/alert.dmondir = /usr/lib/mon/mon.dmaxprocs = 20 historicfile = /var/log/mon.loghostgroup servers 10.5.12.254 10.5.12.253
● watch serversservice ping interval 1mmonitor fping.monitor -aperiod wd {Mon-Fri}alert mail.alert root@localhost
MON - Comandos
● mon - monitorar os serviços para a disponibilidade, emitindo alarmes em cima das falhas.
● moncmd - emitir comandos ao daemon do mon e mostrar os resultados.
● monshow - mostrar o status operacional do usuário do mon.
[High Availability Port Monitor]
HAPM
● Desenvolvido por Alexandre Antônio, João Eriberto e Rosemeri Dantas
● Verifica status de portas TCP/UDP (nó Master)
● Trabalha com o daemon Heartbeat
HAPM
# hapm.conf
socket=127.0.0.1:25 # ip e porta do serviço a ser monitoradosocket=10.0.0.1:80socket=10.0.0.1:22 time=1 # intervalo entre as checagensheartbeat=/etc/init.d/heartbeat # daemon do heartbeat
CONCLUSÃO
Como pôde ser visto neste trabalho é possível ter um sistema de alta disponibilidade baseado em ferramentas open-source, sem
gastar muito dinheiro no quesito software.
Um fator muito importante que se deve levar em consideração durante a implantação de um servidor de alta disponibilidade é
justamente o custo x beneficio,
quando maior o grau de disponibilidade maior será o recurso financeiro necessário para implementação de tal.
Referências Bibliográficas
● http://www.linux-ha.org
● http://hapm.sourceforge.net/
● http://www.ultramonkey.org
● http://www.pruonckk.org/wiki/index.php/Alta_Disponibilidade_Howto
● http://ha.linuxchix.org.br/drbd.html
● http://www.drbd.org/
● http://mon.wiki.kernel.org/index.php/Main_Page
EXTRAS – Arquivos de Configuração máq. MASTER (HeartBeat)
EXTRAS – Arquivos de Configuração máq. SLAVE (HeartBeat)