ORGANIZAÇÃO SETE DE SETEMBRO DE CULTURA E ENSINO LTDA FACULDADE SETE DE SETEMBRO – FASETE CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO Jamilson Ramalho Dantas Cluster de Alta Disponibilidade com Arquitetura HeartBeat, um Projeto Linux-HA para Software Livres Paulo Afonso – BA Dez./ 2009 I Jamilson Ramalho Dantas Cluster de Alta Disponibilidade com Arquitetura HeartBeat, um Projeto Linux-HA para Software Livres Monografia apresentada ao curso de Graduação em Sistemas de Informação da Faculdade Sete de Setembro – FASETE, como pré-requisito para a obtenção do título de Bacharel. Orientador Prof. Antonio Henrique Pereira de Souza. Paulo Afonso – BA Dez./ 2009 II FACULDADE SETE DE SETEMBRO – FASETE. CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO Cluster de Alta Disponibilidade com Arquitetura HeartBeat, um Projeto Linux-HA para Software Livres Monografia apresentada ao curso de Graduação em Sistemas de Informação da Faculdade Sete de Setembro – FASETE. Sob a orientação do Prof. Antonio Henrique Pereira de Souza. BANCA EXAMINADORA _______________________________________________ Prof. Antonio Henrique Pereira de Souza, Especialista (Orientador). _______________________________________________ Profa. Jalyana Mota de Moura, Especialista. _______________________________________________ Prof. Fabiano Amorim Vaz, Mestrando. Paulo Afonso – BA Dez./ 2009 III Dedico este trabalho primeiramente a Deus que sem ele não seria possível a minha existência e muito menos a conclusão desse trabalho, posteriormente a todos que fazem a instituição Sete de Setembro, em especial ao Colégio Sete de Setembro que foi o propulsor dessa minha conquista, e sem a oportunidade que tive não seria possível dar passos longos, como este, em minha vida, e não deixando de dedicar esse trabalho, também, a minha família que esteve ao meu lado sempre, em especial minha namorada, Renata, que me ajudou bastante. IV AGRADECIMENTOS Agradeço a Deus por me dar força e coragem e nunca me abandonar, fazendo com que a conclusão desse trabalho se tornasse mais um desafio vencido em minha vida. Aos meus pais, Cícera Dantas e Oscar Dantas que sempre acreditaram em mim e me deram forças para continuar na luta, bem como meus irmãos, Josmarina, Osman, Jackeline, Osmar e Josmarino que me apoiaram em momentos difíceis fazendo com que não desistisse dos meus sonhos. Agradeço ainda a minha “menina” que esteve e sempre vai estar ao meu lado compreendendo quando estive ausente em momentos em que ela mais precisava. Em especial a minha futura sogra no qual tenho grande admiração e não esquecendo do meu futuro sogro no qual procuro ajudar sempre. Aos colegas de trabalho, Ricardo Moreira, Ricardinho (EMO), Gildo, Edmilson, Dennis e Denise por me apoiar, não esquecendo de meu chefe Carlos André (big boss maior), por fornecer as ferramentas necessárias para elaboração do laboratório de teste além do apoio e incentivo no trabalho proposto. Agradeço também aos meus colegas de classe por estarem sempre comigo em especial a Erick Barros, Aislan Correia, Jaime Batista, Filipe, Edson, Jalyson, Dany, Fernanda, Denise e Danilo. Ao meu orientador Antonio Henrique, por aceitar ser meu orientador e estar sempre presente na hora que precisar. A FASETE pela Bolsa de estudos concedida durante todo o curso, e em especial ao Colégio Sete de Setembro por me acolher e dispor de uma vaga para prestação de meus serviços acreditando em meu potencial a ponto de me colocar na lista de funcionários efetivados neste ano. E por fim aos que não lembrei e me ajudaram na conquista de mais um trabalho realizado. V DANTAS, Jamilson Ramalho. Cluster de Alta Disponibilidade com Arquitetura HeartBeat, um Projeto Linux-HA para Software Livres. 2009. 66f. Monografia. (Bacharelado em Sistemas de Informação). Faculdade Sete de Setembro – FASETE, Paulo Afonso-BA. É inevitável a ocorrência de defeitos ou problemas com equipamentos de informática, principalmente quando se trata de computadores, onde falhas em software, componentes queimados e até mesmo manutenções planejadas prejudicam a disponibilidade de informações da página Web, o que pode gerar a insatisfação dos clientes e até mesmo prejudicar os empreendimentos. Assim, foram desenvolvidas as tecnologias de Alta Disponibilidade para corrigir problemas, deixando os sistemas disponíveis o maior tempo possível. Porém, a maioria dessas soluções é considerada de alto custo, tornando-se, muitas vezes, inviáveis para pequenas empresas. Como alternativa, para realização deste trabalho foi utilizado o heartbeat um projeto Linux-ha que dispõe do serviço a baixo custo podendo ser implementado em organizações de qualquer porte. A proposta da pesquisa foi montar um laboratório que permitiu a instalação e testes de um sistema Web de Alta Disponibilidade onde foi construída uma arquitetura com dois nós mostrando, de forma prática, como uma empresa pode adotar essa medida. Para elaboração de um conhecimento necessário à efetivação da experiência em laboratório foi realizada uma pesquisa bibliográfica, que permitiu a compreensão dos conceitos, procedimentos técnicos e resultados publicados por outros estudiosos. O estudo revelou que esse tipo de tecnologia tem possibilita manter por maior tempo possível a disponibilidade dos serviços prestado, porém para que seja alcançado resultados mais satisfatórios existem ferramentas que acoplados ao heartbeat permite maior confiabilidade e segurança das informações. Palavras Chave: Alta Disponibilidade. Heartbeat. Servidor Web. Projeto LINUX-HA VI DANTAS, Jamilson Ramalho. High Availability Cluster Architecture with HeartBeat, a Linux-HA Project to Free Software. 2009. 66p. Monograph. (Course of Bachelor of Information Systems), Faculdade Sete de Setembro - FASETE, Paulo Afonso-BA. It is inevitable the occurrence of faults and problems with computer equipment, especially when it comes to computers, where flaws in software, components and even burned planned maintenance affect the availability of the website, which can lead to customer dissatisfaction and even undermine the developments. Thus, we developed the high-availability technologies to correct problems, leaving the systems available as long as possible. However, most of these solutions is considered expensive, making it often impractical for small businesses. Alternatively, the study's heartbeat was used a Linux-ha project which provides the service at low cost and can be implemented in organizations of any size. The research proposal was to set up a laboratory that allowed the installation and testing of a web system where highavailability architecture was built with two nodes showing a practical way how a company can adopt this measure. For an elaboration of knowledge necessary to accomplish the experiment in laboratory was conducted a literature search, which led to the understanding of the concepts, technical procedures and results published by other scholars. The study revealed that this type of technology is possible to maintain for as long as possible the availability of services provided, but in order to reach more satisfactory results are tools that bound to the heartbeat allows greater reliability and security of information. Keywords: High Availability. Heartbeat. Web Server. Project Linux-HA VII LISTA DE FIGURAS Figura 1: Disponibilidade Básica ................................................................................... 22 Figura 2: Esquema lógico com o uso de DRBD ............................................................. 23 Figura 3: Disponibilidade Continua ............................................................................... 24 Figura 4: Modelo de 3 universos: falha, erro e defeito ................................................... 25 Figura 5: Ponto crítico de falha ...................................................................................... 29 Figura 6: Computador convencional .............................................................................. 29 Figura 7: Computador convencional .............................................................................. 30 Figura 8: Rede com dois nós .......................................................................................... 30 Figura 9: Example of an HAGEO cluster ....................................................................... 36 Figura 10: IP Address Takeover (IPAT) ......................................................................... 41 Figura 11: Configuração Assimétrica ............................................................................. 43 Figura 12: Configuração Simétrica................................................................................. 43 Figura 13: Instalação heartbeat ...................................................................................... 44 Figura 14: Esquema de Diretorias .................................................................................. 45 Figura 15: Instalação apache versão 2 ............................................................................ 45 Figura 16: Arquivo Authkeys .......................................................................................... 47 Figura 17: Permissão de acesso authkeys ....................................................................... 48 Figura 18: Configuração Hosts ....................................................................................... 49 VIII LISTA DE TABELAS Tabela 1: O significado dos noves .................................................................................. 20 Tabela 2: O custo médio de falha no sistema ................................................................. 20 Tabela 3: Número máximo de nós que têm suporte em um cluster ............................... 34 Tabela 4: Arquivo ha.cf .................................................................................................. 46 Tabela 5: Configuração geral arquivo ha.cf ................................................................... 46 Tabela 6: Configuração authkeys ................................................................................... 48 Tabela 7: Configuração Haresources ............................................................................. 48 IX SUMÁRIO LISTA DE FIGURAS.................................................................................................. VII LISTA DE TABELAS ................................................................................................VIII CAPÍTULO I 1. 1.1. 1.2. 1.3. 1.4. 1.4.1. 1.4.2. 1.5. 1.6. CONSIDERAÇÕES INICIAIS ........................................................................ 12 CONTEXTUALIZAÇÃO ................................................................................ 12 JUSTIFICATIVA ............................................................................................. 14 PROBLEMA DE PESQUISA .......................................................................... 14 OBJETIVOS ..................................................................................................... 15 Objetivo Geral ................................................................................................ 15 Objetivo Específico ......................................................................................... 15 METODOLOGIA DE PESQUISA .................................................................. 15 ESTRUTURA DO TRABALHO ..................................................................... 16 CAPÍTULO II 2. 2.1. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.3. 2.3.1. 2.3.1.1. 2.3.2. 2.3.3. 2.3.4. 2.3.5. 2.4. 2.5. DISPONIBILIDADE ....................................................................................... 19 INTRODUÇÃO................................................................................................ 19 CLASSIFICAÇÃO DA DISPONIBILIDADE ................................................ 21 Disponibilidade Básica ................................................................................... 21 Alta Disponibilidade ....................................................................................... 22 Disponibilidade Contínua .............................................................................. 23 CLUSTER ........................................................................................................ 24 Confiabilidade em Cluster.............................................................................. 25 Falha, erro e defeito .......................................................................................... 25 Escalabilidade ................................................................................................. 26 Cluster de Alta Disponibilidade ..................................................................... 26 Cluster de Balanceamento de Cargas............................................................ 27 Cluster de Computação .................................................................................. 28 PONTO CRÍTICO DE FALHA ....................................................................... 28 PROJETO LINUX-HA .................................................................................... 31 CAPÍTULO III 3. 3.1. 3.1.1. 3.1.2. 3.1.3. 3.1.4. 3.2. 3.2.1. DESENVOLVIMENTOS PARA CLUSTER DE ALTA DISPONIBILIDADE33 CLUSTERS COMERCIAIS ............................................................................ 33 Microsoft Windows Server 2008 R2 ............................................................. 33 IBM: High Availability Cluster Multi-Processing (Hacmp) ...................... 34 IBM: High Availability Geographic Clustering Software (Hageo) ........... 35 HP Serviceguard ............................................................................................. 36 OPEN SOURCES............................................................................................. 37 Common Address Redundancy Protocol (Carp) ......................................... 37 X 3.2.2. 3.2.3. 3.2.4. Distributed Replicated Block Device (Drbd) ............................................... 37 Linux Virtual Server (LVS) ............................................................................ 38 Heartbeat.......................................................................................................... 38 CAPÍTULO IV 4. 4.1. 4.1.1. 4.1.2. 4.2. 4.3. 4.3.1. 4.3.2. 4.3.3. 4.3.4. HEARTBEAT .................................................................................................... 40 ARQUITETURA HEARTBEAT ..................................................................... 40 Ip Address Takeover (Ipat).............................................................................. 40 Mac Address Takeover .................................................................................... 42 INSTALAÇÃO ................................................................................................ 44 CONFIGURAÇÃO .......................................................................................... 45 Configuração Ha.Cf........................................................................................ 45 Configuração Authkeys .................................................................................. 47 Configuração Haresources ............................................................................. 48 Configuração Hosts ........................................................................................ 49 CAPÍTULO V 5. 5.1. 5.2. 5.2.1. 5.2.1.1. 5.2.2. 5.2.3. 5.2.4. CENÁRIO DE TESTE ..................................................................................... 51 CONFIGURAÇÃO DE REDE ........................................................................ 51 INICIANDO O SERVIÇO HEARTBEAT ...................................................... 52 Primeiro Teste: Parando O Heartbeat .......................................................... 55 Reiniciando o Heartbeat. ................................................................................. 56 Segundo Teste: Parando O Servidor Web Apache ...................................... 57 Terceiro Teste: Retirando o Cabo Que Alimenta o Heartbeat ................... 58 Quarto Teste: Desligando o Servidor Principal........................................... 60 CAPÍTULO VI 6. CONSIDERAÇÕES FINAIS ........................................................................... 62 REFERÊNCIAS ........................................................................................................... 64 CAPÍTULO I CONSIDERAÇÕES INICIAIS 12 1. CONSIDERAÇÕES INICIAIS Este capítulo apresenta o planejamento inicial da pesquisa com a contextualização sobre o tema e a proposta de delimitação do estudo, seguido da justificativa para a sua escolha. Em seguida, a definição do problema, metodologia utilizada, o objetivo geral e os específicos e por fim, a estrutura da monografia. 1.1. CONTEXTUALIZAÇÃO A base para o sucesso de uma empresa está diretamente ligada ao meio tecnológico, que necessita de componentes específicos para auxiliar em seu crescimento, como servidores e unidades de armazenamentos de dados. Relacionados a isso estão às pessoas, sejam gestores, colaboradores ou clientes que fazem uso destes elementos. Os equipamentos tecnológicos são constituídos de componentes eletrônicos que podem ser afetados em seu sistema por falhas de artefatos agregados, sendo os servidores os que mais sofrem com esse tipo de problema, onde, fontes, capacitores, placas, entre outros, são corrigidos individualmente em caso de falhas. A necessidade da utilização de serviços e/ou componentes eletrônicos possibilita a ocorrência de falhas, afetando sua disponibilidade e acesso às informações por usuários da rede. Quando há a ocorrência de algum tipo de falha é necessário que o administrador de redes direcione todo o serviço para um servidor secundário para que não ocorra a indisponibilidade por tempo prolongado, neste sentido é utilizado sistemas em “nós” no que se refere a cluster1 de Alta Disponibilidade com arquitetura em HeartBeat2, que será responsável por monitorar e recuperar clusters que apresentaram falhas. Porém, para esse tipo de solução existem diversos software que promovem Alta Disponibilidade, no entanto com um custo elevado. Este trabalho vem mostra que é possível a implementação desta tecnologia com um custo relativamente baixo. 1 Um cluster, ou conjunto de computadores, é formado por vários computadores em conjunto onde os mesmos têm as mesmas informações inscritas em todos os computadores envolvidos. 2 Ver Capítulo IV 13 Segundo Ferreira e Santos (2005), a Alta Disponibilidade – (High Availability - HA) visa manter o máximo de disponibilidade possível dos serviços prestados, recorrendo a hardware e software especifico para o efeito, tornando assim possível o contorno de alguns tipos de falhas, desde as relacionadas com o armazenamento até a elaboração de procedimentos em casos de falhas mais graves. Ike (2009), por sua vez diz que HA é um sistema tolerante a qualquer tipo de falha, seja ela de equipamentos, energia elétrica, software, entre outras. Esse tipo de sistema busca diminuir ou eliminar os pontos únicos de falhas, podendo utilizar redundância de nós de ativos de rede (switches, roteadores, etc), servidores de aplicação, servidores de banco de dados, geradores de energia e outros. Uma das formas de se ter um sistema em HA consiste em agrupar vários servidores independentes em um único sistema cluster, contudo, um sistema HA será capaz de detectar, recuperar e realizar o mascaramento de falhas, visando manter o funcionamento dos serviços durante o máximo de tempo possível, inclusive no processo de manutenções programadas. Entretanto, essas soluções tem custos associados, por isso, os sistemas OpenSource tem crescido consideravelmente, trabalhando e investindo cada vez mais para solucionar problemas. Uma das soluções mais usadas é o projeto Linux-HA (High-Availability Linux), que desenvolve o heartbeat, um daemon3 responsável por monitorar o status dos servidores do cluster e permitir que o segundo servidor assuma as funções do primeiro em caso de pane. (FERREIRA E SANTOS, 2005.) Pretende-se, com esse projeto, mostrar as funcionalidades de um sistema HA utilizando o heartbeat, expondo desde sua instalação e configuração até sua efetividade de funcionamento. Testar-se-á a usabilidade do sistema utilizando software livres, revelando como grandes empresas podem reduzir gastos, aumentar lucros e conseqüentemente ter perdas menores com sistemas disponíveis. 3 Um programa geralmente associado a sistemas UNIX que executa funções utilitárias (de faxina ou manutenção) sem ser requisitado, ou até, sem que o usuário perceba. (http://o-que-querdizer.blogspot.com/2005/04/daemon.html) 14 1.2. JUSTIFICATIVA Alta Disponibilidade ou HA é fundamental em grandes empresas como Microsoft, IBM, Bancos, porém tais empresas dispõem de recursos que possibilitam a construção de sistemas com tamanha tecnologia, mas, é notável que os sistemas open sources evoluíram consideravelmente nos últimos anos a ponto de fornecerem tecnologias de Alta Disponibilidade fazendo com que pequenas empresas possam implementar e dispor seus serviços por mais tempo. Com o custo elevado de soluções prioritárias em cluster de Alta Disponibilidade empresas de todo o mundo abrem as portas para soluções open source, desta forma pequenas empresas poderão adotar esse tipo de solução, trazendo estabilidade e por conseqüência confiança de seus usuários. Este projeto ganha relevância por propor um estudo de como servidores em cluster podem trabalhar simultaneamente propondo Alta Disponibilidade de seus recursos e com o menor custo possível demonstrando possíveis falhas que poderão ocasionar a indisponibilidade do sistema e artefatos que contornam o problema. 1.3. PROBLEMA DE PESQUISA A partir da realização de pesquisas pôde-se perceber que um sistema de Alta Disponibilidade é de grande importância para as empresas, pois contribui em seu crescimento e fortalece-as no mercado competitivo. Diante deste propósito é perceptível que não basta apenas à implantação de um sistema de Alta Disponibilidade, é preciso acompanhá-lo visto que, do contrário, o mesmo pode gerar alguns problemas para as instituições. Desta forma, este estudo visa responder aos seguintes questionamentos: 15 Há a possibilidade de um administrador de redes saber quando um dos hosts4 apresentou falha ou ficou off-line? Caso o servidor Web venha a falhar como proceder para que o servidor secundário assuma os comandos já que o heartbeat continuará em atividade? Caso os servidores não recebam mensagens de heatbeat um do outro, qual o servidor que entrará em atividade já que os dois declararão que os nós estão mortos e cada um iniciará seus serviços? 1.4. OBJETIVOS 1.4.1. Objetivo Geral Analisar a qualidade da utilização de um sistema de Alta Disponibilidade com a arquitetura HeartBeat, a partir da construção de um laboratório de testes a fim de realizar procedimentos, como instalação, configuração e funcionalidade do mesmo. 1.4.2. Objetivo Específico • Demonstrar os artifícios que podem ser adotados e combinados para aumentar a disponibilidade de um sistema; • Revelar as possíveis falhas e as possíveis soluções para um sistema de Alta Disponibilidade; • Mostrar desde a instalação e configuração até o funcionamento do sistema, fazendo uma análise laboratorial de um ambiente de Alta Disponibilidade com arquitetura heartbeat. 1.5. METODOLOGIA DE PESQUISA Este trabalho foi dividido em três etapas, a primeira consistiu em levantar material necessário para estudos bibliográficos, que abordam assuntos relacionados ao tema, através de fontes de revistas, livros, internet ou publicações relacionadas. Nesse sentido foi realizado a implementação da pesquisa em laboratório, onde está o embasamento de todo o trabalho, segundo Lakatos e Marconi (2001, p.155), a pesquisa é um 4 Computador ligado a rede. 16 procedimento reflexivo sistemático, controlado e crítico, que permite descobrir novos fatos ou dados, relações ou leis, em qualquer campo do conhecimento, mas partindo para a idéia de que a pesquisa será realizada em laboratório temos segundo Santana (2004) uma pesquisa de laboratório tem como objetivo reproduzir e observar certos fenômenos e em ambientes artificialmente construídos. Na segunda etapa foi construído o laboratório de pesquisa, onde foi feito todo o estudo prático do projeto, testando e avaliando o trabalho do HeartBeat, se o mesmo seria eficaz no trabalho que lhe é proposto. A terceira etapa é a junção das anteriores, onde é pretendido demonstrar a instalação, configuração e funcionamento de um sistema altamente disponível revelando falhas e possíveis soluções para um sistema cem por cento disponível, ou o mais próximo disso, que sugestiona em Cluster de Alta Disponibilidade com arquitetura HeartBeat um projeto Linux HA para software livres. Foi feita uma demonstração do funcionamento de um cluster de HA em um ambiente Linux, bem como demonstração de seu funcionamento observando se um servidor secundário pode assumir as atividades do servidor principal em um curto período de tempo com a ocorrência de algum tipo de falha. 1.6. ESTRUTURA DO TRABALHO A monografia está organizada de modo a propor ao leitor fácil entendimento e compreensão do assunto a ser discutido, proporcionando prazer ao ler e também ao praticar os conhecimentos passados aqui. Sendo assim, os capítulos serão organizados como se segue: Capítulo 01 – Considerações Iniciais: Apresenta a introdução ao tema escolhido, Cluster de Alta Disponibilidade com Arquitetura HeartBeat um projeto Linux-HA para software Livres, seguindo da justificativa. Em seguida a definição do problema, metodologia utilizada, objetivo geral e os específicos. 17 Capítulo 02 – Disponibilidade: Será abordado o conceito de disponibilidade e disponibilidade continua, bem como suas diferenças, para posteriormente falar do que vem a ser o projeto Linux-HA. Capítulo 03 – Desenvolvimentos para Cluster de Alta Disponibilidade: Aqui será abordada algumas soluções para desenvolvimento de cluster de Alta Disponibilidade, soluções essas que podem ser comerciais ou OpenSource. Capítulo 04 – HeartBeat: Será apresentado seu conceito e passo a passo da instalação e configuração do serviço HeartBeat. Capítulo 05 – Cenário de teste: Será apresentando a estrutura do laboratório de testes, configurações de maquinas utilizadas e simulações de possíveis falhas que poderão ocorrer em uma empresa. Capítulo 06 – Considerações finais: Será descrito uma conclusão do trabalho realizado e sugestões para trabalhos futuros. Ao final deste trabalho poderá ser vista as Referências contendo todo o material pesquisado no decorrer da elaboração deste projeto. CAPÍTULO II DISPONIBILIDADE 19 2. DISPONIBILIDADE Este capítulo tem como objetivo apresentar a importância de um sistema disponível bem como sua classificação e confiabilidade, abordando assim, as principais diferenças entre falha, erro e defeito, componentes que afetam diretamente o sistema. 2.1. INTRODUÇÃO A importância de um sistema disponível é notável em grande parte das tarefas executadas pelas pessoas em seu dia a dia, que dispõe de sistemas informáticos diversas atividades, como compra de um bilhete de passagem, compras em lojas virtuais e até mesmo em agências bancárias. A disponibilidade torna-se tão importante a ponto de fazer com que a empresa tenha prosperidade em seus negócios ou torne-se o fracasso chegando à falência. De acordo com o dicionário Aurélio (2001, p. 260), disponibilidade significa “qualidade ou estado de disponível”. Devido a essa necessidade de obtenção de recursos na hora exigida, o ser humano exige cada vez mais de um sistema que venha atendê-lo a qualquer hora. A disponibilidade de um serviço é calculada na percentagem que quantifica a probabilidade de encontrar o serviço operacional em determinado momento (FERREIRA e SANTOS, 2005). Com isso pode-se calcular o tempo em que um servidor estará disponível (uptime), ou o tempo em que o mesmo estará indisponível (downtime) (FERREIRA e SANTOS, 2005). Para o cálculo da percentagem é utilizada a formula descrita abaixo, sendo que a mesma pode ser aplicada para as três classes de disponibilidades existentes (ver tópico 2.2). Disponibilidade = (Unidade de tempo total - downtime) / Unidade de tempo total Toma-se como exemplo um servidor Web que está operando em um período de uma semana considerando que o mesmo apresentou problemas ficando indisponível (downtime) durante 1 hora. Unidade de tempo total = 1 semana (168 horas) Downtime = 1 hora 20 Disponibilidade = (168 - 1) / 168 = 99,4047 % Alcançar 100% de disponibilidade é uma tarefa quase que impossível, pois os componentes de hardware possuem vida útil necessitando de trocas de tempos em tempos e conseqüentemente exigindo que o administrador de redes pare as tarefas mesmo que sejam por períodos curtos de tempo. Na tabela 1, o site da Microsoft TechNet, traduz o significado dos noves em um sistema disponível, enquanto mais nove tiver, menor será o downtime (Microsoft TechNet, 2009). % 100 99,999 (5 noves) 99,99 (4 noves) 99,9 (3 noves) 99 ( 2 noves) 90,0 - 98,9 (1 nove) Tabela 1: O significado dos noves Downtime (por ano) Nenhum downtime Menos de 5,26 min. De 5,26 a 52 min. De 52 min. a 8 horas e 45 min. De 8 horas e 45 min. a 87 horas e 56 min 87 horas e 56 min a 875 horas 54 min Fonte: Microsoft TechNet Para Barraza (2002), o custo de inatividade pode ser incapacitante ou mesmo fatal para uma organização (ver Tabela 2). APLICAÇÃO INDÚSTRIA Correntistas Finanças Vendas de cartão de Finanças crédito Pay-Per-View Mídia Utilidades Domésticas Varejo Catálogo de Vendas Varejo Reservas Aéreas Transporte Tabela 2: O custo médio de falha no sistema CUSTO POR HORA ($) $ 6,45 milhão $ 2,60 milhão $ 150.000 $ 150.000 $ 150.000 $ 150.000 Fonte: Barraza (2002, p. 2) A disponibilidade ainda pode ser melhorada com investimentos de hardware e software, passando assim para outra classe de disponibilidade, caso o administrador não aplique corretamente os investimentos necessários pode acarretar em perdas ainda maiores (BARRAZA, 2002). 21 A disponibilidade de um sistema pode ser dividida, ainda, em três classes, disponibilidade básica, Alta Disponibilidade e disponibilidade contínua. 2.2. CLASSIFICAÇÃO DA DISPONIBILIDADE Como se pode ver, a disponibilidade pode ser calculada de acordo com o tempo em que o computador esteve disponível e indisponível, com o resultado desse calculo pode-se classificar a disponibilidade em três classes, disponibilidade básica, Alta Disponibilidade e disponibilidade contínua. 2.2.1. Disponibilidade Básica Esse tipo de disponibilidade pode ser encontrado em todos os computadores, desde os mais simples até os mais avançados, sem a necessidade do uso de software ou hardware específico para o efeito. Assim sendo, um sistema de disponibilidade básica será capaz de atender ao cliente no tempo necessário, respondendo as expectativas do mesmo. Com um sistema desse nível pode-se realizar tarefas desde as mais simples até as mais complexas ressaltando, então, que se ocorrer falhas ou manutenções planeadas o sistema ficará indisponível. Segundo Guindani (2008), um sistema com disponibilidade básica pode chegar de 99% a 99,9% de disponibilidade. Dizendo ele que, em um ano de operação a máquina pode ficar indisponível por um período de 9 horas a quatro dias. Um exemplo de um sistema de disponibilidade básica pode ser visto na figura 1. 22 Figura 1: Disponibilidade Básica Fonte: NAKAI (2008) Este tipo de sistema traz um único servidor como provedor de serviço, quando há a sobrecarga ou uma falha em um de seus componentes esse servidor para o serviço ficando indisponível por algum tempo, só retomando as atividades normais depois de concertado. 2.2.2. Alta Disponibilidade Esse tipo de disponibilidade só é possível por intermédio de dispositivos de software ou hardware que sejam capazes de detectar e recuperar hosts que obtiveram falhas. Segundo Guindani (2008), nessa classe, as máquinas normalmente apresentam disponibilidade na faixa de 99,99% a 99,999%, podendo ficar indisponíveis por período de pouco mais de cinco minutos até uma hora em um ano de operação. Um típico cenário de Alta Disponibilidade pode ser visto na figura 2, onde se tenta passar ao usuário final o mais próximo possível de 100% da entrega do serviço. 23 Figura 2: Esquema lógico com o uso de DRBD Fonte: Dr. White Hat, 2009 É notável a quantidade de servidores web, verifica-se que os mesmos trabalharam em conjunto para que se tenha um balanceamento de cargas, os dois últimos farão a troca de serviço caso venham a falhar deixando assim o sistema com o máximo de disponibilidade possível. 2.2.3. Disponibilidade Contínua Esse tipo de disponibilidade visa manter um sistema totalmente disponível, sem nenhuma falha, o que implica em 24 horas por dia e sete dias por semana. Segundo Ferreira e Santos (2005, p. 10), “a disponibilidade contínua (continuous availability) combina as características da operação contínua e da Alta Disponibilidade representando um estado ideal”. Esse tipo de cenário pode ser visto na figura 3, onde o sistema tenta dispor ao usuário final 100% da entrega do serviço. 24 Figura 3: Disponibilidade Continua Fonte: QUORUM Para prover continuidade na transferência de dados pode ser criado data centers5 em pontos estratégicos, no exemplo de disponibilidade contínua, quando o data Center principal falhar o segundo assume os serviços fazendo com que os dados trafeguem ininterruptamente. 2.3. CLUSTER Também conhecidos como nós ou nodos, os clusters segundo Ferreira e Santos (2005, p. 5), “é um conjunto de computadores independentes, designados de nós, que colaboram entre si para atingir um determinado objetivo comum, criando assim um sistema mais robusto”. Para isso, os computadores devem ser ligados com conexões de alta velocidade para fornecer serviços de alto desempenho podendo trazer grandes vantagens, como, confiabilidade e escalabilidade, além de possuir três tipos de Cluster que serão descritos em seguida. 5 Centro de Processamento de dados agrupam diversos computadores para o processamento de dados de uma empresa. 25 2.3.1. Confiabilidade em Cluster A confiabilidade de qualquer sistema leva ao questionamento se o mesmo será capaz de oferecer o serviço prometido na hora que se deseja essa confiabilidade, somente sendo permitida caso algum dos fatores abaixo não aconteça. 2.3.1.1. Falha, erro e defeito Um Servidor Web que está em disponibilidade por um período longo de tempo pode ser afetado de diversas maneiras, através de falhas, erros ou defeitos, porém esses três tipos de distorções têm significados distintos. Segundo Weber (2001, p. 4), “[...] falhas estão associadas ao universo físico, erros ao universo da informação e defeitos ao universo do usuário”. Observa-se que na figura 4 a falha pode ocasionar um erro e, por conseguinte, gerar um defeito, mas, nem sempre isso ocorre, justamente por que uma linha de código do programa que está com falha pode ser que nunca seja executada ou um erro nunca levar a um estado de defeito, pois a informação, talvez, não seja usada (WEBER, 2001). Figura 4: Modelo de 3 universos: falha, erro e defeito Fonte: Weber (2001, p. 4) Toma-se como exemplo uma fonte de alimentação de um computador, diz-se então, que há uma oscilação constante de energia nesta fonte, com a ocorrência dessa falha pode ser gerado um erro de troca de bit na máquina inesperadamente, por conseqüência seria gerado um defeito podendo travar o equipamento ou até mesmo, queima do material, deixando assim, em indisponibilidade (ANDERSON, 1981). 26 2.3.2. Escalabilidade A escalabilidade em Cluster permite que novos nós sejam adicionados na rede fazendo com que cresça consideravelmente. Com isso, cada host pode ser identificado por seu estado de atividade, ativo ou em espera (standby), quando o servidor está ativo subentende-se que este é o host principal, e quando esta em espera ou standby, diz-se então, que o mesmo é o secundário. Segundo Ferreira e Santos (2005, p. 12), “a junção de nós, periféricos e interligações de rede não devem interferir na disponibilidade dos serviços prestados”. Por conseqüência, a escalabilidade deve trazer ao sistema confiabilidade. 2.3.3. Cluster de Alta Disponibilidade Esse tipo de Cluster tem como finalidade prover, por maior tempo possível, a disponibilidade do sistema, podendo alcançar, o mais próximo possível, de 100% de disponibilidade. Com esse sistema implementado é comum encontrarmos, apenas dois nós configurados, já que é o requisito mínimo para oferecer redundância dos dados (FERREIRA e SANTOS, 2005). A implementação de um sistema desse porte permite que seja contornada possíveis falhas do sistema, que podem ser de hardware ou software. Quando um dos nós ativos chegarem a falhar o outro assume as responsabilidades no instante do ocorrido. Um sistema desses é freqüentemente utilizado em bancos de dados, compartilhamento de arquivos em rede e em aplicativos de negócios, como sites de comercio eletrônico. Segundo Reis, et. al (p. 3), “nesta classe as máquinas tipicamente apresentam disponibilidade na faixa de 99,99% a 99,999%”. Esse tipo de cluster apresenta duas características importantes, failover6 cluster e cluster de escalabilidade. Segundo Reis et. al (p. 3), “um cluster de failover em caso de falha o sistema age automaticamente sem que seja preciso a intervenção humana”. Toma-se como exemplo 6 Modo operacional do sistema onde as funções de um componente do sistema ficam como secundário até quando o componente primário obtiver falha. 27 um nó de cluster com apenas duas máquinas dispondo de serviços de Alta Disponibilidade em um servidor Web, onde uma delas é a principal, se o servidor principal vier a falhar e ficar inoperante por alguns minutos a máquina secundária entra em operação, automaticamente, sem que o usuário perceba. O outro ponto importante é a escalabilidade que segundo Ferreira e Santos (2005, p. 12), diz que, “através da junção de nós, periféricos e interligações de rede não devem interferir na disponibilidade dos serviços prestados”. Ou seja, através da adição ou substituição de recursos de máquinas existentes, o serviço não é comprometido, não havendo a necessidade de paragens ou interrupções (ver tópico 2.3.2). 2.3.4. Cluster de Balanceamento de Cargas O cluster para balanceamento de cargas é usado quando existem várias requisições para um único serviço. Segundo Arthur (2009, p. 2), “um bom cluster de balanceamento de carga deve ter a capacidade de receber os pedidos de requisição de serviço de vários clientes e distribuir (balancear a carga de trabalho) tais serviços às máquinas que constituem o cluster de forma que nenhuma máquina fique sobrecarregada e/ou ociosa”. Para que se tenha um bom balanceamento de cargas são utilizados alguns métodos de controle de carga, os dois métodos principais são. Algoritmo de Round-robin, esse tipo de algoritmo é responsável por distribuir a carga igualmente para cada servidor, independentemente do numero de conexões atuais. Esse algoritmo é adequado quando os servidores do cluster tiverem a capacidade de processamento igual, caso contrário, os servidores podem receber pedidos de mais do que podem processar enquanto outros estão usando parte do processamento (MICROSOFT, 2009a). Equilibradores de cargas, esse tipo de controle permite que seja controlado equipamentos de hardware de modo que não seja utilizado demasiadamente. Segundo Mora (2008, p. 15), “esse método deve monitorar a utilização do processador, memória, rede e disco de um conjunto de servidores, e ser capaz de analisar estes dados a fim de não deixar um servidor mais carregado, enquanto há servidores sendo subutilizados”. 28 2.3.5. Cluster de Computação O tipo de cluster de computação mais conhecido é o cluster de Beowulf. O primeiro cluster Beowulf surgiu nos laboratórios do Center of Excellence in Space Data Information Sciences (CEDIS – Centro de Excelência em Ciência da Informação e em Dados Espaciais), uma divisão da NASA, que tinha como objetivo construir uma organização paralela ás seguintes características: baixo custo, composto por equipamentos disponíveis a qualquer usuário e que oferece alto poder computacional (OLIVEIRA, 2004). Também conhecido como cluster de alto desempenho é do tipo que divide os processos em inúmeros pedaços para que os mesmos possam ser executados e trabalhados em nós separados. Segundo Brandão (2009, p. 3), “o Cluster de Alto Desempenho é projetado para fornecer maior poder de computação para a solução de um problema e tradicionalmente está relacionado com aplicações científicas, de simulação ou de manipulação de imagens”. Esse tipo de cluster trabalha com um dos computadores do nó como mestre, onde o mesmo será responsável por dividir e compartilhar as tarefas para os demais nodos da rede. 2.4. PONTO CRÍTICO DE FALHA Do inglês single points of failure (SPOF), os pontos críticos de falha são componentes da rede, ou mesmo do computador, que por alguma razão venha a falhar, deixando o sistema inoperante, mesmo que seja por períodos curtos de tempo. Ao projetar um sistema de HA alguns aspectos devem ser analisados, como equipamentos e software envolvidos, ambiente onde instalar e poder de processamento e armazenamento de dados (FERREIRA E SANTOS, 2005, P. 14). Com isso, a inexistência, ou a quebra, de um desses componentes pode acarretar na falta da disponibilidade do sistema e conseqüentemente, gerar transtornos ainda maiores para a empresa provocando perdas financeiras. Esses pontos de falhas são inúmeros, pode-se ter conhecimento da quantidade de pontos existentes na empresa, ou não. 29 SPOF Figura 5: Ponto crítico de falha Fonte: Dantas, 2009 A figura 5 ilustra um ponto critico de falha aplicada em uma rede, onde todo o tráfico da informação é transmitido a partir de um roteador para os outros componentes da rede, caso o roteador venha a falhar todos ficarão sem acesso à informação. Ferreira e Santos (2005), discutem alguns componentes cruciais para ocorrência de falhas mais também propõe soluções com o intuito de prover maior disponibilidade possível no sistema. Ferreira e Santos (2005) explicam que de acordo com a figura 6, um computador simples que contém um disco rígido, componentes de hardware e algumas aplicações também sofrem com falhas indesejadas afetando, principalmente os componentes citados anteriormente. Figura 6: Computador convencional Fonte: FERREIRA e SANTOS (2005, p. 16) 30 Mais, para minimizar ou até mesmo sanar esses pontos críticos, basta apenas à duplicação dos componentes do sistema, disco rígido, hardware e aplicações podendo ser construída em uma nova máquina que poderá trabalhar em conjunto com a máquina anterior. Figura 7: Computador convencional Fonte: FERREIRA e SANTOS (2005, p. 17) Agora que se têm duas máquinas idênticas, como fazer para que as mesmas se enxerguem? Isso é o mais simples, basta apenas à criação de uma rede entre os dois nós (Figura 8). Figura 8: Rede com dois nós Fonte: Adaptado de FERREIRA e SANTOS (2005, p. 17) É notável que com apenas isso a rede não venha a ter cem por cento de disponibilidade, sanado todos os pontos críticos de falha, apenas complicaria mais a vida de qualquer administrador de redes, pois com a criação da rede foram acoplados novos equipamentos o que gerou mais pontos de falhas, cabo de rede e switch são os principais, pois a inexistência de um deles pode acarretar sérios problemas. 31 Observa-se que a partir do momento que é adicionado novos recursos e equipamentos mais pontos críticos são acoplados em seu interior, sendo necessário, assim, uma pessoa especifica para lidar com situações criticas, a ponto de analisar e sanar todos os pontos encontrados. 2.5. PROJETO LINUX-HA Com início em 1997 o projeto Linux-HA começou com uma lista de discussão criada por Harald Milz para discutir como se pode criar um conjunto de capacidades de Alta Disponibilidade para Linux (ROBERTSON, 2009). Com o projeto ainda em discussão o autor decidiu fazer uma das peças do software que realizaria a função de verificação entre máquinas através de pulsos o que deu o nome ao software de HeartBeat ou batimentos cardíacos. Desde então o interesse por ele cresce continuamente, com o intuito de prover Alta Disponibilidade de seus serviços, o projeto distribuí o software como parte integrante dos sistemas Linux além de rodar em alguns outros sistemas, como FreeBSD, Solaris e OpenBSD e mesmo no MacOS / X (LINUX-HA, 2009a). Com o objetivo firmado em prover uma solução de (clustering) de Alta Disponibilidade que promova confiabilidade e robustez, disponibilidade e continuidade na prestação de serviços como traz o site do próprio projeto (LINUX-HA, 2009a), o projeto ainda conta com algumas outras ferramentas que trabalhando em conjunto para prover maior sustentabilidade ao sistema, como é perceptível a Alta Disponibilidade, não baseia-se apenas no projeto Linux-ha podendo ter soluções que disponham de custos elevados nos quais serão descritas no próximo capítulo. CAPÍTULO III DESENVOLVIMENTOS PARA CLUSTER DE ALTA DISPONIBILIDADE 33 3. DESENVOLVIMENTOS DISPONIBILIDADE PARA CLUSTER DE ALTA Aqui será abordada, as possíveis soluções para desenvolvimento de cluster de Alta Disponibilidade, podendo ser comerciais ou OpenSource. 3.1. CLUSTERS COMERCIAIS Serão abordadas aqui, algumas soluções em cluster para construir um sistema de Alta Disponibilidade, sendo que estas possuem algum custo associado. 3.1.1. Microsoft Windows Server 2008 R2 Foi escolhido o Windows Server 2008 por ser o software mais atual para este fim, ressaltando ainda que este software não possui tantas diferenças com a versão 2003 Server. O Windows Server 2008 R2 traz duas edições que disponibilizam serviços de segurança e disponibilidade: Windows Server 2008 Enterprise, Windows Server 2008 Datacenter. Windows Server 2008 Enterprise R2 é um ótimo sistema operacional para servidores que executam aplicativos como o networking, messaging, inventário, bancos de dados e sistemas de atendimento ao cliente, além de conter todas as funcionalidades do Windows Server 2008 R2 Standard Plus (MICROSOFT, 2009b). Windows Server 2008 R2 Datacenter é otimizado para virtualização em grande escala em sistemas de servidor de pequeno a grande porte e para cargas de trabalho que exigem os maiores níveis de escalabilidade, confiabilidade e disponibilidade para suportar grandes aplicações de missão crítica (MICROSOFT, 2009c). O Windows, por sua vez, dá suporte a determinado número de servidores em cluster, essa quantidade máxima em sistemas Windows pode ser vista na tabela 3. 34 Sistema Operacional (SO) Número de nós Armazenamento Windows NT 4.0 Enterprise Edition Windows 2000 Advanced Server Windows 2000 Datacenter Server Windows Server 2003, Enterprise Edition 1-2 SCSI Windows Server 2003, Enterprise x 64 Edition Windows Server 2003, Datacenter Edition Windows Server 2003, Datacenter x 64 Edition Windows NT 4.0 Enterprise Edition 1-2 Fibre Channel Windows 2000 Advanced Server Windows 2000 Datacenter Server 1-4 Fibre Channel Windows Server 2003, Enterprise Edition Windows Server 2003, Enterprise x 64 Edition Windows Server 2003, Enterprise Edition para sistemas baseados no Itanium Windows Server 2003, Datacenter Edition Windows Server 2003, Datacenter x 64 Edition Windows Server 2003, Datacenter Edition para Fibra Canal, iSCSI ou 1-8 sistemas baseados no Itanium SAS Windows Server 2008, Enterprise Edition Windows Server 2008, Enterprise Edition para sistemas baseados no Itanium Windows Server 2008, Datacenter Edition Windows Server 2008, Datacenter Edition para sistemas baseados no Itanium Windows Server 2008, Enterprise x 64 Edition Fibra Canal, iSCSI ou 1-16 Windows Server 2008, Datacenter x 64 Edition SAS Tabela 3: Número máximo de nós que têm suporte em um cluster Fonte: SUPPORT, 2009 Os clusters em sistemas Windows vêm como parte integrante do sistema, sem nenhum custo adicional, bastando apenas à compra do software apropriado, instalação e configuração do mesmo. 3.1.2. IBM: High Availability Cluster Multi-Processing (Hacmp) Solução proprietária da IBM que disponibiliza formas de monitoração e de detecção de falhas de aplicações. Faz a manutenção de cópias de segurança armazenadas nos recursos de backup de uma organização (FERREIRA e SANTOS, 2005, p. 22). Esse sistema é construído para plataformas IBM system Power, linhas de produtos da IBM, rodando em IBM Unix AIX e Linux, podendo ser executado em até 32 computadores em nós 35 em sistema AIX da IBM e em até oito nós em sistemas Linux, esse tipo de sistema pode ser configurado para responder a centenas de eventos que venham a ocorrer, até mesmo problemas que não agravam suficientemente o sistema ocasionando interrupções de operações do sistema. Por se tratar de uma solução de Alta Disponibilidade o HACMP, também, trabalha com detecção e recuperação de hosts que apresentaram falhas, fazendo com que a disponibilidade do sistema não seja afetada (IBM, 2009). Embora esteja preparado para instalação e configuração em sistemas Linux, o software de Alta Disponibilidade que a IBM oferece só pode atuar mediante a compra de licenças. 3.1.3. IBM: High Availability Geographic Clustering Software (Hageo) HAGEO é um complemento do HACMP com o objetivo de proporcionar a Alta Disponibilidade entre cluster que possam estar localizados, geograficamente, em locais separados, sem limite de distância. (IBM, 2009). Enquanto que o HACMP oferece disponibilidade em um ambiente de computação dentro do local de trabalho o HAGEO oferece Alta Disponibilidade em casos mais críticos, como no acontecimento de explosão ou algum outro tipo de desastre ocorrido na própria empresa, permitindo que os dados fiquem seguros em outro local longe dali. Essa solução oferece alguns benefícios: • Capacidade de desempenho de rede aprimorada com a adição da opção de transporte TCP. • Suporte 64-bit kernel • Escolhas adicionais na ordem de gravação de dados espelhados • Maior integração com IBM High Availability Cluster de Multiprocessamento (HACMP) para AIX ® clustering software (IBM, 2009, p.1) O exemplo de um sistema em HAGEO pode ser visto na figura 9. 36 Figura 9: Example of an HAGEO cluster Fonte: IBM, 2003 No exemplo acima os nós estão em diferentes locais geográficos, um em Boston e outro em Hartford. Observe que os nós de cada local são definidos como pertencentes a um dos dois locais, o nó Boston e o nó Hartford construídos com sistema HACMP. Os dois locais juntos formam um cluster HAGEO único. O site é um componente de cluster HACMP. (IBM, 2003). 3.1.4. HP Serviceguard Solução proprietária da HP onde os serviços aplicacionais são agrupados em packages7 para que, no caso de falha de um recurso, o controle da package possa ser transferido automaticamente para outro nó dentro do cluster. Desta forma, os serviços continuam disponíveis com o mínimo de downtime (FERREIRA e SANTOS, 2005, p. 22). Feitos para sistemas HP-UX e sistemas Linux, a HP Service Guard fornece Alta Disponibilidade com promessa de restaurar rapidamente serviços após a ocorrência de falhas, seja ela de hardware ou software (HP, 2009). 7 Um pacote de software é o software empacotado num formato de arquivo para ser instalado por um sistema gestor de pacotes ou por um instalador autônomo. (http://pt.wikipedia.org/wiki/Package) 37 Esse tipo de sistema utiliza o protocolo TCP/IP para comunicação entre nós ativos de rede, caso um dos nós não receba a mensagem transmitida inicia-se uma nova montagem do sistema. Esse tipo de sistema pode ser utilizado em cluster de até 16 nós, tanto para sistemas HP, quanto para sistemas Linux. 3.2. OPEN SOURCES Nesta seção será abordada algumas soluções de código aberto para implementação de um sistema de Alta Disponibilidade. 3.2.1. Common Address Redundancy Protocol (Carp) Segundo Botelho (2006, p. 27), Common Address Redundancy Protocol, CARP, é o Protocolo de Redundância de Endereço Comum. Seu objetivo principal é permitir que múltiplos hosts no mesmo segmento de rede compartilhem o mesmo endereço IP. Com o propósito de dispor Alta Disponibilidade, esse protocolo pode também efetuar o balanceamento de cargas se for configurado para tal efeito, mais, para isso, o mesmo só será capaz de realizar um dos serviços. As vantagens desse protocolo são: baixo overhead8, mensagens criptográficas, interoperatividade entre sistemas operativos diferentes e o fato de não necessitar de nenhuma ligação secundária entre os hosts redundantes (FERREIRA e SANTOS, 2005, p. 25). 3.2.2. Distributed Replicated Block Device (Drbd) Segundo a Sun Microsystems (2009, p. 8), o DRBD é um dispositivo de bloco do kernel9 Linux de código aberto que potencializa a replicação síncrona para conseguir uma exibição consistente de dados entre dois sistemas, normalmente um sistema ativo e um passivo. Podendo trabalhar em conjunto com o HeartBeat, o DRBD faz com que todas as informações inscritas no servidor primário sejam copiadas, sem nenhuma alteração, para o servidor secundário. 8 processamento ou armazenamento em excesso. 9 É o núcleo do sistema, o Kernel é responsável por realizar a comunicação entre software e hardware. 38 Para prover Alta Disponibilidade em um sistema Web, é necessário que todos os dados que estejam no servidor secundário sejam idênticos aos contidos no servidor primário, sendo assim, havendo a necessidade da troca de servidores os dados retornados ao usuário final sejam dados sem alterações, para isso existe o DRBD como forma de prover replicação dos dados sem alterá-los. 3.2.3. Linux Virtual Server (LVS) Linux Virtual Server (LVS) é um arranjo (cluster) de servidores Linux que provê serviços de Alta Disponibilidade e alto desempenho. Essas características são obtidas com o uso das técnicas de failover, redundância com substituição automática, e load balancing, distribuição da demanda para vários servidores (PEREIRA JÚNIOR, 2008.) Com essa ferramenta é possível criar um sistema avançado de balanceamento de cargas fornecendo, assim, para usuários Linux, maior disponibilidade e desempenho de seus serviços, dando-lhes ainda altos níveis de confiança e usabilidade (CENTOS, 2008) 3.2.4. Heartbeat O HeartBeat significa batimentos cardíacos, trabalha com pulsos de máquina para máquina, enviando pacotes do servidor principal para o servidor secundário, e vice versa, verificando se os mesmos estão ativos, caso o servidor principal venha a ficar indisponível o secundário assume seu lugar na rede. Ele pode fazer comunicação via serial enviando heartbeats de um nodo para outro, ou por interfaces de rede (OPENS, 2009, p. 1). Com duas máquinas no nó da rede pode-se fazer uma ligação serial ligando-as através de um cabo crossover10, ou, até mesmo, utilizando de equipamentos de rede, como Hub, Switch, roteadores, entre outros. Será descrito de uma forma mais aprofundada sobre essa arquitetura no próximo capítulo. 10 Tipo de cabo de rede, que permite a ligação de dois computadores pelas suas placas de rede sem a necessidade do uso de componentes de rede (Hub ou Switch). CAPÍTULO IV HEARTBEAT 40 4. HEARTBEAT Neste capítulo será abordado o conceito de HeartBeat, bem como, instalação e configuração do mesmo dispondo assim da Alta Disponibilidade para usuários do sistema. Este capítulo é bem prático necessitando assim de um bom entendimento sobre Linux e dos capítulos anteriores. 4.1. ARQUITETURA HEARTBEAT Será utilizado neste projeto, o heartbeat, com o propósito de identificar e recuperar um computador secundário, que esteja trabalhando no nó do cluster quando o primário obtiver falha ficando inativo, proporcionando assim, um serviço de Alta Disponibilidade em um servidor Web. Segundo Haas (2009), o heartbeat é um subsistema de pulsação para prover Alta Disponibilidade em ambiente Linux. Trabalhando com a execução de scripts na sua inicialização, verificando assim, quais as máquinas estarão disponíveis. Ele trabalhará com a execução de pings11 entre as máquinas do nó do cluster, verificando assim quando uma delas estiver inoperante, declarando a mesma como um nó morto. Praticamente existem duas versões principais do heartbeat, a versão 1.x com ela é possível a configuração de apenas dois nós em cluster, e a versão 2.x que permite a configuração de até 16 nós em cluster (SAMBA, 2007). Contudo o heartbeat trabalhará através de processos de takeover (aquisição de recursos), podendo ser implementado em uma das duas estratégias de aquisição discutidas a seguir. 4.1.1. Ip Address Takeover (Ipat) Com esse tipo de recurso é possível contornar possíveis falhas do sistema, protegendo assim, de erros de instalação de placas de redes ou até mesmo da quebra do hardware de rede. Para esse mecanismo é necessária a instalação de duas placas de rede para cada endereço IP, as 11 Comando para testar a conectividade entre computadores. 41 mesmas devem estar configuradas para a mesma rede física, uma das placas deve ficar sempre ativa enquanto o outro fica em espera. No momento em que o sistema detecta um problema com a placa principal, imediatamente o NIC de espera é ativado. Como resultado clientes não notam qualquer tempo de inatividade no servidor (ORACLE, 2004). Para sistemas Linux, é possível a alocação de dois IPs em uma mesma placa de rede, chamados aqui de endereços virtuais, como mostra a figura 10. Cliente Gateway 192.168.0.20 Cliente Gateway 192.168.0.20 Eth0 – 192.168.0.5 Eth0:1 – 192.168.0.20 Eth0 – 192.168.0.10 Eth0 – 192.168.0.5 Eth0 – 192.168.0.10 Eth0:1 – 192.168.0.20 Servidor Primário Servidor em espera Servidor Primário Servidor em espera Figura 10: IP Address Takeover (IPAT) Fonte: Dantas, 2009 Note que na figura 10 tem-se, no servidor principal dois endereços, Eth0 192.168.0.5 IP fixo que identifica o servidor primário e o endereço Eth0 192.168.0.10 que identifica o servidor em espera, alocado a mesma placa de rede tem-se um IP virtual Eth0:1 192.168.0.20 que está rodando em ambas as máquinas sendo que no servidor em espera o IP virtual só ficará ativo caso o servidor primário não esteja mais operando. Na ocorrência de algum tipo de falha com o servidor principal o servidor em espera ativa sua interface virtual disponibilizando o serviço para o usuário final sem que o mesmo perceba a troca do equipamento. 42 Como afirma Ferreira e Santos (2005, p. 28), “a disponibilidade dos servidores pode ser controlada com o utilitário fake12 que permite efetuar o método IPAT colocando operacional uma interface adicional (física ou virtual).” 4.1.2. Mac Address Takeover O endereço MAC é quem controla o acesso de cada máquina na rede sendo que, o mesmo funciona como identificador dos dispositivos de rede não existindo endereços MACs iguais. Segundo Ferreira e Santos (2005, p. 28), quando ocorre um IPAT, as máquinas dos utilizadores são confrontadas com um endereço MAC diferente para o mesmo endereço IP. Todas as implementações IP devem atualizar os caches13 do ARP14 caso ocorra um pedido ARP para o qual já exista um endereço IP associado. Esse método consiste na troca do processamento do servidor principal para o servidor secundário permitindo que as informações trafeguem sem interrupções no caso de failover do servidor principal. Para isso pode-se destacar dois tipos de configurações a serem realizadas, configuração simétrica e assimétrica (Ferreira e Santos, 2005). 12 Do português Falso, permite assumir o endereço IP da outra máquina na rede local. 13 Dispositivo para acesso rápido, ao efetuar o primeiro acesso a um dispositivo o cache guarda as informações para que possam ser utilizadas posteriormente e com mais rapidez em seu acesso. 14 Address Resolution Protocol ARP é um protocolo utilizado para mapear endereços IP para endereços MAC (http://pt.tech-faq.com/arp.shtml&prev=hp&rurl=translate.google.com) 43 Figura 11: Configuração Assimétrica Fonte: Dantas, 2009. Na configuração assimétrica o cliente solicita a execução de uma aplicação no servidor principal, caso o mesmo venha a ficar inoperante o servidor secundário será capaz de realizar as mesmas tarefas do servidor principal ficando a espera apenas para a realização dessa tarefa. Figura 12: Configuração Simétrica Fonte: Dantas, 2009. 44 Neste tipo de configuração cada servidor é responsável por executar uma aplicação diferente, sendo utilizado como um balanceador de cargas, no caso do servidor principal ficar inoperante o servidor secundário será capaz de executar as duas aplicações ficando com toda a carga do processamento (Figura 12). Para cada uma das estratégias citadas acima existe um tempo de resposta para aquisição de serviços, como por exemplo, por endereço MAC é quase que instantâneo mais sua implementação é, de certa forma, desorganizada, em aquisição por endereço IP é um pouco mais lento do que por endereço MAC tornando sua implementação menos viável (LINUXHA, 2009b). 4.2. INSTALAÇÃO O processo de instalação do heartbeat mostrados aqui deverá ser executado em todos os nós do cluster. Será utilizado o heartbeat versão 2.1.4, por ser a versão mais atual do programa. O software utilizado pode ser baixado direto do site do projeto, Linux-ha.org, ou através de comandos digitados no terminal de comandos Linux, para que isso ocorra é necessário que o computador esteja conectado a internet, figura 13. Figura 13: Instalação heartbeat Fonte: Dantas, 2009. A partir do comando utilizado na figura 13 é possível baixar e instalar, automaticamente, a versão mais recente do programa. Com a instalação foram criados ficheiros e alguns diretórios que podem ser vistos na figura 14. (Ferreira e Santos, 2005). 45 Figura 14: Esquema de Diretorias Fonte: Ferreira e Santos, 2005, p. 30. Como é um sistema de Alta Disponibilidade em um servidor web é necessária a instalação do servidor para prover a disponibilidade das páginas, como se trata de um projeto utilizando apenas software livres foi escolhido o apache como servidor. A instalação pode ser executada, também, direto do terminal Linux especificando a versão a ser instalada (Figura 15). Figura 15: Instalação apache versão 2 Fonte: Dantas, 2009. 4.3. CONFIGURAÇÃO O processo de configuração resume-se apenas a três arquivos, ha.cf, authkeys, haresources, que deverão, após a instalação, ser copiados para a pasta do sistema denominada de ha.d localizada em /etc/ha.d. Um quarto arquivo será configurado posteriormente o arquivo hosts, para definir quais as máquinas participarão do cluster. 4.3.1. Configuração Ha.Cf Esse arquivo é o mais importante para a configuração do heartbeat, é nele que será descrito a quantidade de nós utilizados no cluster, tipo de comunicação entre máquinas além de conter arquivos adicionais que poderão ser habilitados. É importante saber que algumas das opções descritas abaixo são realizadas em todas as versões tornando assim opções globais, e a ordenação da mesma no arquivo é de grande importância para sua execução. 46 As opções globais podem ser vista na tabela 4. Linha de configuração Debugfile Logfile Logfacility Udpport Descrição Utilizado para guardar mensagens de depuração Guarda mensagens de logs do cluster Responsável por enviar mensagens de logs para o syslog Porta utilizada para comunicação do heartbeat Tabela 4: Arquivo ha.cf Fonte: Linux-HA, 2009c. O ficheiro ha.cf, assim como todos os outros, vem com todas as linhas de configuração prédefinidas, bastando apenas apagar o símbolo à esquerda (‘#’), que indica que a linha está comentada. Ao iniciar o heartbeat a linha que contém este símbolo não será executada, as linhas configuradas deverão ser as seguintes. (tabela 5). Linha de Configuração Debugfile /var/log/ha-debug Logfile /var/log/ha-log Logfacility local0 Keepalive 2 Deadtime 10 Warntime 10 Initdead 60 Udpport 694 Bcast eth0 auto_failback on/off Node Node server01 server02 #CRM on/off Descrição Tabela 4 Tabela 4 Tabela 4 Define o intervalo de tempo entre heartbeat, aqui definido com 2 segundos Declara um nó como morto em 10 segundos sem respostas Tempo em que será incluído nos arquivos de log que um nó se encontra inacessível Tempo de inicialização para declarar o primeiro deadtime, o site do projeto sugere que esse tempo seja, no mínimo, 2 x o deadtime. Tabela 4 Indica qual a placa de rede enviará mensagens broadcast. Em caso de falha, o nó principal ao retornar as atividades pare o servidor secundário e volte a trabalhar. Nome do host 1 do cluster Nome do host 2 do cluster Usar arquivo cib.xml, responsável por mostrar quais máquinas e recursos estão trabalhando naquele instante. Tabela 5: Configuração geral arquivo ha.cf Fonte: Dantas, 2009. Observe que o ultimo arquivo configurado, CRM, está comentado não sendo utilizado no projeto, para as versões 1.X do heartbeat esse arquivo pode ser usado sem problemas, a partir 47 da versão 2.X é necessário configurar o arquivo cib.xml localizado em /var/lib/heartbeat/crm/cib.xml, para que o mesmo utilize o maior números de nós possíveis no cluster, como a implementação utiliza apenas 2 nós não será necessária sua configuração sendo desnecessária sua utilização. 4.3.2. Configuração Authkeys Segundo Ferreira e Santos (2005, p. 32), esse arquivo contém informação utilizada pelo heartbeat na autenticação dos membros do cluster. É composto por duas linhas: uma que define qual o número da chave a ser utilizado para assinalar os pacotes de saída e outra que define o método de autenticação (forma como esses pacotes vão ser assinalados). Figura 16: Arquivo Authkeys Fonte: Dantas, 2009. A primeira linha traz o método que será utilizado para a autenticação dos dados, auth 1, 2 ou 3. Existem três métodos de autenticação, CRC (Cyclic Redundancy Check), MD5 (Message Digest 5) e SHA1 (Secure Hash Algorithm 1), (Ferreira e Santos, 2005, p. 33). O método Cyclic Redundancy Check – CRC é um método inseguro, não requer chave de autenticação, destinado a redes seguras. O Message Digest 5 – MD5 esse método requer uma chave de autenticação sendo utilizado quando se que economizar o máximo em uso de CPU. O Secure Hash Algorithm 1 – SHA1 é o método mais seguro desde que você não se preocupe com o uso de CPU (LINUX-HA, 2009d). Como o projeto destina-se apenas a demonstração do funcionamento de um sistema de Alta Disponibilidade não há a necessidade de autenticar o serviço do heartbeat de modo a não utilizar os processos de uso de CPU ao máximo, por isso foi utilizado o método descrito a seguir. (Tabela 6). 48 Linha Descrição auth 1 Método de autenticação 1 1 crc Não requer chave de autenticação Tabela 6: Configuração authkeys Fonte: Dantas, 2009. Para finalizar, esse arquivo deve ter as permissões de acesso alteradas para que somente o administrador possa acessá-las, para isso execute o seguinte comando descrito na figura 17. Figura 17: Permissão de acesso authkeys Fonte: Dantas, 2009. 4.3.3. Configuração Haresources Um arquivo, também, bastante importante, é nele que será descritos os recursos a serem utilizados no cluster. Neste caso será utilizado o apache e um IP virtual usado para acesso a página web. Este ficheiro permite agrupar vários recursos num único grupo (ResourceGroup). Todos os recursos do grupo são iniciados em conjunto num único servidor. O heartbeat inicia sempre os recursos da esquerda para a direita no grupo e termina-os na ordem inversa, direita para a esquerda (FERREIRA E SANTOS, 2005, p. 32). A tabela 7 mostra a configuração realizada neste arquivo. Linha Descrição Server01 IPaddr::192.168.0.20/24/eth1:1 apache2 Recursos controlados pelo heartbeat. Tabela 7: Configuração Haresources Fonte: Dantas, 2009. Na configuração do haresources, ao inicializar o serviço ele terá o server01 como servidor principal, para isso é necessário que o auto_failback esteja como on (tabela 5), em seguida ele inicia um IP virtual 192.168.0.20 com máscara de subrede 255.255.255.0 criando uma interface virtual, como já existe um IP na interface eht1 será criada outra com interface eth1:1, na mesma faixa de IP e mesma interface de rede, e por último será iniciado o servidor web 49 apache. Quando o heartbeat parar os serviços será parado da direita para esquerda, parando primeiro o apache e depois liberando a interface virtual. Todos os arquivos do heartbeat configurados aqui deverão ser iguais em todas as máquinas participantes do cluster, podendo ser copiados ou mesmos repetindo os procedimentos anteriormente citados. 4.3.4. Configuração Hosts Esse arquivo não pertence às configurações do heartbeat mais é necessária a sua configuração para que o servidor identifique os nós participantes (figura 18). Figura 18: Configuração Hosts Fonte: Dantas, 2009. É descrito aqui os servidores que trabalharão em conjunto no cluster, informações mais detalhadas sobre os endereços IPs e virtual serão descritas no próximo capítulo. CAPÍTULO V CENÁRIO DE TESTE 51 5. CENÁRIO DE TESTE O cenário de teste foi construído no laboratório do Colégio Sete de Setembro no qual foram disponibilizadas três máquinas onde as configurações das mesmas serão descrita a seguir (tabela 8). Máquina 1 – Server01 Máquina 2 – Server02 Processador – Core 2 Duo Processador – Core 2 Duo HD – 80Gb HD – 80Gb Memória – 1Gb DDR Memória – 1Gb DDR 2 Placas de Rede – 10/100 2 Placas de Rede – 10/100 MBps MBps Tabela 8 – Máquinas utilizadas no cenário de teste Máquina 3 - Cliente Processador – Core 2 Duo HD – 80Gb Memória – 1Gb DDR 1 Placa de Rede – 10/100 MBps Fonte: Dantas, 2009. Nas duas máquinas utilizadas como servidor foram instalados os seguintes software, ubuntu 9.0415 como sistema operacional, apache 2.216 como servidor Web e o heartbeat descrito no capítulo anterior. Na máquina cliente, utilizada apenas para testes, foi usado o sistema operacional Windows juntamente a ele o internet Explorer para acesso a página Web. 5.1. CONFIGURAÇÃO DE REDE Cada servidor dispõe de duas placas de rede sendo uma para uso independente do heartbeat ficando assim em outra faixa de IP, e a outra para distribuição de IPs na rede podendo ser acessado por todos, figura 19. 15 Download http://www.ubuntu.com/GetUbuntu/download 16 Pode ser baixado e instalado como descrito no capítulo anterior ou encontrado no site www.apache.org 52 IP: 192.168.0.5 IP: 10.1.1.2 IP: 192.168.0.20 IP: 192.168.0.X IP: 10.1.1.3 IP: 192.168.0.10 Figura 19 – Implementação cenário de teste Fonte: Dantas, 2009. A figura 19 demonstra o cenário proposto, onde por meio de um cabo Crossover17, conectado a uma das placas de rede, realizará a comunicação entre os servidores, IP 10.1.1.X, o heartbeat trabalhará independente, a outra placa de rede fará a distribuição de outra faixa de IP sendo distribuída por meio de um switch IP 192.168.0.X, o cliente fará os acessos através do IP virtual configurado, fazendo com que imaginemos que o IP 192.168.0.20 é uma máquina servidora qualquer da rede e que só existe ela. 5.2. INICIANDO O SERVIÇO HEARTBEAT Depois de instalado e configurado (capítulo 4), é chegada a hora de executar os testes para isso é necessário que os serviços configurados no haresources (tabela 7) não sejam iniciados na inicialização do sistema, o IP virtual levantado não pode ser configurado em nenhum outro lugar e o apache tem que ficar parado, para isso é necessária a execução do seguinte comando. #update-rc.d heartbeat defaults #update-rc.d -f apache2 remove Isso fará com que o heartbeat seja inicializado junto com o sistema e o servidor apache fique parado sendo controlado pelo heartbeat. 17 Cabo de Rede do tipo cruzado feita para ligação entre duas máquinas. 53 O server01 deverá mostrar em sua interface de rede a configuração do IP virtual enquanto que o server02 mostrará, apenas, seu IP real, figura 20, e figura 21. Figura 20 – Server01 IP real e Virtual Fonte: Dantas, 2009. 54 Figura 21 – Server02 IP real Fonte: Dantas, 2009. Isso indica que tudo está funcionando bem, já com o IP virtual levantado, será digitado no browser na máquina cliente o endereço do IP virtual configurado e observa-se a seguinte mensagem na tela (figura 22). Figura 22 – Acessando o servidor 1 Fonte: Dantas, 2009. Isso indica que o server01 é o servidor principal e está operando corretamente, o próximo passo será a realização de testes para verificar o quanto o sistema ficará disponível. 55 5.2.1. Primeiro Teste: Parando O Heartbeat Com os serviços iniciados nos servidores (server01 e server02) foi feita a parada do heartbeat no servidor primário (server01) executando o seguinte comando. #sudo /etc/init.d/heartbeat stop Com isso pressupõe que o server02 inicie seus serviços e assuma o comando da operação (figura 23). Figura 23 – Acessando o servidor 2 Fonte: Dantas, 2009. É importante salientar que a página web de cada servidor foi modificada propositalmente para facilitar o entendimento e compreender qual dos servidores está operando naquele instante. O arquivo de debug do servidor 1 mostra o seguinte conteúdo. Figura 24 – ha-debug servidor 1 Fonte: Dantas, 2009. As linhas do arquivo dizem que os recursos foram parados, houve tentativa de envio de pacotes para o servidor 02, mas sem sucesso e por final o heartbeat completou a parada dos serviços. 56 O arquivo de degug do servidor 2 mostra o seguinte conteúdo. Figura 25 – ha-debug servidor 2 Fonte: Dantas, 2009. No servidor 2 mostra que os recursos configurados são inicializados e ao final mostra que o server01 e a placa de rede eth0 estão “mortos”. 5.2.1.1. Reiniciando o Heartbeat. Ao reinicializar o serviço no servidor 1 o heartbeat trabalhou de forma inversa, deixando o servidor 2 em standby e reativando o servidor 1 (Figura 26). Figura 26: Start Heartbeat Fonte: Dantas, 2009. 57 Configurado no ha.cf (Tabela 5) e haresources (Tabela 7) o heartbeat identificará que o servidor principal é o server01 e que ele deverá voltar às atividades caso volte a operar, e é justamente o que ocorre, o heartbeat do servidor 1 inicializa seus recursos enquanto que o servidor 2 voltará para o status standby. O heartbeat se comportou do jeito que deveria, parando os recursos no servidor principal e ativando-os no servidor secundário, e vice e versa, fazendo com que a página web opere o maior tempo possível. 5.2.2. Segundo Teste: Parando O Servidor Web Apache Como o heartbeat controla todos os serviços é notável que o mesmo se comporte de maneira satisfatória, mais se apenas o servidor apache for parado como será o comportamento do heartbeat? Para isso os dois servidores devem estar ativos (heartbeat startados), em seguida será executado a parada do apache em uma das máquinas, servidor 1 a escolhida, com o seguinte comando. #sudo /etc/init.d/apache2 stop Visto que, o servidor 1 é o que está ativo no momento e o apache não mais funcionará, a empresa correrá o risco de sofrer complicações com um sistema de Alta Disponibilidade indisponível. 58 Figura 25 – Indisponibilidade web apache Fonte: Dantas, 2009. Em um sistema como esse utilizando apenas o heartbeat para prover Alta Disponibilidade seria arriscado à implementação do mesmo em uma empresa que contém grande acesso e tráfego de informações, mais para isso existe programas que podem contornar esse tipo de falha, como é o caso do MON, software de monitoramento do heartbeat, ele pode ser configurado para monitorar os recursos configurados no haresources (Tabela 7), e parar o heartbeat em caso de falhas ocorridas em um dos arquivos configurados, ele ainda pode ser configurado para mandar e-mails para o administrador avisando dos transtornos. 5.2.3. Terceiro Teste: Retirando o Cabo Que Alimenta o Heartbeat Neste teste foi realizada a retirada do cabo que alimenta o heartbeat, cabo crossover, de modo a observar o comportamento dos servidores quando não recebem pacotes heartbeat. Com isso os serviços de cada servidor são inicializados já que os mesmos não recebem pacotes heartbeat, o servidor primário traz em sua mensagem de log a inexistência do servidor secundário juntamente com sua placa de rede (figura 26) enquanto que o servidor secundário diz o contrário e avisa que o servidor primário é quem está indisponível (figura 27). 59 Figura 26 – Log server01 Fonte: Dantas, 2009. Figura 27 – Log server02 Fonte: Dantas, 2009. Com os serviços, em ambas as máquinas, levantados o cliente continuará acessando a página Web, porém, teremos em uma mesma rede dois computadores com o mesmo endereço IP levantados, IP: 192.168.0.20, sendo inaceitável para arquitetura de redes gerando conflitos de IP e provocando a queda da página Web de instante em instante. Segundo Ferreira e Santos (2005) este tipo de problema denomina-se como a síndrome do cérebro dividido, onde todos os participantes do cluster não mais recebem mensagens heartbeat ou de pulsação. Isso ocorre devido a falhas na rede alocadas para desempenhar o papel de comunicação entre os nós. Ferreira e Santos (2005, p. 46) ainda trazem possíveis soluções para o problema: STONITH: Este método permite que o servidor principal envie uma mensagem de shutdown18 para o servidor secundário, para que este liberte os recursos adquiridos indevidamente; Ligação SLIP: Acrescentar uma ligação série entre os servidores apenas para o envio das mensagens de heartbeat. Desta forma em caso de falha da ligação ethernet existe uma ligação em backup para garantir a comunicação entre os servidores; 18 Shutdown em português quer dizer encerramento, conhecida na informática quando desliga-se o computador abruptamente 60 Broadcast: Admitindo que existe pelo menos duas ligações entre os servidores, a utilização do modo de comunicação broadcast permite que as mensagens de heartbeat sejam enviadas por várias ligações e assim, caso uma dessas ligações falhe, estas mensagens não são perdidas. 5.2.4. Quarto Teste: Desligando o Servidor Principal Tendo em vista que ao desligar o computador principal todos os seus recursos e componentes também o serão, logo os resultados obtidos é o mesmo da seção 5.2.1 onde o servidor em standby (server02) assume as responsabilidades deixando o serviço altamente disponível. CAPÍTULO VI CONSIDERAÇÕES FINAIS 62 6. CONSIDERAÇÕES FINAIS As empresas atuantes no mercado, sejam elas grandes ou pequenas, dispõem de grande número de clientes, porém as mesmas devem tratá-los de forma preferencial de modo a não causarem transtornos e aborrecimentos. A Alta Disponibilidade visa eliminar grande parte desses contratempos provocados por algum tipo de falha ou manutenções planeadas, contudo quando se faz referência a esse tipo de disponibilidade vem à mente altos custos e gastos desnecessários, mas, é perceptível a forma com que os sistemas open sources vêm ganhando cada vez mais mercado. Com base nesse principio o presente trabalho apresenta uma forma de obter Alta Disponibilidade a baixo custo mostrando possíveis falhas de um servidor web, as simulações feitas demonstram que há a possibilidade de empresas aderirem essa solução obtendo segurança nos dados e confiabilidade da informação. Pôde-se perceber em um dos testes realizados que ao parar o servidor Web apache a página ficaria indisponível decepcionando assim, todos que trabalham para dispor ao máximo os serviços de uma empresa, mas, para contornar esse tipo de falha existe software que acoplado ao heartbeat provê maior confiabilidade e segurança nas informações como é o caso do MON, respondendo assim um dos problemas de pesquisa tratado aqui. Quanto ao outro problema de pesquisa, há a possibilidade de um administrador de redes saber quando um dos hosts apresentou falha ou ficou off-line? Pode-se perceber que nos arquivos de logs existentes em cada cluster os administradores podem e devem realizar acompanhamento dos arquivos a fim de observar e detectar problemas precocemente. Para concluir essa etapa foi necessário responder mais um problema, que se refere ao modo de comunicação do heartbeat que é feita através de uma ligação direta por um cabo crosover, verificando-se que ao desconectar o mesmo os serviços dos computadores pertencentes ao cluster entram em atividade podendo gerar transtornos nos quais podem ser contornados como foi visto no capítulo anterior. Com o objetivo firmado em construir e analisar um sistema de Alta Disponibilidade dispondo apenas de software livre o projeto gerou pequenas preocupações, haja vista que o trabalho 63 com software nunca utilizados exige esforço e dedicação, porém todo empenho para construção do laboratório obteve sucesso podendo ser visto nos capítulos anteriores, com isso todo os objetivos proposto foram alcançados. Desta forma, pode-se perceber que com as tecnologias trabalhadas a implementação torna-se viável tanto em pequenas empresas quanto em empresas de grande porte. A leitura e realização das etapas descritas aqui demonstram a construção de um sistema de Alta Disponibilidade voltado apenas para detecção e recuperação de um cluster que apresente falha, para replicação de dados e para tornar o sistema cada vez mais disponível sugere-se algumas pesquisas, como: Instalação e configuração do DRBD para replicação de dados; configuração do MON, sistema de monitoramento dos serviços e recursos utilizados no heartbeat; balanceamento de cargas; e por fim, realizar testes com as ferramentas descritas para analisar o funcionamento em conjunto com o Heartbeat. 64 REFERÊNCIAS ANDERSON, T.; LEE, P. A. Fault tolerance – principles and practice. Englewood Cliffs, Prentice-Hall, 1981. ARTHUR, Luiz. Cluster de balanceamento de cargas. Disponível em: <http://www.slideshare.net/luiz_arthur/tpicos-cluster-de-balanceamento-de-carga> Acesso em: 16 de setembro de 2009. BARRAZA, Omar. Achieving 99.9998+% Storage Uptime and Availability. Dot Hill Systems Corp. Janeiro de 2002. BOTELHO, Marco Antônio Faria. Alta Disponibilidade Em Firewall Utilizando Pfsync E Carp Sobre Freebsd. Lavras – Minas Gerais – Brasil, 2006. BRANDÃO, William Losina. Computação em cluster: modelos, middlewares, arquiteturas e aplicações. Porto Alegre – RS – Brasil, 2009. CENTOS. Linux Virtual Server. 2008. Disponível em: <http://www.centos.org/docs/5/pdf/Virtual_Server_Administration.pdf> Acesso em: 06 de outubro de 2009. Dr. White Hat. Alta Disponibilidade com Baixo custo. Disponivel em: <http://drwhitehat.wordpress.com/2008/11/07/alta-disponibilidade-com-baixo-custo/> Acesso em: 13 de setembro de 2009. FERREIRA, Aurélio B. de Holanda. Mini Aurélio: o minidicionário da Língua Portuguesa. 5 ed. Rio de Janeiro: Nova Fronteira, 2001. FERREIRA, Felipa Silva, SANTOS, Nélia Catarina Gaspar Gil dos. Cluster de Alta Disponibilidade Abordagem OpenSource. Portugal: 2005. GUINDANI, Alexandre. Gestão da Continuidade dos Negócios. Disponível em: <http://www.upis.br/posgraduacao/revista_integracao/gestao_continuidade.pdf> Acesso em: 10 de setembro de 2009. HAAS, Juergen. Heartbeat. Disponível em: <http://linux.about.com/cs/linux101/g/heartbeat.htm> Acesso em: 20 de Outubro de 2009. HP. Serviceguard Cluster Configuration for HP-UX 11i or Linux Partitioned Systems. April, 2009. IBM. Disponível em: <http://www03.ibm.com/systems/power/software/aix/high_avail_network/hageo_georm.html> Acesso em: 13 de setembro de 2009. 65 IBM. High Availability Geographic Cluster for AIX. 2003. Disponível em: <http://publib.boulder.ibm.com/epubs/pdf/am8hc240.pdf > Acesso em: 16 de setembro de 2009. IKE, Fernando. Revista Linux Magazine: Dados em Risco. Maio 2009. LAKATOS, Eva Maria e MARCONI, Marina de Andrade. Fundamentos de Metodologia Científica. 4 ed. São Paulo. Atlas, 2001. LINUX-HA, Projeto High-Availability Linux. Assunto disponível em: <http://www.linuxha.org/pt_BR/HomePage_pt_BR> Acesso em 29 de Agosto de 2009a. _________. Network failover strategies. Assunto disponível em: <http://www.linuxha.org/AddressFailover> Acesso em 22 de outubro de 2009b. _________. The ha.cf file. Disponivel em: <http://www.linux-ha.org/ha.cf> Acesso em: 25 de outubro de 2009c. _________. Configuring authkeys. Disponivel em: <http://www.linux-ha.org/authkeys> Acesso em: 25 de outubro de 2009d. MICROSOFT TechNet. Conceitos sobre Disponibilidade. Disponível em: <http://technet.microsoft.com/pt-br/library/cc668492.aspx> Acesso em: 8 de setembro de 2009. MICROSOFT. Load-Balanced Cluster. Disponível em: <http://msdn.microsoft.com/enus/library/ms978730.aspx> Acesso em: 16 de setembro de 2009a. ___________. Windows Server 2008 R2 Enterprise. Disponível em: <http://www.microsoft.com/windowsserver2008/en/us/2008-ent.aspx> Acesso em: 13 de setembro de 2009b. ___________. Windows Server 2008 R2 Datacenter. Disponível em: <http://www.microsoft.com/windowsserver2008/en/us/2008-dc.aspx> Acesso em: 13 de setembro de 2009c. MORA, Gustavo Foletto. Balanceamento de carga de Servidores virtualizados. Santa Maria, RS, Brasil, 2008. NAKAI, Alan Massaru. Balanceamento de Cargas para Serviços Web Altamente Disponíveis. Unicamp SP: 2008. OLIVEIRA, Carlos Augusto Ferreira de. Cluster Beowulf uma solução de baixo custo. Salvador – BA – Brasil, 2004. OPENS. Instalando e configurando o Heartbeat. Disponível em: <http://www.opens.com.br/documentacao/HA/Portugues/heartbeat.html> Acesso em: 18 de setembro de 2009. 66 ORACLE. Internet Directory Administrator's Guide, 2004. Disponível em: <http://download.oracle.com/docs/cd/B15904_01/manage.1012/b14082/failover.htm> Acesso em: 21 de outubro de 2009. PEREIRA JÚNIOR, João Eurípedes. Alta Disponibilidade em roteadores: Um ambiente de teste. Universidade Federal do Uberlândia (UFU). Uberlândia – MG – Brasil, 2008. QUORUM. Automated Disaster Recovery for XenServer. Disponível em: <http://www.quoruminc.com/bc.html> Acesso em 13 de setembro de 2009. REIS, Cristiane de Freitas, ET al. Cluster de Alta Disponibilidade. Disponível em: <http://www.4learn.pro.br/fatec/SD/Apresentacao%201/HA/HA.pdf>. Acesso em: 30 de maio de 2009. ROBERTSON, Alan. The Evolution of The Linux-HA project. International Business Machines Corporation. Disponível em: <http://www.linux-ha.org/TechnicalPapers> Acesso em: 06 de setembro de 2009. SAMBA. Heartbeat HA Configuration. Ultima modificação em 12 de março de 2007. Disponível em: <http://wiki.samba.org/index.php/5.0:_Heartbeat_HA_Configuration> Acesso em: 27 de setembro de 2009. SANTANA, Paulo Afrânio. Delineamento de Pesquisa. Texto extraído do site do autor. Disponível em: < http://www.pauloasantanna.psc.br/p4.htm> Acesso em: 23 de Agosto de 2009. SUN MICROSYSTEMS. MySQL e DRBD Arquiteturas de Alta Disponibilidade. Uma introdução a arquiteturas de Alta Disponibilidade com MySQL, DRBD e Linux Heartbeat. Janeiro de 2009. Disponível em: <http://br.sun.com/practice/systems/mysql/pdf/DRBD_MySQL_WP_152009.pdf.> Acesso em: 16 de setembro de 2009. SUPPORT, Microsoft. Número máximo de nós com suporte em um cluster. Disponível em: <http://support.microsoft.com/kb/288778/pt-br> Acesso em: 13 de setembro de 2009. WEBER, Taisy Silva. Tolerância a falhas: conceitos e exemplos. Porto Alegre – RS – Brasil, 2001.