Alta Disponibilidade de Banco de Dados em Ambiente Coorporativo Marcondes Josino Alexandre Faculdade de Tecnologia do Nordeste (FATENE) – Tv Verdes Mares Ltda 60236.500 – Fortaleza – CE – Brasil [email protected] Resumo Quando se menciona a tecnologia de cluster de computadores, imediatamente associa-se o uso da mesma com aplicações científicas e centros de pesquisas, porém esta tecnologia pode ser empregada também no ambiente corporativo. Como exemplos de cenários onde a tecnologia de cluster de computadores pode ser implementada dentro do ambiente corporativo destacamse alguns serviços que são amplamente utilizados neste contexto, tais como serviços de banco de dados, de páginas web, de transferência de arquivos e de sistema de arquivos. Um tipo de cluster de computadores que pode ser muito utilizado no ambiente corporativo é o de Alta Disponibilidade (High Availability – HA), pois o mesmo possibilita a visão de um único sistema para o usuário, se um nó do cluster tiver algum problema e falhar, os serviços e as aplicações transparentemente sem percepção do usuário estarão disponíveis para ele em outro nó. 1. Introdução Tradicionalmente, quando se menciona a tecnologia de cluster de computadores é inevitável a associação com centros de pesquisa realizando grandes quantidades de computação intensiva; porém, com a redução considerável dos custos dos computadores convencionais e a sua utilização em larga escala presencia-se a inserção desta tecnologia também nos ambientes corporativos. O uso desta tecnologia é, muitas vezes, empregada para solucionar o problema de necessidade cada vez maior de poder de computação. Em busca de soluções viáveis para as necessidades das organizações, a tecnologia de processamento em cluster em banco de dados, objetiva disponibilizar recursos para processamentos pesados, sem que haja o investimento em máquinas de alta performance e alto custo. A tecnologia de cluster visa à utilização de máquinas comuns em conjunto para executar tarefas que antes eram executadas somente por máquinas específicas. Além da capacidade de processamento semelhante, com está tecnologia é possível aumentar a garantia de que os serviços estarão disponíveis constantemente, pois o sistema não depende de uma única máquina. 2. A Tecnologia de Cluster de Computadores Um cluster de computadores pode, em poucas palavras, ser definido como sendo um conjunto de computadores que juntam forças para resolver um problema computacional em comum, sendo que este problema pode ser representado pela necessidade de um maior poder de computação ou então pela exigência de disponibilidade para o processamento de um serviço qualquer. Os três tipos mais comuns de clusters de computadores encontrados atualmente são os de Alta Disponibilidade (High Availability – HA), de Alto Desempenho de Computação (High Performance Computing – HPC) e o de Balanceamento de Carga (Horizontal Scaling – HS) [1]. 2.1. Alta Disponibilidade (HA) Os clusters de alta disponibilidade possuem uma ligação direta com essa necessidade, em função da grande e crescente dependência que as organizações e pessoas têm dos computadores. Eles assumiram, cada vez mais, um papel de extrema importância, geralmente em ambientes em que seu foco for servidores de missão crítica, bem como disponibilizam poder computacional, de modo on-line, 24 horas, ISP (Internet Service Provider), banco de dados, além de fazerem parte de praticamente todos os negócios (rotinas administrativas) das organizações atualmente [2]. 2.2. Alto Desempenho de Computação (High Performance Computing – HPC) O Cluster de Alto Desempenho de Computação é 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. O usuário interage com um nó específico para iniciar ou escalonar uma atividade que deverá ser executada. A aplicação, juntamente com as funções internas do cluster, irá determinar como a atividade será dividida e enviada para cada elemento que compõe o ambiente computacional, buscando extrair uma maior vantagem dos recursos disponíveis 2.3. Balanceamento de Carga (Horizontal Scaling – HS) O Cluster de Balanceamento de Carga é usado para fornecer uma interface simplificada para um conjunto de recursos que podem aumentar ou diminuir com o passar do tempo e conforme a necessidade por processamento. Neste tipo de cluster, estão implícitos os conceitos da alta disponibilidade (com a redundância de componentes) e de alto desempenho de computação (com a distribuição das tarefas completas pelos vários componentes replicados) [3] [4] [5]. 3. Alguns possíveis cenários para o uso de um Cluster de Computadores no Ambiente Corporativo Disponibilidade pode ser definida como o tempo que um sistema ou recurso está disponível para uso. A definição de alta disponibilidade é geralmente medida de acordo com até sua porcentagem de disponibilidade absoluta onde 100 por cento significa que o recurso está disponível todo o tempo e não há nenhum tempo de inatividade. No entanto, a disponibilidade de 100 por cento é muito difícil de alcançar. Em vez disso, a medida prática mais próxima de alta disponibilidade é Cinco 9s ou 99,999 por cento. Expressa matematicamente, disponibilidade pode ser definida como: Porcentagem de disponibilidade = tempo decorrido ((Total Elapsed Time – Sum of downtime)/Total), onde a porcentagem de disponibilidade do sistema é igual ao tempo decorrido total, descontando o tempo total que o sistema não está disponível, dividido pelo total de tempo decorrido. Existem inúmeras soluções envolvendo hardware e software, as soluções de hardware são normalmente robustas, bastante específicas, porém não se aplicam a uma grande quantidade de configurações além de serem muito caras, já as soluções baseadas em software tem custo reduzido, aplicabilidade bastante abrangente, não dependem diretamente de sofisticados componentes de hardware. Como exemplos de cenários onde a tecnologia de cluster de computadores pode ser implementada dentro do ambiente corporativo destacam-se alguns serviços que são amplamente utilizados nas empresas, tais como serviços de banco de dados, de páginas web, de transferência de arquivos e de sistema de arquivos. Quando elaboramos um projeto de alta disponibilidade, muitas variáveis vêm à tona e se mostram pontos de preocupação em relação ao tema, mas precisamos sempre focar no objetivo que desejamos alcançar e qual a abrangência da solução que desejamos prover. Dessa maneira mapeamos estas preocupações em áreas, conforme descrito abaixo: Falha de Discos e/ou Storage: existem várias formas de nos resguardarmos contra este tipo de falha, por exemplo, lançando mão de recursos como o Redundant Array of Independent Disks (RAID), vários fabricantes de hardware inclusive com capacidade de trocar sem necessidade de se desligar o servidor. Falha de Rede: do que adianta garantirmos alta disponibilidade no servidor se não temos este conceito aplicado à infra-estrutura de rede, basta um hub ou switch falhar que o servidor fica indisponível, no ar mas sem acesso aos seus serviços, neste aspecto deve-se trabalhar uma topologia capaz de suportar falhas de equipamentos de rede desde a placa de rede que fica no servidor, o hub, a switch, o roteador, o firewall e assim por diante, definindo níveis desejados de disponibilidade e desenhando sua topologia de rede para garantir alta disponibilidade. Falha de Servidor: contemplar os servidores cooporativos com características de alta disponibilidade também é um tema complexo, mas existem várias opções fornecidas por fabricantes de hardware que vão desde servidores em que se podem trocar placas de rede e memórias sem necessidade de desligar o servidor até duplicidade de fontes de alimentação e ventoinhas que mantém a temperatura interna do equipamento. Em nossa abordagem utilizamos estas preocupações citadas acima, num sistema de cluster de Alta Disponibilidade, onde é possível manter os recursos e serviços prestados em um ambiente computacional, utilizando uma replicação dos recursos em outro servidor, por uma redundância e configurações de software para realizar essa tarefa. Na idéia principal de um cluster, várias máquinas interagem como uma única máquina, tendo a função de monitorar uns aos outros. Em uma eventual situação esses backups acabam assumindo seus serviços caso algum deles venha a falhar. A grande complexidade está no software, que tem a função de monitorar os recursos dos computadores do cluster, verificando se os serviços estão sempre on-line, devidamente em cada servidor e definitivamente saber como realizar a substituição do serviço se houver algum tipo de problema. 3.1 Estratégia Proposta Configuramos um servidor SQL Virtual que fará uso do Microsoft Cluster para suportar a alta disponibilidade envolvendo dois servidores. O Microsoft Cluster, é o recurso de cluster contido no Windows Server 2003 nas versões Enterprise e Datacenter, se aplica a situações onde se necessita prover alta disponibilidade para aplicações e/ou serviços permitindo que mais de uma máquina possa suportar uma aplicação e/ou um serviço, fornecendo a possibilidade de migrar esta aplicação e/ou serviço de um servidor para outro com rápidas ou sem nenhuma interrupção da disponibilidade desta aplicação ou serviço. Cada servidor físico no cluster é denominado um nó. Os nós trabalham juntos para formar um cluster. Todos os nós em um cluster estarão em um estado de comunicação constante. Se um de nós em um cluster se tornar indisponível, outro nó automaticamente irá assumir suas responsabilidades e começar a fornecer aos usuários os mesmos serviços como o nó com falha. Esse processo é chamado de failover. Realizamos vários testes que pudessem verificar a tolerância em caso de uma eventual indisponibilidade, como por exemplo, interrupção do link de comunicação com o switch e queda de energia. O processo de failover para um cluster no Windows Server requer um curto intervalo de tempo cerca de 20 segundos para ser concluído, dependendo de hardware empregado. Além disso, o banco de dados no nó de failover deve ser recuperado para manter a consistência transacional. O período de recuperação depende principalmente do nível de atividade do banco de dados no momento em que estava ocorrendo a indisponibilidade. Criamos um servidor SQL Virtual, que é a criação automática de um grupo de recursos no cluster, grupo esse que alterna de nó para o outro em caso de falha sem que haja a perda de informações e portanto gera um alto nível de confiança dos aplicativos junto ao servidor de banco de dados. Com a implantação de um servidor SQL Virtual, os aplicativos poderão ser configurados para acessar um único nome de rede ou em um endereço IP que será disponibilizado para os usuários após a implantação, dessa maneira em caso de falha no nó principal a mudança dos recursos é feita de forma automática deixando as aplicações e os usuários finais indisponíveis por segundos. 3.2 Descrição da Solução A solução de alta disponibilidade em cluster será composta por: dois servidores dual core com 12GB Ram, um Storage EMC Clariion CX3 20 e dois Switchs Fibre Channel. Em cada nó desse cluster serão instalados e customizados o sistema operacional Windows Server 2003 R2 Enterprise Edition x64 e SQL Server 2005 Enterprise Edition x64. Em seguida, configuramos o acesso desses dois nós do cluster ao Storage EMC. Veja na figura 01, como foi implementado. Figura 01. Cenário de Alta Disponibilidade em Cluster de Banco de Dados 3.3 Resultados A combinação do SQL Server 2005 e Windows Server 2003 usando uma configuração 1 N (N nós ativos com 1 nó reserva) fornece um cenário de cluster muito flexível e econômico. Em nosso trabalho encontramos uma certa dificuldade para proporcionar alta disponibilidade para aplicações que acessam banco de dados de forma distribuída, tanto que tivemos que criar um recurso adicional em cada nó do cluster e configurá-lo para que pudéssemos garantir e atender esta demanda de maneira sólida e confiável. 4. Conclusão No mundo corporativo sempre se está a procura por ambientes computacionais que garantam a disponibilidade de seus serviços vitais e que os executem com desempenho satisfatório. Para atender a esta demanda, as empresas normalmente investem em equipamentos isolados, tops de linha e de custo elevado. Os clusters de computadores podem suprir esta demanda, oferecendo uma solução que garanta agilidade com disponibilidade aos negócios através de ambientes integrados, visando à otimização de recursos através da execução de aplicações em servidores de Banco de Dados com alto desempenho e alta disponibilidade garatindo assim a sustentabilidade do negócio com uma infra-estrutura sólida e bem dimensionada. 5. Referências [1] Avizienis, A. Infraestructure-based design of fault-tolerant systems. In: Proceedings of the IFIP International Workshop on Dependable Computing and its Applications. DCIA 98, Johannesburg, South Africa, 1998. p. 51-69. [2] Lungarzo, Guilherme. MAC 499 supervisionado. Disponível http://www.linux.ime.usp.br/~cef/mac49903/monografias/rec/guioc/, (Jun/2007). – trabalho em: [3] Manoel, Edson e Ferreira, Luis. Linux Clustering with CSM and GPFS. Disponível em: http://www.redbooks.ibm.com/ redpieces/pdfs/sg246601.pdf, (Jul/2007). [4] Buyya, Rajkumar. High Performance Cluster Computing: Architectures and Systems, volume 1 – Prentice Hall, 1999. [5] Birman, Kenneth 2003. Building Secure and Reliable Network Applications http://gsyc.escet.urjc.es/ docencia/asignaturas/redes-II/libro/libro.pdf, (Jul/2007).