INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE CAMPUS SOMBRIO LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS - PDF
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE CAMPUS SOMBRIO LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS
Download "INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE CAMPUS SOMBRIO LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS"
João Gabriel de Andrade Pinhal
1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE CAMPUS SOMBRIO LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS IMPLEMENTAÇÃO DE UM AMBIENTE DE ALTA DISPONIBILIDADE COM HEARTBEAT Sombrio (SC) 2013
2 LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS IMPLEMENTAÇÃO DE UM AMBIENTE DE ALTA DISPONIBILIDADE COM HEARTBEAT Trabalho de Conclusão de Curso apresentado como requisito parcial para a obtenção do título de Tecnólogo, no Curso Superior de Tecnologia em Redes de Computadores, do Instituto Federal de Educação, Ciência e Tecnologia Catarinense - Campus Sombrio. Orientador: Prof. Me. Marco Antonio Silveira de Souza. Coorientador: Prof. Jéferson Mendonça de Limas. Sombrio (SC) 2013
3 LUÃ ALFREDO GONÇALVES RONALDO BORGES DE QUADROS IMPLEMENTAÇÃO DE UM AMBIENTE DE ALTA DISPONIBILIDADE COM HEARTBEAT Esta Produção Técnica-Científica foi julgada adequada para obtenção do título de Tecnólogo e aprovada pelo Curso Superior de Tecnologia em Redes de Computadores, do Instituto Federal de Educação, Ciência e Tecnologia Catarinense - Campus Sombrio. Área de concentração: Redes de computadores. Sombrio, 23 de fevereiro de Prof. Marco Antônio Silveira de Souza. Instituto Federal Catarinense Campus Sombrio Orientador(a) Prof. Vanderlei Freitas Junior Instituto Federal Catarinense Campus Sombrio Membro Prof. Alexssandro Cardoso Antunes Instituto Federal Catarinense Campus Sombrio Membro
4 RESUMO Este trabalho tem como objetivo implementar um cluster de alta disponibilidade com ferramentas open source. Para a realização do trabalho foi feito uma simulação em ambiente virtual utilizando-se o software de virtualização, Virtualbox. Criou-se três máquinas virtuais onde duas são os servidores e uma o cliente. Nos dois servidores instalou-se o servidor web Apache, e o Heartbeat para monitorar os servidores. Com os dois servidores funcionando, um ativo (master) e o outro em modo de espera (slave), e o cliente acessando a página de testes criada para esse fim, fez-se alguns testes com as máquinas, por exemplo, um dos testes foi a desconexão do cabo de rede virtual, simulando uma desconexão real, o que pode acontecer por acidente. Outro teste foi o fechamento da janela do Virtualbox onde estava funcionando o servidor ativo, simulando uma queima de fonte ou de placa de rede. Em todos os testes foi possível constatar que o servidor em modo de espera passava a operar quase que instantaneamente, o que se comprova com o comando ping, ao desligar o servidor ativo, o cliente perde dez segundos de conexão e volta a funcionar novamente. Como comprovou-se com os testes feitos, o Heartbeat atende as necessidades de quem precisa de alta disponibilidade de serviços de rede. Palavras-chave: Cluster. Alta disponibilidade. Heartbeat. Apache.
5 ABSTRACT This paper aims to implement a high availability cluster with open source tools. To conduct the study was done in a simulated virtual environment using virtualization software, VirtualBox. It created three virtual machines are those where two servers and a client. In both servers was installed the Apache web server, and Heartbeat to monitor the servers. With the two servers running, one active (master) and the other in standby (slave), and the client accessing the test page created for this purpose, made up some tests with the machines, for example, one of the tests was disconnect the network cable virtual simulating a real disconnect, which can happen by accident. Another test was closing the window where Virtualbox was running the live server, simulating a burning source or network card. In all tests, we determined that the standby server operating spent almost instantly, as evidenced with the ping command to shut down the active server, the client loses connection ten seconds and back to work again. As demonstrated with the tests, Heartbeat meets the needs of those who need high availability of network services. Key words: Cluster. High availability. Heartbeat. Apache.
6 LISTA DE FIGURAS Figura 1: Cartão perfurado...11 Figura 2: Rede ponto a ponto...13 Figura 3: Rede Cliente/Servidor...14 Figura 4: Barramento...15 Figura 5: Anel...15 Figura 6: Estrela...16 Figura 7: Market share...21 Figura 8: Cenário...24 Figura 9: Virtual Host...27 Figura 10: Hosts...28 Figura 11: Ha.cf...29 Figura 12: Authkeys...30 Figura 13: Haresources...31 Figura 14: Ifconfig...32 Figura 15: Sysv-rc-conf...33 Figura 16: Espelha.sh...34 Figura 17: Crontab...35 Figura 18: Rc.local...36 Figura 19: Comando ping...37 Figura 20: Heartbeat no servidor sv Figura 21: Estatísticas do comando ping para queima de placa de rede...38 Figura 22: Estatísticas do comando ping para queima de Fonte...39 LISTA DE ABREVIATURAS E SIGLAS
7 AMD - Advanced Micro Devices ARPANet - The Advanced Research Projects Agency Network CD - Compact Disc CRC - Cyclic Redundancy Check DFSG - Debian Free Software Guidelines DNS - Domain Name Service DRDB - Duplicated Redundant Block Device DVD - Digital Versatile Disc GB - Gigabytes HA - High Availability HASP - Houston Automatic Spooling Priority HD - Hard Disk HP - Hewlett-Packard HPC - High Performance Computing HTML - HyperText Markup Language HTTPD - Hypertext Transfer Protocol Daemon IBM - International Business Machines ITU - International Telecommunications Union JES - Job Entry System LAN - Local Area Network MAC - Media Access Control MAN - Metropolitan Area Network MB - Megabytes MD5 - Message Digest 5 NAT - Network Address Translation NCSA - National Center for Supercomputing Applications OSI - Open Source Initiative RAM - Random Access Memory SHA1 - Secure Hash Algorithm 1 SSH - Secure Shell TCP/IP - Transmission Control Protocol/Internet Protocol WAN - Wide Area Network
8 SUMÁRIO 1 INTRODUÇÃO OBJETIVOS Objetivos gerais Objetivos específicos REFERENCIAL TEÓRICO O uso das redes de computadores Topologias das redes Tipos de redes Sistemas operacionais Virtualização Open source Serviços de rede Cluster MATERIAIS E MÉTODOS RESULTADOS E DISCUSSÃO CONSIDERAÇÕES FINAIS...40 REFERÊNCIAS...42
9 8 1 INTRODUÇÃO Partindo do surgimento das redes de computadores nos anos 60, segundo Morimoto (2010) até se tornar a realidade diária de milhões de pessoas em 1996 Tanenbaum (2003) e chegar em 2011 passando dos 2 bilhões de pessoas conectadas a internet, estatística informada no artigo Internet (2013), atualmente fica difícil imaginar um ambiente onde o computador não esteja inserido, seja no trabalho, na escola, em casa. Os usuários esperam que seus sistemas estejam sempre funcionando. Um portal na internet, sites de jogos on line, sites de notícias, sites de comércio eletrônico entre outros precisam estar sempre funcionando ou correm o risco de perder seus usuários para outros sites. Como garantir que os serviços oferecidos em rede estejam sempre disponíveis? De acordo com Pitanga (2008), um cluster de alta disponibilidade visa exatamente garantir que os serviços oferecidos em rede não parem, ou que se ficar indisponível, seja pelo menor tempo possível. Desde que os computadores começaram a ser ligados em rede se pensou na criação de clusters para melhorar o aproveitamento dos recursos que as vezes eram mal utilizados. A ARPAnet (The Advanced Research Projects Agency Network ) utilizou os programas Creeper e Reaper-ran para testes com computação distribuída. Pode-se dizer que eles vislumbravam que as aplicações se moveriam de um computador para outro (DANTAS, 2005). Existe no mercado algumas soluções que tentam garantir a disponibilidade dos serviços oferecidos em rede, como o HACMP (High Availabylity Cluster Multi- Processing), que é proprietária da IBM, ou então a Serviceguard da HP (Hewlett- Packard), ou ainda a da SUN, SPARCcluster (Scalable Processor Architetcure Cluster) (FERREIRA; SANTOS, 2005). Estes são apenas alguns exemplos. No caso que será exposto neste artigo, toda a solução será baseada em software livre. Este trabalho tem como objetivo implementar um cluster de alta disponibilidade utilizando-se ferramentas open source, onde servidores oferecerão serviços de rede aos usuários. O sistema será composto por dois computadores interligados por rede ethernet, sendo que um equipamento estará ativo oferecendo serviço de web e o outro equipamento será um espelho do primeiro, de forma que se
10 9 o servidor principal ficar inativo o outro assumirá as suas funções oferecendo o serviço até que o outro servidor seja reestabelecido. O presente trabalho esta organizado da seguinte forma: no capítulo 2 são apresentados os objetivos, sendo o objetivo específico a implementação do cluster e os objetivos gerais que são o estudo da ferramenta Heartbeat, a instalação e configuração dos servidores, a instalação e configuração do serviço de rede que será oferecido e a instalação e configuração das ferramentas de monitoramento do cluster. No capítulo 3 é apresentado o referencial teórico sobre as redes de computadores, clusters e os softwares utilizados, e ainda informações que corroboram com a importância do que é discutido neste trabalho. Nó capítulo 4 é apresentado de que forma foi realizado o trabalho, neste capítulo é descrito as configurações que foram feitas em cada uma das máquinas, seus arquivos de configuração e de que forma foram feitos os testes. O capítulo 5 trás os resultados e discussões, e finalmente o capítulo 6 com as considerações finais além de ideias para trabalhos futuros.
11 10 2 OBJETIVOS Abaixo a exposição dos objetivos geral e específicos. 2.1 Objetivos gerais Implementar um ambiente de alta disponibilidade com Heartbeat. 2.2 Objetivos específicos Realizar uma revisão bibliográfica sobre alta disponibilidade; Estudar a ferramenta Heartbeat; Instalar o sistema operacional Ubuntu Server 12.04; Instalar e configurar Apache; Instalar e configurar o Heartbeat e o Rsync; Validar a disponibilidade do sistema.
12 11 3 REFERENCIAL TEÓRICO Para que se tenha uma visão mais ampla do desenvolvimento das redes de computadores é preciso voltar ao passado. Morimoto (2010) diz que a criação das primeiras redes de computadores foi durante os anos 60. Antes disso, para transportar dados de uma máquina para outra, utilizava-se cartões perfurados, o que era um sistema nada prático. Na figura 1, um exemplo destes cartões: Figura 1: Cartão perfurado. Fonte: Wcrivelini, A partir de 1969 começou a ser desenvolvida a Arpanet que acabou dando origem a Internet dos dias atuais. Com apenas quatro máquinas a Arpanet entrou em funcionamento em dezembro de 69. A rede que tinha sido criada para testes, se desenvolveu muito rápido e em 1973 já estavam conectadas trinta instituições, incluindo universidades e instituições militares (MORIMOTO, 2012). As primeiras máquinas eram identificadas na rede por nomes, sendo que os nomes das quatro primeiras máquinas eram: SRI, UCLA, UCSB e UTAH. Nesta época eram criadas listas dos hosts, conforme se conectavam a rede. Com o crescimento da rede, conforme mais máquinas foram sendo conectadas, foi ficando mais difícil manter e distribuir estas listas, até que em 1974 surge o TCP/IP (Transmission Control Protocol/Internet Protocol), conjunto de protocolos usados até hoje na internet. Mais tarde em 1980, passou a ser usado nomes de domínio, dando
13 12 origem ao DNS (Domain Name Service), também usado atualmente (MORIMOTO, 2012). Estes primeiros computadores eram grandes máquinas que ficavam em algumas universidades dos Estados Unidos e foram colocadas em rede, sendo usadas linhas telefônicas para fazer as conexões. Paralelamente ao que acontecia nas universidades, em 1973 a Xerox fez o primeiro teste de transmissão de dados, utilizando o padrão ethernet, fazendo as conexões através de cabos coaxiais e que permitia a conexão de até 256 computadores. É importante lembrar que nesta época não existiam ainda computadores pessoais, interfaces gráficas, etc, o lançamento do primeiro PC só aconteceu em 1981 (MORIMOTO, 2012). A Arpanet deu origem a internet como conhecemos hoje, e o ethernet acabou se tornando um padrão utilizado no mundo todo para a criação de redes locais de computadores. Atualmente temos até geladeiras e micro-ondas que se conectam a internet (MORIMOTO, 2012). 3.1 O uso das redes de computadores Conforme Tanenbaum (2003) as redes de computadores eram uma curiosidade acadêmica em 1980 e era a realidade diária de milhões de pessoas em O site da ITU (International Telecommunications Union) trás informações de que em 2011 passamos dos 2 bilhões de pessoas conectadas a internet (INTERNET, 2013). As redes de computadores estão se tornando imprescindíveis nos mais diversos setores da sociedade e inclusive nas residências. Como salienta Torres (2001), quando se tem mais de um computador seja em casa ou no escritório, faz todo o sentido ter uma rede. Uma rede local permite o compartilhamento de periféricos, como impressora, scanner, driver de CD ou DVD, permite o compartilhamento de arquivos e também a conexão com a internet. É muito mais prático e rápido transferir documentos através da rede do que gravar em um CD, DVD ou mesmo pendrive, para depois copiar em outra máquina. Ainda segundo Torres (2001), as redes de computadores podem ser dividas em duas, sendo elas ponto a ponto e cliente/servidor. Nas redes ponto a ponto não
14 13 existe um servidor dedicado oferecendo serviços aos nós, más cada usuário pode compartilhar ou não, arquivos, impressoras, drivers, etc. Dessa forma cada máquina as vezes age como servidor e as vezes como cliente. As questões de segurança são mais precárias neste tipo de rede e por isso ela é indicada apenas para pequenas redes com 10 ou menos computadores e onde a segurança não é o fator mais importante. A rede ponto a ponto tem um custo menor, é mais fácil de configurar, porém o desempenho da rede é menor que nas redes cliente/servidor, e conforme a rede aumenta, pior é o desempenho. Na figura 2 abaixo a representação de uma rede ponto a ponto: Figura 2: Rede ponto a ponto. Fonte: Os autores, As redes do tipo cliente/servidor diferentemente das redes ponto a ponto tem uma administração e configuração centralizada, por isso é muito mais segura (TORRES, 2001). Empresas com 10 ou mais computadores ou onde a segurança é importante é recomendável a utilização deste tipo de rede. Existem vários serviços que podem ser oferecidos pelos servidores. Servidores de arquivos, servidor de impressão, servidor web, etc. Todos os serviços podem estar instalados em uma máquina ou em máquinas diferentes. Os servidores podem ainda ser dedicados ou não. Ou seja uma máquina que não é utilizada para uso comum, ou uma máquina que além de oferecer os serviços, ainda é utilizada para outros trabalhos, o que é comum em pequenas empresas. Porém um servidor dedicado é mais seguro e traz
15 14 menos problemas para a rede como um todo. Redes do tipo cliente/servidor precisam de administradores de rede que configuram o que cada usuário pode ou não acessar no servidor. Além disso um servidor não precisa necessariamente ser um computador. Um servidor pode ser uma máquina construída especificamente para este fim. Na figura 3 um exemplo de rede cliente/servidor (TORRES, 2001). Figura 3: Rede Cliente/Servidor. Fonte: Os autores, Topologias das redes As redes de computadores também podem ser classificadas de acordo com a topologia. A topologia diz respeito a distribuição física dos computadores e como eles estão interligados. Existem várias topologias de rede, entre elas as principais são: barramento, anel, estrela (MORAES, 2010). A topologia em barramento foi uma das primeiras topologias de rede e foi uma das que mais prosperou devido a facilidade de implementação e expansão (MORAES, 2010). Todas as máquinas são conectadas a um cabo, que é o meio de transmissão. Nesta topologia as estações precisam escutar o meio antes de transmitir, já que apenas uma máquina pode transmitir. Se duas transmitirem ao mesmo tempo pode haver colisão de pacotes. Quanto maior o número de máquinas, pior o desempenho da rede. A figura 4 ilustra uma topologia em barramento:
16 15 Figura 4: Barramento. Fonte: Os autores, Na Topologia em anel, os computadores ficam conectados em um caminho fechado, como se formassem um circulo. Cada máquina só pode usar o meio se tiver autorização que é chamada de token. Quando uma máquina recebe o token, se ela tiver algo para transmitir, ela transmite, senão passa o token para a próxima máquina. As mensagens normalmente circulam em um só sentido, por isso não existe o problema de colisão de pacotes. Porém se ninguém estiver transmitindo e uma máquina quiser transmitir, ela terá que espera o token (MORAES, 2010). Na figura 5 um exemplo de topologia em anel: Figura 5: Anel. Fonte: Os autores, Ainda, segundo Moraes (2010) as redes em topologia estrela são aquelas em
17 16 que todos os dispositivos da rede convergem para um ponto central, ou seja, um concentrador. Esse concentrador é um hardware, que pode ser um hub, switch ou um roteador. Todas as máquinas são conectadas diretamente no concentrador, portanto se houver um problema com o concentrador, toda a rede fica inoperante. Por outro lado se uma das máquinas deixar de funcionar, não compromete a rede que pode continuar sendo usada normalmente. Um ponto limitante na topologia em estrela é que o número de máquinas fica restrito ao número de portas do concentrador. Se houver necessidade de mais portas, o concentrador terá que ser trocado por um modelo com mais portas ou então outro concentrador poderá ser conectado a esse de forma a aumentar o número de portas. Atualmente, esta é a topologia mais usada, pois a sua implementação é fácil assim como sua configuração, além de ter um custo baixo e alta disponibilidade de produtos no mercado. Na figura 6 tem-se a representação de uma rede com topologia em estrela: Figura 6: Estrela. Fonte: Os autores, Além das topologias citadas acima, que são as mais utilizadas, outras topologias também são conhecidas, como: topologia híbrida, que mistura características de duas topologias, por exemplo, anel estrela ou barramento estrela. E ainda há outros tipos. Topologia em árvore, topologia em malha.
18 Tipos de redes As redes também podem ser classificadas de acordo com seu tamanho, ou seja, área de abrangência. Dos quais as mais comum são: LAN (Local Area Network), MAN (Metropolitan Area Network) e WAN (Wide Area Network). A definição dessas redes segundo Tanenbaum (2003), serão descritas a seguir: Redes LAN são pequenas redes, a maioria de uso privado, que interligam estações dentro de pequenas distâncias. São muito utilizadas para a conexão de computadores pessoais e estações de trabalho, permitindo o compartilhamento de recursos e informações. Seu tamanho é restrito, o que permite o conhecimento do seu tempo de transmissão e a detecção de falhas com antecedência, permitindo assim um gerenciamento simplificado da rede. Redes MAN ou redes metropolitanas são praticamente uma versão ampliada das redes locais, pois utilizam tecnologias semelhantes. As MAN s podem ser formadas por escritórios vizinhos ou abranger uma cidade inteira sendo ou redes públicas ou redes privadas. Tanenbaum (2003) cita como exemplo de MAN as redes de TV e internet a cabo, que existem na maioria das grandes cidades. WAN ou redes geograficamente distribuídas são formadas por grandes áreas geográficas que abrangem países e continentes. São formadas por um conjunto de hosts, conectados através de uma sub-rede. Esses hosts são computadores pessoais e a sub-rede é formada por operadoras telefônicas e provedoras de internet. 3.4 Sistemas operacionais Um sistema operacional funciona mais ou menos como os demais softwares instalados em um computador, ou seja, são processos sendo executados pelo processador. Sendo que é o sistema operacional que controla o hardware da máquina, compartilhando os recursos entre os diversos processos que estiverem sendo executados, além dos dispositivos de entrada e saída. (MACHADO, MAIA, 2007). Tanto o UNIX e suas variantes como o Linux e o Windows são sistemas
19 18 operacionais de rede, pois ambos trazem nativamente recursos que permitem interligação em redes e acesso a recursos remotos (COLOURIS et al, 2007). A Ubuntu Foundation é uma organização que mantém o sistema operacional Ubuntu. Sendo este um dos sistemas operacionais mais popular atualmente. O Ubuntu é uma distribuição Linux baseada no Debian que é uma das distribuições mais antigas ainda ativa (PETERSEN, 2012). Conforme consta no site do desenvolvedor (UBUNTU, 2013), Ubuntu é uma palavra africana antiga e significa humanidade para os outros ou eu sou o que sou pelo que nós somos. A ideia do idealizador do Ubuntu, Mark Shuttleworth é que o Ubuntu fosse um sistema operacional para desktop fácil de usar. A instalação da versão server do Ubuntu, que é uma versão voltada para servidores trás uma coleção de servidores como, servidor web e FTP (File Transfer Protocol)( PETERSEN, 2012).
20 Virtualização A virtualização iniciou-se com mainframes com a intenção de reduzir custos e hoje oferece tantas possibilidades que se tornou um novo campo na área de tecnologia (SIQUEIRA, 2008). Com o poder de processamento dos computadores atuais a virtualização foi introduzida também nos desktops permitindo rodar um sistema operacional completo dentro de outro. Com a virtualização eliminou-se a subutilização em servidores e data centers, virtualizando-se sistemas, ferramentas e aplicações consegue-se utilizar melhor os recursos de hardware (SIQUEIRA, 2008). Existem diversos softwares disponíveis para virtualização em desktops, como Xen, VMWare e VirtualBox (SIQUEIRA, 2008). Virtualbox é um software de virtualização de propriedade da Oracle que é disponibilizado para as plataformas Intel e AMD e é compatível com os sistemas operacionais Windows, MAC, Linux e Solaris. Com o Virtualbox é possível criar máquinas virtuais completas e instalar sistemas operacionais diferente ou não do sistema operacional hospedeiro. Pode-se executar vários sistemas operacionais simultaneamente, tendo-se como limite o espaço disponível no HD (Hard Disk) e memória (DOCUMENTATION, 2012). 3.5 Open source A OSI (Open Source Initiative) é uma fundação sem fins lucrativos que surgiu em 1998, com o intuito de defender o desenvolvimento colaborativo de software. O termo open source foi criado pela organização neste mesmo ano, quando da liberação do código fonte do navegador Netscape (ABOUT, 2012). As definições do open source são derivadas do DFSG (Debian Free Software Guidelines) que falam do desenvolvimento e distribuição de software livre. Para ser considerado open source ou software livre o software precisa preencher alguns requisitos como: não pode haver restrições de partes do código, não deve haver restrições contra pessoas ou áreas de trabalho, o software deve ser disponibilizado com o código fonte completo, o código pode ser modificado por qualquer pessoa,
21 20 entre outros (ABOUT, 2012). 3.6 Serviços de rede Uma rede permite que diversos usuários utilizem recursos compartilhados. Em essência, um programa de cliente faz solicitações a partir de outro processo, que em geral está executando em outro sistema. (SCRIMGER, et. al. 2002, p.464). Os servidores normalmente são computadores com mais recursos do que computadores utilizados por clientes e mantidos em locais protegidos onde apenas os administradores tem acesso (TANENBAUM, 2011). Pode-se fazer uma divisão dos servidores em, servidores de rede local e servidores de internet. Servidor de arquivos e servidor de impressão são exemplos de servidores de rede local. Servidor web é um exemplo de servidor de internet (MORIMOTO, 2011). Os servidores web são peças fundamentais na infraestrutura da internet. Nestes servidores ficam armazenadas todas as páginas da internet, inclusive as páginas dos motores de busca e aplicativos web como o webmail (MORIMOTO, 2011). O Apache, segundo Marcelo (2006), é o servidor web mais conhecido e utilizado no mundo. O projeto do Apache é mantido pela Apache Software Foundation. É um projeto de código aberto e é desenvolvido de forma colaborativa por voluntários dos mais diversos países. Eles se comunicam através da internet, fazendo correções e implementando melhorias no código. O servidor web Apache surgiu em Usando como base o servidor web NCSA (National Center of Supercomputing Applications) httpd (Hypertext Transfer Protocol Daemon)1.3, que na época era o mais famoso, mas que havia sido descontinuado em Apenas um ano após seu lançamento o Apache ultrapassou o NCSA se tornando o servidor web mais utilizado na internet, feito que se mantém até hoje (Apache, 2012). No site Netcraft (2013) que mantém um ranking de servidores web no mundo, o Apache aparece em primeiro lugar em janeiro de 2013 com 55,26% dos servidores, em segundo a Microsoft com 16,93%, em terceiro a Nginx com 12,64% e em quarto o Google com 3,58%, como pode ser visto na figura 7:
22 21 Figura 7: Market share. Fonte: Netcraft, O SSH (Secure Shell) pode ser visto de várias formas. Dwived (2004) diz que o SSH pode ser descrito com protocolo, uma ferramenta de encriptação, uma aplicação cliente/servidor. O SSH é um sistema de segurança baseado em software com uma arquitetura cliente/servidor. Dados enviados pela rede são criptografados na origem e descriptografados pelo SSH no destino de forma transparente para o usuário (BARRETT, SILVERMAN, BYRNES, 2005). Com ele é possível fazer acesso remoto seguro e também transferir arquivos. O SSH pode ainda ser usado em conjunto com outros softwares como o Rsync, criando uma espécie de túnel para garantir a segurança na transferência de dados (MORIMOTO, 2011). O projeto OpenBSD desenvolve o OpenSSH que é uma versão de código aberto do SSH (OPENSSH, 2012). O Rsync é um ótimo programa para quando há necessidade de se programar backups. Com ele é possível sincronizar dados de dois diretórios na mesma máquina ou remotamente transferindo apenas as modificações. O Rsync faz comparações entre arquivos e inclusive de seu conteúdo, transferindo apenas as modificações dentro deles. Com o Rsync pode-se facilmente realizar backup
23 22 incremental de um diretório ou até de partições inteiras (MORIMOTO, 2011). No site do projeto Rsync (2013), estão listadas algumas das funcionalidades do Rsync, entre os quais o Rsync pode atualizar toda uma árvore de diretórios, pode-se configurá-lo para manter links simbólicos e hard links, preservar as propriedades e permissões dos arquivos, trabalha com pipeline interno, e ainda tem a funcionalidade do Rsync anônimo, que é de grande utilidade quando se quer fazer espelhamento (RSYNC, 2013). Heartbeat é uma ferramenta open source normalmente utilizadas em clusters de alta disponibilidade. O Heartbeat é uma solução aberta para cluster de alta disponibilidade desenvolvido pelo projeto Linux-HA, sendo uma da mais utilizadas. O Heartbeat monitora os servidores do cluster para permitir que um servidor assuma caso o outro deixe de operar. A comunicação do Heartbeat pode ser feita através de cabos UTP sobre IPv4 ou ainda através de cabos seriais. O Heartbeat deve ser instalado e configurado nos dois lados, quando por qualquer motivo, se um servidor ficar inoperante o Heartbeat inicializa os serviços no outro servidor (LINUX-HA, 2011). 3.7 Cluster Quando dois ou mais computadores são ligados em rede para a execução de operações em conjunto, tem-se um cluster (PITANGA, 2008). Foi a IBM (International Business Machines) quem começou a explorar este sistema nos anos 60 com duas de suas máquinas. HASP (Houston Automatic Spooling Priority) e JES (Job Entry System), que permitiram a interligação entre mainframes a um custo moderado. A computação em cluster ganhou força nos anos 80 principalmente pela construção de processadores de alto desempenho, redes de comunicação de baixa latência e padronização de ferramentas para computação paralela (PITANGA, 2008). Ainda segundo Pitanga (2008), os clusters podem ser divididos em duas categorias básicas, a saber, os de alta disponibilidade e de alto desempenho de computação. Cluster de alta disponibilidade (HA - High Availability). Este tipo de cluster visa garantir que um serviço que é oferecido na rede esteja sempre disponível, ou quase,
24 23 já que segundo Pitanga (2008), não é possível dar uma garantia total de que o sistema nunca vai falhar. Atualmente com os computadores invadindo todos os ambientes, e com usuários cada vez mais conectados, um cluster de alta disponibilidade torna-se uma ferramenta importante e imprescindível em alguns ambientes. Neste tipo de cluster os equipamentos são interconectados e ficam monitorando um ao outro de forma que qualquer um que parar, o outro automaticamente assumirá a sua função, de forma a manter o serviço disponível pelo maior tempo possível. Cluster de alto desempenho de computação (HPC High Performance Computing). No cluster de alto desempenho, o objetivo é interconectar equipamentos para conseguir um maior poder de processamento. Com isso o cluster se torna uma boa opção para universidades e pequenas empresas que não podem investir em um supercomputador. As aplicações modernas também exigem cada vez mais poder de processamento, e com o alto custo dos supercomputadores, a opção de paralelizar as aplicações em hardware comum se torna bastante atrativo (PITANGA, 2008). Cluster de balanceamento de carga (LB Load Balance). Um cluster balanceamento de carga é utilizado quando muitos usuários precisam acessar o mesmo recurso. Dois ou mais computadores são interconectados e todos dispõem dos recursos que serão acessados. Um software faz o monitoramento e distribuiu as requisições dos usuários entre os computadores que fazem parte do cluster (GORINO, 2006).
25 24 4 MATERIAIS E MÉTODOS O cenário montado é ilustrado na figura 8, sendo que para a realização dos testes foi usado um ambiente totalmente virtual, de forma que a figura do switch desaparece, pois ao se configurar uma interface de rede no Virtualbox escolhendose o modo de rede interna os computadores se reconhecem como que estando na mesma rede: Figura 8: Cenário. Fonte: Os autores, O cenário montado são dois servidores, e um cliente. Os dois servidores e o cliente são conectados estando todos na mesma rede. Por ser um ambiente virtualizado, as máquinas são configuradas através da interface de rede interna do Virtualbox para estar na mesma rede e podem se comunicar sem a presença do switch. As configurações refente as máquinas foram deixadas os padrões oferecidos
26 25 pelo Virtualbox na hora da criação das máquinas. Tanto os servidores, como a máquina cliente ficaram com 512MB de memória RAM (Random Access Memory) e HD de 8GB. Nos dois servidores foram instalado o SSH, o Rsync, o Heartbeat e o servidor web Apache. Quando os servidores são ligados um dos servidores escolhidos será o principal (master) e o outro será o secundário (slave) e ficará em modo de espera, sendo que quando o servidor principal ficar inoperante através das simulações que serão feitas, o segundo servidor assumirá o serviço. Os softwares instalados tem cada um a sua função, que serão explicitados a seguir: o SSH é requisito para o funcionamento do Rsync, que por sua vez fará a replicação de dados entre os servidores para manter os dois atualizados independente de qual esteja atuando como servidor principal no momento. O servidor web Apache será o serviço oferecido na rede e o Heartbeat irá monitorar a disponibilidade do Apache de forma que se o servidor que estiver ativo, por algum motivo deixar de oferecer o serviço, o Heartbeat que estará instalado no servidor secundário inicializará o Apache, mantendo assim o serviço disponível. Para a execução do trabalho foram instaladas três máquinas virtuais com o Virtualbox. O sistema operacional utilizado em duas das máquinas foi o Ubuntu server Estas duas máquinas formam o cluster, e na terceira máquina foi instalado o Ubuntu 12.04, versão para desktop, que será o cliente para fazer os testes. O nome de um dos servidores é sv1 e o outro sv2. Depois da instalação do sistema operacional o primeiro passo é configurar as placas de rede. De inicio foi utilizado duas placas de rede, uma em modo NAT (Network Address Translation) para baixar os pacotes que seriam instalado e a outra como rede interna para ser usado na rede local. A placa de rede em modo NAT não necessita de nenhuma configuração. Já para as placas da rede local foi utilizados os IPs para o servidor sv1 e para o servidor sv2, ambos com máscara de rede , além disso foi utilizado o IP para o cliente também com a mesma máscara. Todas essas informações constam no quadro 1, para melhor compreenção.
27 26 Quadro 1 Configurações dos computadores. Computador Nome Endereço IP Máscara de subrede Servidor 1 sv Servidor 2 sv Cliente cliente Fonte: Os autores, O SSH se faz necessário para a utilização do Rsync, depois de configurar a rede foi instalado o OpenSSH, foi gerado um par de chaves e foi configurado para permitir o acesso sem senha, senão seria necessário digitar uma senha toda vez que o Heartbeat fosse acessar o outro servidor e isso inviabilizaria o trabalho do Heartbeat. Depois foi a vez de instalar o Apache que foi o serviço escolhido para ser oferecido na rede. A seguir os passos que foram seguidos para colocar o servidor web em operação. O serviço web foi configurado nos dois servidores, foi criado um diretório chamado website1 com o seguinte comando: mkdir /var/www/website1 Dentro do diretório website1 foram criados outros dois diretórios, public_html e logs, com os seguintes comandos: mkdir /var/www/website1/public_html mkdir /var/www/website/logs Sendo o public_html, o diretório para a publicação do site e o diretório logs para armazenar os logs. Depois, dentro do diretório /etc/apache2/sites-available/ foi criado o arquivo website1 e foi editado conforme a figura 9:
28 27 Figura 9: Virtual Host. Fonte: Os autores, O diretório sites-available guarda as configurações dos domínios hospedados em um mesmo servidor. Foi depois criada uma página em HTML (HyperText Markup Language) para servir de teste. Antes de instalação do Heartbeat foi configurado o arquivo /etc/hosts nos dois servidores sendo adicionadas as linhas abaixo: sv sv2 Ficando como mostrado na figura 10:
29 28 Figura 10: Hosts. Fonte: Os autores, O próximo passo é a instalação do Heartbeat em si. A instalação é simples, bastando usar o comando apt-get, como mostrado na linha abaixo: $ sudo apt-get install heartbeat Após a instalação do Heartbeat, três arquivos devem ser configurados, todos ficam no diretório /etc/ha.d/. São eles: o ha.cf, authkeys e o haresources. O primeiro deles, o ha.cf foi configurado como na figura 11:
30 29 Figura 11: Ha.cf. Fonte: Os autores, A descrição dos parâmetros é a seguinte: logfile /var/log/ha-log Neste arquivo fica armazenado as mensagens de log do Heartbeat. debugfile /var/log/ha-log Neste arquivo são armazenados os logs de depuração do heartbeat; keeppalive 2 Quando é inicializado o Heartbeat, ele fica testando continuamente o servidor secundário enviando uma mensagem e aguardando uma resposta, essas mensagens recebem o nome de heartbeat. Aqui se define o tempo em segundos entre um heartbeat e outro; deadtime 10 Aqui é configurado o tempo que o Heartbeat deve esperar por uma resposta do outro servidor; udp eth0 Através desta interface o Heartbeat fará a comunicação com os outros nós da rede; node sv1 Nome do servidor 1; node sv2 Nome do servidor 2. A ordem deve ser seguida. auto_failback off Este parâmetro define se em caso de falha no servidor principal, quando ele for reestabelecido, deve parar o servidor secundário e reassumir o serviço. Se estiver configurado como off o servidor primário não
31 30 reassume o serviço quando for reestabelecido (LINUX-HA, 2013). A configuração deste arquivo é igual nos dois servidores. O segundo arquivo a ser configurado é o authkeys, e também é igual nos dois servidores, a configuração do authkeys é como o da figura 12: Figura 12: Authkeys. Fonte: Os autores, Este é o arquivo de autenticação do Heartbeat. O dono deste arquivo tem que ser o root e as permissões devem ser 600, por questões de segurança, já que com estas permissões apenas o administrador terá acesso ao aquivo. O linux trabalha com um sistema de permissões onde pode-se configurar permissões para o dono do arquivo, para o grupo e para outros usuários. As permissões vão de 0, que não dá nenhuma permissão, até 7 que dá permissão totalsobre o arquivo ou diretório. No caso acima o dono tem permissão 6, o que significa que o dono pode ler e escrever, o grupo tem permissão 0 e os outros tem permissão 0. O sistema de permissão funciona como ilustrado no quadro 2: Quadro 2 - Permissões no Linux Permissão x 1 -w- 2 -wx 3 r-- 4 r-x 5 rw- 6 Número rwx 7 Fonte: Adaptado de Morimoto, 2009.
32 31 auth 1 Esta linha define o número de autenticação que será usado, normalmente é usado apenas um. Exitem três tipos possíveis para o Heartbeat, são eles: CRC (Cyclic Redundancy Check), MD5 (Message Digest 5), e SHA1 (Secure Hash Algorithm 1). Com o CRC não se utiliza chave de autenticação, portanto não é seguro e deve ser utilizado em casos específicos. O SHA1 é o método mais seguro (LINUX-HA, 2013). Aqui está sendo usado autenticação md5 e a senha pode ser qualquer texto, que neste caso foi escrito teste. O último arquivo do Heartbeat a ser configurado é o haresources, os parâmetros configurados são mostrados na figura 13: Figura 13: Haresources. Fonte: Os autores, Os parâmetros aplicados aqui são: sv1 é o nome do servidor primário é o que o Heartbeat vai inicializar o apache quando for iniciado. O IP é chamado de IP flutuante, IP compartilhado ou ainda IP virtual. Ele deve estar na mesma rede que os IPs das placas reais e é este IP que será anunciado na rede. E por fim apache2 é o serviço que o Heartbeat irá monitorar. Este IP fica associado ao Apache. Este arquivo é igual nos dois servidores. Este arquivo informa ao Heartbeat que este é o IP que deve ser anunciado na rede, quando o servidor principal parar de funcionar o Heartbeat que está trabalhando no servidor secundário assume este mesmo IP para continuar disponibilizando o Apache. Se houvessem outros serviços sendo oferecidos na rede, seriam adicionados neste mesmo arquivo de configuração. Utilizando-se o comando ifconfig é possível verificar as configurações de rede e perceber como é criada uma interface virtual (eth0:0) que é a interface que será usada pelo Heartbeat.
33 32 Figura 14: Ifconfig. Fonte: Os autores, O Apache foi retirado da inicialização do servidor porque a partir destas configurações é o Heartbeat quem fica responsável pela inicialização do Apache. O Sysv-rc-conf é um utilitário onde se pode configurar o que será inicializado com o sistema.
34 33 Figura 15: Sysv-rc-conf Fonte: Os autores, Foi criado um script com o nome espelha.sh que será usado pelo Rsync para fazer a sincronização dos dados do servidor web. A figura 16 mostra os parâmetros do script:
35 34 Figura 16: Espelha.sh Fonte: Os autores A primeira linha informa ao Rsync para copiar o diretório /var/www/website1 no servidor local e adicionar no /var/www do servidor remoto , excluindo o conteúdo que estiver lá. Os parâmetros -aup e --delete que aparecem nas linhas são o seguinte: -a: arquivo. Informa o Rsync para copiar arquivos; -u: updade. O Rsync só substituirá o arquivo, se o que ele estiver copiando for mais recente; -p: permissão. Com este parâmetro as permissões serão mantidas nos arquivos copiados; --delete: esta opção estando no final da linha faz com que o Rsync apague os arquivos que existem no destino. A segunda linha informa ao Rsync para copiar o diretório /etc/apache2/sitesavailabe também do servidor local para /etc/apache2 no servidor remoto e também excluir o conteúdo que estiver lá. Esse script foi adicionado no Crontab para fazer sincronização de cinco em cinco minutos, assim a cada cinco minutos ele fará uma comparação entre os arquivos dos servidores e sempre que houver modificação ele copiará os arquivos mais novos para o servidor secundário. O utilitário Crontab encontra-se no diretório /etc e sua configuração pode ser vista na imagem 17:
36 35 Figura 17: Crontab. Fonte: Os autores, Quando os dois servidores são ligados, o Heartbeat é inicializado e procura no arquivo haresources quem é o servidor principal, o Heartbeat do servidor principal assume o IP ali especificado e inicializa o Apache que também está configurado nesse arquivo. O Heartbeat do servidor secundário faz o mesmo processo porém ao verificar que está no servidor secundário ele fica testando continuamente o servidor principal de forma que quando não receber repostas, ele assume o papel de servidor principal e inicializa o Apache. Assim o cliente continua acessando o serviço de forma transparente. Quando o servidor que parou de funcionar for reestabelecido, ele volta a ser o servidor principal ou não, dependendo do que foi configurado no parâmetro auto_failback no arquivo ha.cf. O Rsync também fará a sincronização de dados quando o sv1 ficar operante novamente, um script fará com que ele faça a sincronização dos dados assim que o que o sv1 for iniciado. Para isso é necessário editar o arquivo /etc/rc.local, como mostrado na figura 18:
37 36 Figura 18: Rc.local. Fonte: Os autores, As configurações são as mesmas do script espelha.sh, porém com o caminho inverso, ou seja, no primeiro caso o Rsync instalado no sv1 copia os dados do sv1 para o sv2 de 5 em 5 minutos, no segundo o Rsync instalado no sv1 copia os dados do sv2 para o sv1 assim que o sv1 é iniciado.
38 37 5 RESULTADOS E DISCUSSÃO Alguns testes foram feitos no ambiente montado e descrito anteriormente para comprovar-se de que o ambiente de alta disponibilidade realmente estava funcionando, para tal os arquivos da páginas em HTML de teste, foram deixados dessincronizados justamente para saber quando se está no servidor v1 ou no sv2. Para testar a conexão para saber se o cliente está conectado com o apache utiliza-se o comando ping , onde é o IP virtual, conforme mostra a figura 19. Figura 19: Comando ping. Fonte: Os autores, Primeiramente foi parado o serviço Heartbeat no sv1 com o comando #/etc/init.d/heartbeat stop, para verificar se o sv2 assumiria o serviço do Apache, o que realmente aconteceu, pois a página web continua disponível na máquina cliente, a partir do mesmo IP, conforme mostra a figura 20 na linha SERVER 2 que o sv2 assumiu o serviço e o IP virtual.
39 38 Figura 20: Heartbeat no servidor sv2. Fonte: Os autores, Depois de iniciar o serviço no sv1 novamente, fez-se novo teste, com o comando #ping ativo, em determinado momento foi feito a simulação de uma queima de placa de rede, desconectado o cabo de rede virtual e verificou-se uma pequena demora na resposta do ping voltando em seguida. O Heartbeat já tinha inicializado o Apache assumindo o IP virtual no sv2 e por isso o comando ping continuou alcançando o destino e perdeu apenas 9 pacotes conforme a figura 21, e demorando em torno de 10 segundos para que o sv2 assumisse o serviço Apache. Figura 21: Estatísticas do comando ping para queima de placa de rede. Fonte: Os autores, Uma simulação de queima de fonte também foi feita. Com os dois servidores na posição inicial novamente, foi fechada a máquina virtual sv1 e ao atualizar o navegador com o atalho Alt+F5, a página web continuava disponível através do sv2, que ao perceber que o sv1 não respondia mais, assumiu suas funções conforme mostra a figura 22, que se perdeu 10 pacotes levando 10 segundos para que o sv2