segunda-feira, 13 de junho de 2011

Balanceamento de Cargas

Todo o hardware tem o seu limite, e muitas vezes o mesmo serviço tem que ser repartido por várias máquinas, sob pena de se tornar congestionado. Estas soluções podem-se especializar em pequenos grupos sobre os quais se faz um balanceamento de carga: utilização do CPU, de armazenamento, ou de rede. Qualquer uma delas introduz o conceito de clustering, ou server farm, já que o balanceamento será, provavelmente, feito para vários servidores. Em rede de computadores, o balanceamento de carga é uma técnica para distribuir a carga de trabalho uniformemente entre dois ou mais computadores, enlaces de rede, UCPs, discos rígidos ou outros recursos, a fim de otimizar a utilização de recursos, maximizar o desempenho, minimizar o tempo de resposta e evitar sobrecarga. Utilizando múltiplos componentes com o balanceamento de carga, em vez de um único componente, pode aumentar a confiabilidade através da redundância.


Balanceamento de armazenamento (storage)

O balanceamento do suporte de armazenamento permite distribuir o acesso a sistemas de ficheiros por vários discos (software/hardware RAID), pelo que derivam ganhos óbvios em tempos acesso. Estas soluções podem ser dedicadas ou existir em cada um dos servidores do cluster.

O balanceamento da utilização da rede passa sobretudo por reencaminhar o tráfego por caminhos alternativos a fim de descongestionar os acessos aos servidores. Este balanceamento pode ocorrer a qualquer nível da camada OSI.

A Figura 1 sugere a existência de um mecanismo/dispositivo responsável pelo balanceamento (director). Na verdade, ele pode existir sob várias formas, dependendo do(s) serviço(s) que se pretende balancear. Este director serve também de interface entre o cluster de servidores e os clientes do(s) serviço(s) - tudo o que os clientes conhecem é o endereço semi-público deste servidor. Esta abordagem (clássica) é algo limitada, em termos de escalabilidade, ao número de tramas que o director consegue redireccionar, principalmente devido à velocidade dos buses das placas de rede. Existem, no entanto, outras soluções mais complexas que tiram melhor partido das características do protocolo TCP/IP em conjunto com routing especializado (NAT, IP Tunneling, Direct Routing).

Figura 1:

Alta Disponibilidade

Um sistema de alta disponibilidade é um sistema informático resistente a falhas de software e energia, cujo objectivo é manter os serviços disponibilizados o máximo de tempo possível.

Cada vez mais é necessário garantir a disponibilidade de um serviço, mas sendo que muitos componentes dos sistemas de informação actuais contêm partes mecânicas, a fiabilidade destes é relativamente insuficiente se o serviço fôr crítico. Para garantir a ausência de interrupções de serviço é necessário, muitas vezes, dispôr de hardware redundante que entre em funcionamento automaticamente aquando da falha de um dos componentes em utilização.

Quanto mais redundância existir, menores serão os SPOF (Single Point Of Failure), e menor será a probabilidade de interrupções no serviço. Até há poucos anos tais sistemas eram muito dispendiosos, e tem-se vindo a intensificar uma procura em soluções alternativas. Surgem então os sistemas construídos com hardware acessível (clusters), altamente escaláveis e de custo mínimo. A Figura 1 ilustra a configuração típica de um sistema de alta disponibilidade dual-node:

Figura 1:


Como se pode observar, não existe um único ponto nesta arquitectura que, ao falhar, implique a indisponibilidade de outro ponto qualquer (SPOF). O facto de ambos servidores se encontram em funcionamento e ligados à rede não implica, porém, que se encontrem a desempenhar as mesmas tarefas. Esse é uma decisão por parte do administrador e que tem o nome de balanceamento de carga.

A Tabela 1 ilustra um dos termos de comparação geralmente utilizado na avaliação de soluções HA: níveis de disponibilidade segundo tempos de indisponibilidade (downtime). Excluídos desta tabela, os tempos de downtime estimados (geralmente para manutenção ou reconfiguração dos sistemas) são alheios às soluções e muito variáveis.

Tabela 1 - Níveis de Alta Disponibilidade:


Geralmente, quanto maior a disponibilidade, maior a redundância e custo das soluções: tudo depende do tipo de serviço que se pretende disponibilizar. Por exemplo, um operador de telecomunicações quererá certamente o mais elevado a fim de poder garantir um elevado nível de disponibilidade, sob pena de perder os seus clientes caso o sistema sofra falhas constantemente. No entanto, uma empresa com horário de trabalho normal poderá considerar que 90% de disponibilidade serão suficientes. É de salientar que o nível de disponibilidade mensal não é o mesmo que o anual. Efectivamente, para se obter um nível de disponibilidade mensal de 97%, é necessário que o nível anual seja aproximadamente de 99,75%.

A tolerância a falhas consiste, basicamente, em ter hardware redundante que entra em funcionamento automaticamente após a detecção de falha do hardware principal. Independentemente da solução adoptada, existe sempre dois parâmetros que possibilitam mensurar o grau de tolerância a falhas que são o MTBF - Mean Time Between Failures - (tempo médio entre falhas) e o MTTR - Mean Time To Repair - tempo médio de recuperação, que é o espaço de tempo (médio) que decorre entre a ocorrência da falha e a total recuperação do sistema ao seu estado operacional. A disponibilidade de um sistema pode ser calculada pela fórmula:

Disponibilidade = MTBF / (MTBF + MTTR)

Clustering

Clustering é a utilização de vários computadores e ligações redundantes para formar o que parece ser um sistema único e altamente disponível. Um cluster fornece protecção contra a inactividade para aplicações importantes ou serviços que precisam estar sempre disponíveis, distribuindo a carga entre vários computadores para que, no caso de falha num sistema, o serviço esteja disponível noutro.

Um cluster são dois ou mais sistemas trabalhando em conjunto para alcançar um objectivo comum. No Windows existem dois tipos principais de clustering: clusters de expansão/disponibilidade conhecidos como Network Load Balancing clusters (NLB) e clusters estritamente baseados em disponibilidade conhecidos como Failover Clusters. A Microsoft tem também uma variante do Windows chamada Windows Compute Cluster Server.

Quando um computador inesperadamente falha ou é deliberadamente desligado, o clustering garante que os processos e serviços a ser executados, mudam para outra máquina, ou seja, fazem "failover" no cluster. Isto acontece sem interrupção nem necessidade de intervenção imediata do administrador fornecendo uma solução de alta disponibilidade, o que significa que os dados críticos estão sempre disponíveis.


domingo, 12 de junho de 2011

Apresentação da Arquitectura de 3 níveis

Na arquitectura de 3 níveis (chamada estrutura 3-tier), existe um nível intermédio, o que quer dizer que tem geralmente uma arquitectura compartilhada entre:

Um cliente, quer dizer o computador requerente de recursos, equipado de um interface utilizador (geralmente um navegador web) encarregado da apresentação;

O servidor de aplicação (chamado igualmente middleware), encarregado de fornecer o recurso mas que recorre a um outro servidor

O servidor de dados, fornecendo ao servidor de aplicação os dados dos quais este tem necessidade.


Apresentação da rquitectura de 3 níveis

Na arquitectura de 3 níveis (chamada estrutura 3-tier), existe um nível intermédio, o que quer dizer que tem geralmente uma arquitectura compartilhada entre:

Um cliente, quer dizer o computador requerente de recursos, equipado de um interface utilizador (geralmente um navegador web) encarregado da apresentação;

O servidor de aplicação (chamado igualmente middleware), encarregado de fornecer o recurso mas que recorre a um outro servidor

O servidor de dados, fornecendo ao servidor de aplicação os dados dos quais este tem necessidade.

Apresentação da Arquitectura de 2 Níveis

A arquitectura de dois níveis (também chamada estrutura 2-tier, tier significando alinhamento em inglês) carateriza os sistemas clientes/servidores pelos quais o cliente pede um recurso e o servidor lho fornece directamente, utilizando os seus próprios recursos. Isto significa que o servidor não recorre a outra aplicação para fornecer uma parte do serviço.




Funcionamento de um sistema cliente/servidor

Um sistema cliente/servidor funciona de acordo com o esquema seguinte :


O cliente emite um pedido para o servidor graças ao seu endereço IP e a porta, que designa um serviço específico do servidor. O servidor recebe o pedido e responde com a ajuda do endereço da máquina cliente e da sua porta.