segunda-feira, 30 de novembro de 2015

Clusters de Balanceamento de Carga



Hoje em dia, os servidores mais comuns são os servidores de banco de dados. Este tipo de servidor abrange extensas listas de clientes ou de produtos assim como dados complementares, como quem criou ou modificou um arquivo e quando, etc. Tudo isso é armazenado num de banco de dados e o software se encarrega de organizar as mensagens por tópico, dividi-las em páginas, auxiliar em buscas e assim por diante.

Cada vez mais sites organizam seu conteúdo dessa maneira. Isso permite uma série de recursos e facilita as atualizações, mas em compensação aumenta muito o trabalho do servidor. Enquanto num site construído com páginas estáticas, em html, o servidor simplesmente lê os arquivos no disco rígido e o despacha pela rede, em um site baseado em um banco de dados. ele precisa ler vários arquivos diferentes, cruzar dados, montar a página, etc. cada vez que um usuário acessa.

Enquanto o site tiver pouco tráfego(relativamente falando em relação ao porte do servidor), não haverá problemas. Mas conforme o uso se amplia, o que seria uma boa coisa para o dono do servidor, normalmente falando, eventualmente a carga de trabalho aumenta até congestionar o site.

Um cluster, como visto anteriormente, consiste em um conjunto de computadores vagamente ou fortemente ligados que trabalham em conjunto para que, em muitos aspectos, eles  possam ser vistos como um único sistema.


Já que o nosso primeiro servidor não está dando conta da carga de trabalho diário, podemos montar um cluster, com, por exemplo, mais 4 servidores (ou nós).  Agora temos 5 no total. O link com a Internet está no servidor 1, enquanto os outros estão ligados a ele através de uma rede local, como na ilustração acima:

De qualquer modo, todos os dados continuarão passando pelo servidor  1, pois é ele quem possui o link com a internet, mas o grande problema aqui não é a simples transmissão dos dados, é processar os pedidos e montar as páginas, é para isso que os outros servidores...bem, servem.
Isto é balanceamento de carga, onde os servidores  se dividem entre os pedidos. Cada um cuidaria de parte das requisições e enviaria as páginas prontas para o servidor  1, que por sua vez as enviaria para o usuário. Além dos servidores, há a necessidade de um programa de gerenciamento. Exemplos: a versão Enterprise do Cold Fusio, por exemplo, vem com um software de balanceamento de carga, o ClusterCATS. Se a ideia é usar um software GNU, então uma boa opção seria o Linux Virtual Server. Uma busca na internet revelará muitos outros exemplos.

Todos os servidores manteriam uma cópia integral de todos os dados do site por praticidade e segurança.  Isto já é um tipo de espelhamento. Caso algum dos servidores precise ser desligado, seja por alguma falha, ou então para algum tipo de manutenção, os outros três continuariam trabalhando normalmente. O Virtual Linux Server, por exemplo, tem a capacidade de detectar a desconexão automaticamente, e passar a enviar tarefas apenas para os outros três. Depois de terminada a manutenção, o V.L. Server se encarregaria de atualizar os dados para que ele pudesse voltar a trabalhar.
Finalizando:
Depois de toda essa explicação, um resumo: clusters de balanceamento de carga é simplesmente um cluster cuja função é dividir a carga de trabalho entre os nós ou servidores para maior agilidade e segurança do processo.

Referências:

sábado, 28 de novembro de 2015

Clusters

Introdução
 
Quando o assunto é computação de alto desempenho, não é difícil pensarmos em servidores sofisticados e caros respondendo por este trabalho. No entanto, é possível obter resultados tão bons quanto ou superiores a partir de alguma solução de cluster (em tradução livre seria aglomerado ou agrupamento). Trata-se de uma tecnologia capaz de fazer computadores mais simples trabalharem em conjunto, como se formassem uma máquina só.
 
 
 
O que é cluster?

Cluster (ou clustering) consiste em um conjunto de computadores vagamente ou fortemente ligadas que trabalham em conjunto para que, em muitos aspectos, eles podem ser vistos como um único sistema. Cada computador que faz parte do cluster recebe o nome de nó (ou node). Teoricamente, não há limite máximo de nós, mas independentemente da quantidade de máquinas que o compõe, o cluster deve ser "transparente", ou seja, ser visto pelo usuário ou por outro sistema que necessita deste processamento como um único computador.
Os nós do cluster devem ser interconectados, preferencialmente, por uma tecnologia de rede conhecida, para fins de manutenção e controle de custos, como a Ethernet. É extremamente importante que o padrão adotado permita a inclusão ou a retirada de nós com o cluster em funcionamento, do contrário, o trabalho de remoção e substituição de um computador que apresenta problemas, por exemplo, faria a aplicação como um todo parar.
A computação em cluster se mostra muitas vezes como uma solução viável porque os nós podem até mesmo ser compostos por computadores simples, como PCs de desempenho mediano. Juntos, eles configuram um sistema de processamento com capacidade suficiente para dar conta de determinadas aplicações que, se fossem atendidas por supercomputadores ou servidores sofisticados, exigiriam investimentos muito maiores.
Não é necessário haver um conjunto de hardware exatamente igual em cada nó. Por outro lado, é importante que todas as máquinas utilizem o mesmo sistema operacional, de forma a garantir que o software que controla o cluster consiga gerenciar todos os computadores que o integram.
 
 
Tipos de clusters

Há uma enormidade de aplicações que só podem ser atendidas satisfatoriamente com computação de alto desempenho: sistemas meteorológicos, ferramentas de mapeamento genético, simuladores geotérmicos, programas de renderização de imagens tridimencionais, entre tantos outros. Com o advento da computação em nuvens, este cenário se torna ainda mais amplo: pode-se ter uma infraestrutura tecnológica respondendo a vários clientes simultaneamente de maneira remota, por exemplo.

- Cluster de alto desempenho: também conhecido como cluster de alta performance, ele funciona permitindo que ocorra uma grande carga de processamento com um volume alto de gigaflops em computadores comuns e utilizando sistema operacional gratuito, o que diminui seu custo;

- Cluster de alta disponibilidade: são clusters cujos sistemas conseguem permanecer ativos por um longo período de tempo e em plena condição de uso; sendo assim, podemos dizer que eles nunca param seu funcionamento; além disso, conseguem detectar erros se protegendo de possíveis falhas;

- Cluster para balanceamento de carga: esse tipo de cluster tem como função controlar a distribuição equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus mecanismos de redundância, pois se ocorrer alguma falha, haverá uma interrupção no seu funcionamento.
 
 
Funcionamento básico dos clusters

Para que um cluster seja constituído, é necessário fazer uso de alguns elementos básicos. O primeiro deles você já conhece: os equipamentos a serem utilizados como nós.
Para isso, pode-se usar máquinas construídas especificamente para funcionar como nós. Neste caso, os computadores teriam apenas dispositivos de hardware imprescindíveis ao cluster.
Mas, também é possível utilizar computadores "convencionais", como desktops para fins domésticos ou para uso em escritório. Assim, uma universidade ou uma empresa, por exemplo, pode utilizar máquinas que foram substituídas por modelos mais recentes para criar um cluster e, eventualmente, economizar com a aquisição de servidores.
Os nós podem ainda ser não dedicados ou dedicados. No primeiro caso, cada computador que faz parte do cluster não trabalha exclusivamente nele. No segundo, o nó é utilizado somente para este fim, fazendo com que dispositivos como teclados e monitores sejam dispensáveis - se, por algum motivo, for necessário acessar uma máquina em particular, pode-se fazê-lo via terminal, a partir do nó principal, por exemplo.
 
 
Cluster Beowulf

O Beowulf não é, necessariamente, um middleware, como muitas pensam. Na verdade, este nome faz referência a um padrão de clustering disponibilizado pela NASA (National Aeronautics and Space) em 1994 e amplamente adotado desde então.
Originalmente, Beowulf é o nome de um poema extenso e bastante antigo, cujo manuscrito foi encontrado no século XI. A obra descreve os atos de um herói de mesmo nome que se destaca por sua força descomunal e que, portanto, enfrenta um perigoso monstro para salvar um reino. A história serviu de inspiração para que os pesquisadores Thomas Sterling e Donald Becker, da NASA, batizassem o projeto de cluster no qual trabalhavam de Beowulf.
Perceba que, com estas características, pode-se construir um cluster "poderoso" e, ao mesmo tempo, poupar gastos com equipamentos, licenças de software e manutenção. O cluster montado por Thomas Sterling e Donald Becker para a NASA, por exemplo, era composto por 16 PCs com processador Intel 486 DX4 e sistema operacional Linux conectados por uma rede Ethernet de 10 Mb/s. Como se vê, esta foi uma solução consideravelmente mais barata e, possivelmente, menos complexa que um supercomputador.
 
 
Vantagens e desvantagens dos clusters

Neste ponto do texto, você certamente já compreendeu as vantagens de um cluster. Eis as principais:
- pode-se obter resultados tão bons quanto ou até superiores que um servidor sofisticado a partir de máquinas mais simples e mais baratas (ótima relação custo-benefício);
- não é necessário depender de um único fornecedor ou prestador de serviço para reposição de componentes;
- a configuração de um cluster não costuma ser trivial, mas fazer um supercomputador funcionar poder ser muito mais trabalhoso e exigir pessoal especializado;
- é possível aumentar a capacidade de um cluster com a adição de nós ou remover máquinas para reparos sem interromper a aplicação;
- há opções de softwares para cluster disponíveis livremente, o que facilita o uso de uma solução do tipo em universidades, por exemplo;
- relativa facilidade de customização para o perfeito atendimento da aplicação;
- um cluster pode ser implementado tanto para uma aplicação sofisticada quanto para um sistema doméstico criado para fins de estudos, por exemplo.
 
Mas, apesar destes benefícios, os clusters não são a solução perfeita para todo e qualquer problema computacional. Há aplicações onde o uso de outra tecnologia se mostra mais adequado. Entre as razões para isso estão:
- a facilidade de expansão do cluster pode ser uma "faca de dois gumes": a quantidade de máquinas pode aumentar tanto que a manutenção se torna mais trabalhosa, o espaço físico pode ficar impróprio, etc;
- a tecnologia de comunicação utilizada pode não oferecer a velocidade de transferência de dados ou o tempo de resposta necessário, dependendo da aplicação;
- um cluster tem como base uma rede local, logo, não se pode acrescentar máquinas que estejam muito distantes geograficamente.
Por estes aspectos, fica evidente que as necessidades e os requisitos de uma aplicação devem ser bem avaliados para que se possa decidir entre a implementação de um cluster ou outra tecnologia. Se o clustering for a opção escolhida, deve-se seguir com a avaliação, desta vez para se decidir sobre as soluções e recursos disponíveis.
 
 
Finalizando

A origem da denominação "cluster" não é clara, mas sabe-se que as primeiras soluções de processamento paralelo remontam à década de 1960, havendo, a partir daí, alguns princípios que hoje formam a base da ideia de clustering.
O fato é que o passar do tempo não torna o conceito ultrapassado. Há um motivo especial para isso: os clusters se relacionam intimamente à otimização de recursos, uma necessidade constante em praticamente qualquer cenário computacional. E este aspecto pode se tornar ainda mais atraente quando a ideia de cluster é associada a conceitos mais recentes, como cloud computing e virtualização.


Fontes:
http://www.infowester.com/cluster.php
https://pt.wikipedia.org/wiki/Cluster
https://en.wikipedia.org/wiki/Computer_cluster
https://pt.wikipedia.org/wiki/Aglomerado_Beowulf


quinta-feira, 12 de novembro de 2015

Computação em Nuvem - Parte 5

Um pouco sobre a história da cloud computing






Computação nas nuvens não é um conceito claramente definido. Não estamos tratando de uma tecnologia pronta que saiu dos laboratórios pelas mãos de um grupo de pesquisadores e posteriormente foi disponibilizada no mercado. Essa característica faz com que seja difícil identificar com precisão a sua origem. Mas há alguns indícios bastante interessantes.
Um deles remete ao trabalho desenvolvido por John McCarthy. Falecido em outubro de 2011, o pesquisador foi um dos principais nomes por trás da criação do que conhecemos como inteligência artificial, com destaque para a linguagem Lisp, até hoje aplicada em projetos que utilizam tal conceito.
Além desse trabalho, John McCarthy tratou de uma ideia bastante importante no início da década de 1960: computação por tempo compartilhado (time sharing), onde um computador pode ser utilizado simultaneamente por dois ou mais usuários para a realização de determinadas tarefas, aproveitando especialmente o intervalo de tempo ocioso entre cada processo.
Perceba que, dessa forma, é possível aproveitar melhor o computador (na época, um dispositivo muito caro) e diminuir gastos, pois o usuário paga somente pelo tempo de uso do equipamento, por exemplo. É, de certa forma, uma ideia presente na computação nas nuvens.
Quase que na mesma época, o físico Joseph Carl Robnett Licklider entrou para a história ao ser um dos pioneiros da internet. Isso porque, ao fazer parte da ARPA (Advanced Research Projects Agency), lidou com a tarefa de encontrar outras utilidades para o computador que não fosse apenas a de ser uma "poderosa calculadora".
Nessa missão, Licklider acabou sendo um dos primeiros a entender que os computadores poderiam ser usados de maneira conectada, de forma a permitir comunicação de maneira global e, consequentemente, o compartilhamento de dados. Seu trabalho foi determinante para a criação da Intergalactic Computer Network, que posteriormente deu origem à ARPANET, que por sua vez "abriu as portas" para a internet.
Embora possamos associar várias tecnologias, conceitos e pesquisadores ao assunto, ao juntarmos os trabalhos de John McCarthy e J.C.R. Licklider podemos ter uma grande ajuda na tarefa de compreender a origem e a evolução da cloud computing.
No Brasil, a tecnologia de computação em nuvem é muito recente, mas está se tornando madura muito rapidamente. Empresas de médio, pequeno e grande porte estão adotando a tecnologia gradativamente. O serviço começou a ser oferecido comercialmente em 2008 e em 2012, ocorreu uma grande adoção.
No ambiente acadêmico o Laboratório de Redes e Gerência da UFSC foi um dos pioneiros a desenvolver pesquisas em Computação em Nuvem publicando artigos sobre segurança, IDS (Intrusion Detection Systems) e SLA (Service Level Agreement) para computação em nuvem. Além de implantar e gerenciar uma nuvem privada e computação em nuvem verde.

Concluindo

Qualquer tentativa de definir o que é cloud computing pode não ser 100% precisa. As ideias por trás da noção de computação nas nuvens são muito novas e as opiniões de especialistas em computação ainda divergem.
É claro que ainda há muito trabalho a ser feito. Por exemplo, a simples ideia de determinadas informações ficarem armazenadas em computadores de terceiros (no caso, os fornecedores de serviço), mesmo com documentos garantindo a privacidade e o sigilo, preocupam pessoas e, principalmente, empresas, razão qual esse aspecto precisa ser melhor estudado.
De qualquer forma, a computação em nuvem é um caminho sem volta. A constante ampliação dos serviços de acesso à internet e o advento dos dispositivos móveis (smartphones, tablets, smartwatches e semelhantes) abrem cada vez mais espaço para as aplicações nas nuvens - um conceito depende do outro para gerar valor a usuários e organizações.


Vídeo: Palestra Campus Party
https://www.youtube.com/watch?v=GDVQV643-BA

Fontes:

quarta-feira, 11 de novembro de 2015

Computação em Nuvem - Parte 4

Cuidados para evitar problemas



Há uma quantidade imensa de serviços nas nuvens. No meio corporativo, há opções que atendem de pequenas empresas a companhias que figuram entre as mais valiosas do mundo. Tamanha diversidade exige cuidados para evitar que as vantagens se transformem em prejuízo ou desperdício de recursos.

A contratação de serviços também deve ser bem analisada. Nem sempre a solução mais barata é a melhor. Se os usuários necessitarem de um longo tempo de treinamento ou o serviço exigir migração para um plano de acesso à internet com mais capacidade, por exemplo, os custos adicionais podem acabar extrapolando o orçamento.

Nesse sentido, na hora de migrar os dados de uma empresa para uma nuvem, todo administrador se preocupa com a segurança de suas informações, com a qualidade que estas estarão sendo guardadas. Existe o risco de alguém invadir o servidor e ter acesso aos dados das organizações que lá hospedam seus serviços, o que pode eventualmente gerar transtornos vitais, como o compartilhados de dados por concorrentes, ou mesmo a alteração original dos dados, levando a tomada de decisões equivocadas.

Por isso, a segurança da informação deve ser vista como uma das partes mais importantes para se começar a utilizar o serviço de computação em nuvens, pois a empresa estará lidando com dados coletadas ao longo de vários anos, inclusive dados de terceiros. Sendo assim, qualquer problema que houver no servidor, como um vazamento de informação, poderá resultar em um enorme prejuízo para seus clientes.

Quando se trata de segurança, o uso de métodos criptográficos é uma alternativa bastante eficaz para garantir sigilo e privacidade. Porém, cifrar todo o conteúdo de um disco rígido pode não ser suficiente, pois pelo fato da nuvem ser uma entidade abstrata, a principal ameaça não é o roubo físico, haja vista que é comum existirem cópias de segurança espalhadas por toda a infraestrutura da nuvem. Prevenir e proteger contra ataques na nuvem exige a elaboração de alternativas mais sofisticadas, que utilizem protocolos que sejam bem definidos e seguros.

Tendo esse aspecto em mente, deve-se analisar qual a melhor empresa, a partir de uma análise dos níveis, técnicas e ferramentas de segurança que são utilizadas para a proteção dos dados. Ainda, avaliar as técnicas de redundância e espelhamento utilizados no datacenter, fatores que contribuem para que os serviços oferecidos não deixem de funcionar em uma eventual falha recorrente da falta de energia ou problemas de hardware e software no local onde os dados são armazenados e gerenciados.

Esses são apenas alguns dos cuidados necessários. Dependendo do que se espera do modelo de cloud computing, outras medidas podem ser mandatórias. Em alguns casos, pode ser conveniente até mesmo a contratação de uma empresa especializada para assessorar a escolha e a implementação de uma solução.

Na última postagem da série faremos um breve histórico da cloud computing no Brasil e no mundo.


Vídeos: Segurança na Nuvem





Fontes:


http://www.infowester.com/cloudcomputing.php
http://www.planetaeducacao.com.br/portal/artigo.asp?artigo=2171
https://pt.wikipedia.org/wiki/Tecnologias_da_informa%C3%A7%C3%A3o_e_comunica%C3%A7%C3%A3o
http://www.unesco.org/new/pt/brasilia/communication-and-information/access-to-knowledge/ict-in-education/
http://www.egov.ufsc.br/portal/conteudo/defini%C3%A7%C3%A3o-de-conte%C3%BAdo-digital-em-computa%C3%A7%C3%A3o-em-nuvem