Alta Disponibilidade de Banco de Dados em Ambiente

Propaganda
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).
Download