quinta-feira, 12 de novembro de 2015

Tipos de Cluster: parte 2 - MOSIX, OpenSSI e Kerrighed

Olá! Como já falado no post "anteanterior" e o anterior. Clusters são nada mais que computadores conectados entre si para que juntos formem um "supercomputador", com capacidade de processamento igual a soma da capacidade dos PCs que o formam. Existem muitas maneiras de se criar Clusters , porém as mais comum são usando o MOSIX, o OpenSSI e o Kerrighed. Nesse post falaremos sobre elas!

MOSIX
MOSIX (Multicomputer Operating System for Unix - Sistema Operacional de Multicomputador para UNIX) é um gerenciador de Cluters desenvolvido para sistemas operacionais de base Unix. É ideal para sistemas de Clusters, ao qual seja necessário a implementação de Cluster dos tipos: balanceamento de carga e de alto desempenho.
Esse tipo de Cluster faz uso de algoritmos que implementam a Migração Preemptiva de Processos e Balanceamento Dinâmico de Carga, que basicamente possibilitam, no Cluster, a migração de tarefas de um nó que já esteja sobrecarregado, ou ainda, que não ache que "dará conta do serviço", para outro que nó ainda mais poderoso e/ou desocupado tudo isso de forma transparente.

OpenSSI
OpenSSI é um solução Cluster baseado no MOSIX, e assim como ele, é destinado a Sistemas operacionais de base no UNIX. Sua diferenciação se dá na implementação da tecnologia SSI (Single System Image), que consiste basicamente de dar a ilusão ao usuário de que todo o Cluster é somente uma máquina. Nela, todos os recursos de todos os nós se relacionam, fazendo assim, o usuário "enxergar" como se todos fossem pertencentes a somente um único computador.
O OpenSSI, embora tenha recurso para implementação dos Clusters de balanceamento de carga, sua principal finalidade são os Clusters de tipo de alto desempenho e de alta disponibilidade.

Kerrighed 
O Kerrighed também usa a tecnologia SSI, e como os outros dois, é feito para sistemas de base Unix. A sua grande diferença, em relação aos dois acima, é a aplicação do conceito de DSM (Distributed Shared Memory - memória compartilhada, tradução não literal) onde a memória de todos os nós se somam e funcionam como uma só. O que em alguns casos pode parecer muito vantajoso


Referências
"Mosix - Instalação e configuração de um Cluster de balanceamento de carga", por rodrigo8819 - http://www.vivaolinux.com.br/artigo/Mosix-Instalacao-e-configuracao-de-um-Cluster-de-balanceamento-de-carga

"Cluster: conceito e características", por InfoWester - http://www.infowester.com/Cluster.php

"Aula 5 – Clusters", por Guilherme Galante - http://www.inf.unioeste.br/~guilherme/tsc/aula5

"Migração de Processos: Panorama de Soluções Populares e Avanços Recentes ", por Márcio Parise Boufleur, Rodolfo Leffa de Oliveira, Andrea Schwertner Charão - http://www-usr.inf.ufsm.br/~rodox/publicacoes/mig_resumo.pdf

"Montando um Cluster com Kerrighed", por João F. M. Figueiredo - http://www.joaomatosf.com/blog/index.php?option=com_content&view=article&id=57:montando-um-Cluster-com-kerrighed&catid=43:projetosdiversos&Itemid=60

segunda-feira, 26 de outubro de 2015

Tipos de cluster: parte 1 - Beowulf


Como já dito no último post, a função dos clusters é aumentar a capacidade de processamento através da divisão de tarefas entre vários processadores.  Isso pode dar a impressão de que clusters em geral são muito caros, viáveis apenas a grandes centros de pesquisa e empresas. Desde a criação dos clusters Beowulf, isso deixou de ser verdade, como é possível perceber a seguir.

O que é:

Criado em 1994, no CESDIS (Center of Excellence in Space Data and Information Sciences), uma contratante da NASA, por Don Becker e Thomas Sterling, o primeiro cluster Beowulf foi construído com 16 processadores Intel DX4, conectados por ethernet de 10MBit/s. Seu nome é uma referência ao poema épico inglês Beowulf, em que o protagonista teria a força de trinta homens.

O Borg, cluster Beowulf de 52 nós usado pelo grupo de pulsares da Universidade McGill

Pelos processadores usados no primeiro Beowulf – Intel DX4, também conhecido como i486, uma linha comercial comum na época – é possível perceber que o custo é relativamente baixo em relação à performance. Graças a esse custo-benefício, esse tipo de cluster é frequentemente usado em laboratórios de universidades, para a pesquisa científica.  

Neste tipo de cluster, um computador mestre, denominado front-end, controla os demais, chamados de back-end, geralmente através de redes Ethernet. Frequentemente é usada alguma variação de Linux, como o MOSIX, por questões de preço, independência e estabilidade, enquanto a comunicação entre os nós é feita por bibliotecas como a PVM (Parallel Virtual Machine) ou a MPI (Message Passing Interface).

Vantagens e desvantagens:

Graças à simples possibilidade de acrescentar novos componentes, os sistemas Beowulf são escaláveis, isto é, podem acompanhar a evolução das necessidades do usuário.

Beowulf de 8 nós

Além disso, a manutenção é relativamente simples, já que, no evento da falha de um dos nós, a solução é simplesmente substituir o nó, e o sistema utilizado é open source – permitindo a livre adaptação de suas características. Isso, junto a um custo muito baixo, por fazer uso de um sistema gratuito e de componentes baratos e de fácil obtenção, torna o Beowulf um tipo de cluster bastante acessível.

Por outro lado, apresenta latência superior e largura de banda inferior a outras arquiteturas, exigindo algoritmos que sejam tolerantes a isto. Como este problema existe porque o hardware de rede usado geralmente não foi criado com este intuito em específico, existe a possibilidade de atenuá-lo usando outras opções mais focadas a esse uso, mas isso implica em custos mais altos.

Entre os próximos posts, falaremos sobre outros tipos de cluster.


Referências:


"About Beowulf", pelo Pickett Group da UC Davis - http://yclept.ucdavis.edu/Beowulf/aboutbeowulf.html

"Clusters Beowulf", por Hugo Emanuel Gonçalves Teixeira, Maria João Almeida de Sá Barros e Paulo Jorge Marques Coelho - http://www.cesarkallas.net/arquivos/apostilas/redes/beowulf_clusters.pdf

"Uma Abordagem para Alta Demanda de Processamento Utilizando Cluster de Beowulf", por Líliam Barroso Leal e Francisco Xavier de Vasconcelos Filho - http://www.pop-pi.rnp.br/system/uploads/article/archive/1/Lilian_ClusterdeBeowulf_2011.pdf

"Cluster: conceito e características", por Info Wester - http://www.infowester.com/cluster.php

quinta-feira, 28 de maio de 2015

Conheça os Clusters!

Olá ! Hoje falaremos sobre um assunto novo, Clusters. Você conhece? Sabe como funciona? Não!? , então acompanhe a postagem a seguir.


O que é isso?

Clusters da empresa Yahoo!
Em poucas palavras Cluster é um conjunto de computadores que desempenham tarefas de um só. Basicamente a ideia é que cada tarefa que tenha que ser realizada por esse conjunto de computares seja dividida entre eles, para que assim haja um maior aproveitamento do processamento. Ou seja, com essa tecnologia podemos ter um supercomputador, tendo apenas alguns poucos computadores de médio porte conectados entre si.


Conceito do Funcionamento

Cada computador de um Cluster é chamado de nó, ou node, (teoricamente não há limite para a quantidade nós[1]), cada máquina do nó deve poder se comunicar com as demais máquinas facilmente, e embora não seja necessário que as máquinas possuam a mesma estrutura de hardware, todos precisam ter um sistema operacional adequado para Clusters instalado. Caso contrário o software responsável pelo gerenciamento do Cluster terá dificuldade em sua funcionalidade (provavelmente nem funcionará).

Tipos de Clusters

Existem vários tipos de Clusters, porém os mais conhecidos são:
  • Cluster de alto desempenho: Como o próprio nome sugere, são os clusters que processam um grande volume de dados em um curto período de tempo.
  • Cluster de alta disponibilidade: Nesse tipo de Cluster o foco é que a aplicação continue funcionando de forma continua e, caso haja a necessidade de interrupção, que seja pelo menor período de tempo possível. 
  • Cluster de balanceamento de carga: A ideia nesse tipo de cluster é que seja distribuído por cada nó, uniformemente as tarefas, desta forma cada computador do nó executará uma só tarefa, o que pode acarretar num melhor desempenho do Cluster.

Algumas Vantagens e Desvantagens dos Clusters

  Vantagens:

  • A principal facilidade é o custo beneficio. É mais barato fazer isso do que comprar um supercomputador;
  • Para melhorar a capacidade do cluster basta acrescentar uma máquina;
  • Por ser um série de computadores conectados, a chance de todas as máquinas quebrarem ao mesmo tempo é mínima, porém quando alguma quebra o Cluster pode continuar funcionando normalmente sem ela (tendo apenas, uma redução na capacidade de processamento).

  Desvantagens:

  • 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; [2]
  • 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;[2]
  • Um cluster tem como base uma rede local, logo, não se pode acrescentar máquinas que estejam muito distantes geograficamente.[2] 
 

Referências

"Cluster: conceito e características", por InfoWester  - http://www.infowester.com/cluster.php[1]

"Arquitetura de Computadores II - Clusters", por Gabriel P. Silva - http://equipe.nce.ufrj.br/gabriel/arqcomp2/ArqPar6.pdf

"Running Hadoop on Ubuntu Linux (Multi-Node Cluster)", por  Michael G. Noll - http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/

"Vantagens e desvantagens dos clusters", Raí Carvalho - http://www.usuarioroot.com.br/2014/03/vantagens-e-desvantagens-dos-clusters.html[2]

domingo, 24 de maio de 2015

Virtualização de Sistemas Operacionais – Máquinas Virtuais

No post de hoje vamos falar sobre a virtualização de sistemas operacionais. Para facilitar o seu entendimento, caro leitor, vamos falar mais especificamente de máquinas virtuais, modo de virtualização mais comum para usuários domésticos. Recomendamos a leitura os posts anteriores para a obtenção de conceitos e noções básicas sobre esse tema.

A primeira coisa que um usuário comum pensa ao ver a palavra “virtualização” em algum lugar é a possibilidade de executar vários sistemas operacionais simultaneamente dentro de um. Realmente essa é uma das vantagens de ter um sistema operacional rodando virtualmente, mas isso pode se expandir a várias aplicações como vimos nos últimos posts do blog. A virtualização é possível na maioria dos sistemas atuais. Você pode rodar Windows dentro de Windows, Windows dentro de Mac, Linux dentro de Windows, são várias possibilidades. Tudo depende da potência do computador a ser utilizado. Mas como fazer isso? É por isso que precisamos falar de máquinas virtuais.
Exemplo de máquina virtual: Windows XP rodando no
Windows 7 (Fonte da Imagem: Tkp News)

   Uma máquina virtual é ambiente computacional em que um sistema operacional ou programa pode ser instalado e executado. De maneira mais simplificada, podemos dizer que a máquina virtual funciona como um “computador dentro do computador”.  Hoje em dia, criar uma máquina virtual é muito simples: basta instalar um programa dentro do seu computado. É dentro desse programa que você irá criar um disco rígido virtual e poderá executar um sistema operacional inteiro a partir dele. Para executá-lo é necessário que haja recursos na máquina hospedeira para poder suprir a carga necessária, até porque um sistema virtual é semelhante a um sistema “real” até na questão de consumo de recursos. Você pode rodar um sistema com o mínimo de recursos, esperando o mínimo de resposta do sistema ou dedicar grande parte da memória e disco para que tudo funcione razoavelmente bem.

Máquinas virtuais são extremamente úteis no dia a dia, pois permitem ao usuário rodar outros sistemas operacionais dentro de uma janela, tendo acesso a todos os softwares que precisa. Elas são usadas em diversos casos, como no lançamento de programas e SO’s ainda em estágio de desenvolvimento. Dessa forma, você não se torna refém de aplicativos inacabados que podem apresentar diversos bugs. A máquina virtual irá alocar, durante a execução de sistemas operacionais, uma quantidade definida de memória RAM. Ela normalmente emula um ambiente de computação física, mas requisições de CPU, memória, disco rígido, rede e outros recursos de hardware serão todos geridos por uma “camada de virtualização” que traduz essas solicitações para o hardware presente na máquina.

As máquinas virtuais são capazes de “enganar” os programas e sistemas operacionais, pois eles acreditam que estão sendo executados diretamente no hardware físico, e não dentro de uma simulação. Por isso, eles podem ser instalados da mesma forma que seriam dentro do sistema operacional. Além disso as mesmas podem servir de ambiente seguro para acesso à serviços na internet. Como ela é facilmente “reparada” no caso de problemas, ela não estará com nenhum tipo de programa malicioso. Quando o diretor de pesquisa da empresa finlandesa F-Secure veio ao Brasil investigar as fraudes bancárias, uma das soluções propostas por ele foi o uso de máquinas virtuais.

Ainda não se tem notícia de códigos maliciosos que tentem capturar dados dentro de máquinas virtuais, ou que consigam capturar os dados do host quando executados dentro de um sistema virtualizado.  No entanto, por serem sistemas virtualizados, tudo em execução nas máquinas virtuais é mais lento. Ela não serve, por exemplo, para executar jogos 3D. Alguns emuladores (de jogos e outros) também podem não funcionar em uma máquina virtual, por também dependerem das funções de virtualização do processador.

Existem no mercado diversos programas que criam máquinas virtuais. Os mais notáveis são o VirtualBox, da Sun, o VMWare, o VirtualPC da Microsoft e o Xen. Todos têm alguma versão gratuita ou são gratuitos com algumas restrições. O VirtualPC, por exemplo, é gratuito para qualquer usuário de alguma versão corporativa do Windows, como o Vista Business ou Windows XP Pro. O VirtualBox oficial é gratuito apenas para o uso doméstico, mas existe uma versão recompilada do programa (que é software livre) que pode ser executada sem restrições, mesmo em ambientes comerciais. O VMWare disponibiliza o VMWare Player, que permite rodar máquinas virtuais criadas pelas versões completas do programa. Existem máquinas virtuais prontas, disponíveis na internet, que podem ser executadas pelo VMWare Player, especialmente distribuições Linux. O Xen também é software livre e, portanto, 100% gratuito, mas funciona apenas no Linux.

E então, gostou? Deixa seu comentário aí em baixo e até o próximo post!


Referências:

“A virtualização de sistemas operacionais para usuários domésticos” por Caio Alexandre - http://www.guiadopc.com.br/artigos/19180/virtualizacao-sistemas-operacionais-usuarios-domesticos.html

“O que são máquinas virtuais?” por Roberto Hammerschmidt - http://www.tecmundo.com.br/maquina-virtual/232-o-que-sao-maquinas-virtuais-.htm

“Saiba o que são máquinas virtuais e como elas ajudam na segurança do PC” por Altieres Rohr - http://g1.globo.com/Noticias/Tecnologia/0,,MUL1252543-6174,00-SAIBA+O+QUE+SAO+MAQUINAS+VIRTUAIS+E+COMO+ELAS+AJUDAM+NA+SEGURANCA+DO+PC.html

sexta-feira, 15 de maio de 2015

Virtualização de Desktop

Durante nossos últimos posts está sendo reservado um tempo específico para falar de uma técnica muito importante que tem revolucionado o mercado cientifico e proporcionado vários benefícios, chamada de virtualização. Especificamente no post anterior apresentou-se um dos tipos de virtualização chamada de “virtualização por servidores”, que basicamente significa executar servidores virtuais em um único servidor físico. De forma similar, no post de hoje mais um subtipo de virtualização será abordado, chamado de “virtualização de desktop”. 
Primeiramente, o que é desktop? Alguns já devem ter ouvido falar dessa palavra, afinal estamos na era da computação, mas vale a pena ressaltar. Bom, desktop em poucas palavras significa o ambiente principal do computador, onde se encontram aplicativos, pastas, arquivos, atalhos, etc. Já sabemos que virtualização é uma técnica que cria um ambiente virtual que simula um real, e agora já temos certa base sobre o que seria desktop, então fica fácil identificar o que é virtualização de desktop, não é mesmo? 
Em termos formais, Virtualização de Desktop é uma tecnologia que separa o sistema operacional e suas aplicações do dispositivo físico que acessa o mesmo. Ou seja, permite a criação de uma máquina virtual que estará separada do computador físico (hardware) e do sistema operativo anfitrião (ou ainda, sistema operativo já existente na máquina física). As máquinas virtuais são gerenciadas por um software de virtualização (hypervisor, visto no post anterior). O conjunto Hypervisor+Desktops Virtuais roda em um conjunto de servidores destinados exclusivamente para este fim. Observe a figura abaixo:
Ilustração das interação entre Hypervisor e Desktops
Esse tipo de virtualização é muitas vezes chamado de Virtualização de Cliente, pois ocorre a criação de uma máquina virtual para cada usuário. Dessa forma, cada desktop tem seu próprio sistema operacional e aplicativos. O usuário interage com um desktop virtual da mesma forma que usaria um desktop físico, com a vantagem de poder acessar remotamente, através de rede, sua área de trabalho a partir de qualquer localização.

Ilustração de Virtualização de Cliente

As principais vantagens da Virtualização de Desktop são: ganhos de gerenciamento, segurança, disponibilidade do ambiente, mobilidade, padronização e diminuição de custos de aquisição e manutenção dos desktops. Em termos de segurança pode-se destacar que os dados não trafegam pela rede externa, o que trafega são apenas os dados de controle e os "pixels" que formam a tela da aplicação, o que oferece de certa maneira uma segurança a mais.
Já as  desvantagens da Virtualização de Desktop são: consumo alto de processamento e memória, o que requer servidores com maior processamento, e a impossibilidade de rodar alguns aplicativos, entre eles aplicativos VOIP e de videoconferência. 
Bom pessoal, nesse post aprendemos bastante sobre a virtualização de desktop, suas vantagens e desvantagens, então ficamos por aqui, e até o próximo post!
Não esquecendo que ainda temos mais alguns tipos de virtualização para aprender! Fiquem atentos. ;)  

Referências:
"O que é Virtualização?", por Fabio Eduardo Amaral -http://www.tecmundo.com.br/web/1624-o-que-e-virtualizacao-.htm
“Virtualização de Desktops”, Planus - http://www.planus.com.br/virtualizacao-de-desktops-cde-22
“Virtualização de Desktop como Solução para a Redução de Custos”, por Adriana Aparecida Costa - http://www.techoje.com.br/site/techoje/categoria/detalhe_artigo/887 
“O que é desktop virtualization ou virtualização de desktop?”-  http://www.profissionaisti.com.br/2014/08/o-que-e-desktop-virtualization-ou-virtualizacao-de-desktop/