Posts tagged: svn

Office Computing Grade utilização de ambientes virtuais - Parte 4

Por , sexta-feira 04 de dezembro de 2009 11:59

Introdução

Eu trabalho em uma empresa onde corremos muitos trabalhos em lote processando milhões de registros de dados de cada dia e eu estive pensando recentemente sobre todas as máquinas que se sentam em torno de cada dia sem fazer nada durante várias horas. Não seria bom se pudéssemos usar essas máquinas para reforçar o poder de processamento dos nossos sistemas? Neste conjunto de artigos que eu vou olhar para os potenciais benefícios da contratação de um escritório de grade utilização de ambientes virtualizados.

Na parte 3 , criamos a nossa máquina de processamento virtual e configurar o Windows para se tornarem máquinas de tempo ocioso dos trabalhadores.

Executando o código mais recente

Inevitavelmente, depois de criar sua lógica de negócio trabalhadores vai mudar, bugs serão encontrados, código mais rápido mais eficiente será produzido deixando seus trabalhadores sentados em torno de processamento de dados usando código smelly velho . Como então garantir que estamos sempre usando a versão mais recente e maior de nossos scripts de processamento?

Há alguns muito fáceis maneiras simples que poderíamos fazer isso, o truque, no entanto, é reduzir o poder de processamento e tráfego de rede para alcançar isso. Vamos começar com a mais simples das soluções e melhorá-lo lentamente ao longo de um par de iterações.

O primeiro método seria simplesmente conectar ao nosso servidor de controle de trabalho (via samba, FTP, ou similar) e puxe para baixo a versão mais recente do código. Não é muito eficiente, mas vai fazer o trabalho. Permite melhorar isso um pouco, como sobre a criação de um script rsync e usar esse tempo cada vez? Alternativamente o que sobre a colocação de nosso script mais recente transformação em subversão verificar o código inicialmente e depois é só atualizar o nosso código em cada run ( svn update )?

No final, pode acabar com um script bash (chamado pelo cron a cada 10 minutos), que parece tão simples como isto:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 então
     echo "Job está processando, de saída"
 outro
     echo "O trabalho não está sendo executado, começar agora"
     cd / caminho / para / trabalho / cópia
     svn update
     php yourJobProcessingScript.php
 fi 

Agora podemos ter certeza de que a cada rodada estamos definitivamente em execução o código mais recente. Estamos garantindo isso atualizando nossa base de código cada vez que fazemos uma corrida e reduzindo o tráfego de rede por transferir apenas as diferenças de arquivo em toda a nossa rede.

Na minha configuração de demonstração, eu fiz exatamente como descrito acima. Subversion foi instalado no meu servidor de processamento de trabalho e eu simplesmente puxou o último código de um "trabalhador" filial usando 'svn update'. Eu também adicionei uma tag número de versão para o meu script de processamento que foi devolvido ao banco de dados como parte do retorno de resultados. Desta forma, pude ver que meu código estava sendo atualizado cada vez que eu copiei meu tronco no ie ramo de trabalho que eu estava definitivamente executar o script mais recente de processamento.

Usando os dados mais recentes

Se o processamento do trabalho faz uso de fontes de dados, em seguida, em algum momento estes vão ser atualizados também. A menos que você chamar suas fontes de dados em uma base muito freqüente você vai inundar a rede com tráfego assim que os trabalhadores começam a correr levando tudo a um impasse. Para a minha solução, decidi que eu gostaria de passar minhas fontes de dados ao redor com minhas VMs.

Segure você cavalos lá! E se minhas fontes de dados são ENORMES? Bem este é realmente um caso de a quantidade de dados que estamos falando? Pode ser mais rentável para instalar um maior disco rígido adicional em cada máquina do que comprar um servidor de processamento adicional. Esta é uma questão de orçamento e até a empresa para decidir. É talvez a que suas fontes de dados são tão grandes que é apenas inviável para manter essa quantidade de dados em suas máquinas de trabalho. Nesse caso o que você faria? Bem, poderíamos olhar para chamar um servidor de dados local, mas isso pode causar problemas com a rede. Neste caso um sistema de rede, como isso pode se tornar irrealista para incluir em seu ambiente de escritório. Pode ser também que você pode olhar para estratégias alternativas de execução, por exemplo, só chamar seus trabalhadores oito horas - seis horas a cada noite e / ou otimização de solicitações de dados de origem.

Seguindo em frente, vamos dizer os nossos dados quantidade de fontes de 100Gb de dados. Bem, sim isso é um pouco de dados para se deslocar na rede em uma atualização. Como podemos garantir que temos a cópia mais recente dos dados neste caso? Rsync é uma possibilidade, mas pessoalmente eu acho que, executando o seu mais recente fonte de dados no seu servidor de processamento de trabalho e como fazer essa configuração como um mestre na replicação (com um log bin bom tempo) pode ser o caminho a seguir:

replicação Ao definir cada um de seus trabalhadores como um escravo para o trabalho atualizações do servidor de controle de suas fontes de dados irá escorrer bem a seus trabalhadores, sem um grande aumento na atividade da rede (que é a menos que você executar uma atualização de dados enorme e todos os seus trabalhadores entram em ação de uma vez). Isto tem vantagens sobre rsync em que você não iria ficar uma longa pausa antes de cada trabalho, como as atualizações do banco de dados, o mysql daemon no seu trabalho continuamente atualizar seus dados, o processamento continua.

Isto é como eu configurar meu servidor de demonstração. Para configurar a replicação eu segui o guia no site do MySQL ( Configurando replicação ) e em 20 minutos eu tinha o meu trabalho inital replicar o trabalho de controle conjunto de dados servidores. Para cada trabalhador adicional as configurações de replicação e processo de trabalho cada vez que a máquina virtual foi copiado.

Resumo

Nesta seção do artigo vimos como é fácil e indolor é para manter o seu código de processamento até à data por using rsync ou subverion (SVN) para fazer o trabalho e reduzir o tráfego de rede no mesmo time. Também discutimos como para manter suas informações de fonte de dados up-to-date, permitindo-a escorrer para cada um de seus trabalhadores. Assim, área que garanta a manter-se com a lógica de negócios e informação no nosso sistema de rede do escritório. Não será, obviamente, inúmeras alternativas para a execução dessas tarefas, mas aqui foram dois exemplos simples para mostrar como é fácil uma solução está por vir.

Próxima vez

Na parte final desta série, apropriadamente chamado Parte 5 , vamos discutir a implantação deste sistema para. Vou resumir o que foi aprendido eo que eu consegui criar.

Office Computing Grade utilização de ambientes virtuais - Parte 1

Por , sexta-feira 04 de dezembro de 2009 11:23

Introdução

Eu trabalho em uma empresa onde corremos muitos trabalhos em lote processando milhões de registros de dados de cada dia e eu estive pensando recentemente sobre todas as máquinas que se sentam em torno de cada dia sem fazer nada durante várias horas. Não seria bom se pudéssemos usar essas máquinas para reforçar o poder de processamento dos nossos sistemas? Neste conjunto de artigos que eu vou olhar para os potenciais benefícios da contratação de um escritório de grade utilização de ambientes virtualizados.

Como PHP desenvolvedor vou usar as ferramentas que eu uso todos os dias, ou seja, Linux, MySQL , PHP, VirtualBox e Subversion (SVN). No entanto, eu espero que este guia irá se adaptar a outras linguagens e tecnologias tão bem.

A solução que fornecer serão muito vagamente baseado no tipo de processamento que seria necessário para alcançar, isto pode não ser verdade através de todo o artigo como eu vou mudar as coisas para a simplicidade, ou para produzir cenários de uso mais interessantes.

Estes ambientes virtualizados serão executados em máquinas com Windows pois é isso que a maioria dos escritórios executado. O tratamento que as máquinas de escritório não deve interferir com o pessoal usando essas máquinas, devem não necessitam de manutenção na máquina, e ser facilmente destacável para novas máquinas que estiverem disponíveis. Além disso, novas máquinas virtuais não deverá exigir qualquer configuração adicional, pois isso reduz a escalabilidade ea facilidade com que o sistema de rede pode ser prorrogado.

Por que implantar um Grid Computing Office?

Primeiramente, você pode estar pensando, por que não usar um recurso de computação em nuvem como plataforma EC2 da Amazon ? Bem, as razões podem ser várias, por exemplo:

  • Você não vai confiar certos dados para um ambiente de computação em nuvem
  • Você não pode colocar alguns dados em um ambiente de cloud computing, por motivos legais (por exemplo, dados de deixar o país), potencialmente, por razões legais, por exemplo, registros do SNS.
  • Você quer manter as suas unidades de processamento de fechar e tem total controle sobre o hardware também
  • Você não tem os fundos do projecto de execução de instâncias de nuvens
  • Seu escritório não tem uma conexão com a internet e, portanto, que não é possível usar um recurso de nuvem
  • Você não gosta de chuva, nuvens de chuva sugerem, portanto, a manter bem longe

Tenho certeza que a lista poderia continuar, mas eu acho que é suficiente por enquanto.

Vantagens de um Grid Computing Escritório

Bem, vamos fazer alguma matemática (e em grande estilo física verdade vamos fazer algumas suposições abrangentes). Imagine que você tem de processamento do servidor grande executando beefy 100 postos de trabalho por dia. Em seu escritório, você tem 50 máquinas que estão ociosos 16 horas por dia, cada uma dessas máquinas é de 10% tão poderoso quanto seu sever processamento robusto. (Todos os resultados aqui são arredondados para subestimar aumento de desempenho).

Assim, uma máquina de poder do * 10% * 2/3 do tempo = 0,067 ou seja, processamento desktop 1 no tempo ocioso pode processar 6 vagas de emprego completas por dia.

Se você agora escalar isto leva 15 desktops ociosos para processar trabalhos como muitos por dia como seu servidor de processamento principal faz.

Assim, em nosso escritório fingir de 50 máquinas, poderíamos aumentar nosso poder de processamento a partir de 1 servidor até 4 servidores de processamento pleno, ou poderíamos estar processando 400 empregos por dia em vez de 100.

Aviso prévio, por nenhum investimento em hardware novo a sua empresa acaba de ampliar sua capacidade de processamento em lote 4 vezes! Potencialmente você vai aumentar o seu consumo de energia, mas da maioria dos ambientes de escritório que estiveram em máquinas são geralmente deixadas durante a noite de qualquer maneira, assim que você poderia ver isso como uma iniciativa verde.

Outras vantagens também significa que o investimento em novas (ou atualizado) servidores de processamento pode ser adiada se as máquinas de seu escritório são suficientes e que, como você melhorar o poder de suas máquinas de escritório sua grade escritório torna-se mais poderosa automaticamente.

Tecnologias

O que você precisa? (Ou mais corretamente o que eu uso):

  • Ociosos de máquinas para escritório (no meu caso um livre de idade janelas laptop XP)
  • VirtualBox (ou outro software de virtualização de cliente)
  • Uma máquina virtual com PHP, mySQL running executando um corte OS, eu estou chamando esses servidores meus Limp :)
  • Trabalhos para serem executados
  • Servidor Job (pode ser uma outra máquina virtual em algum lugar)

Empregos típicos

Os tipos de empregos que este sistema é projetado para executar é o seguinte:

  • Sistema recebe uma lista de dados sobre a qual precisamos para corresponder e retornar resultados
  • Correspondência envolve verificar / pesquisar várias fontes (bastante estática) de dados
  • Resultados das fontes de dados podem requerer uma validação adicional, fusão, verificação de fontes de dados adicionais em resposta aos resultados
  • Os dados são devolvidos com registros correspondentes devidamente validados e processados
  • Cada registro dentro de um trabalho é independente do resto

Então, basicamente, nós estamos olhando para executar trabalhos que requerem uma mistura de pesquisas do banco de dados e algum processamento de números, um cenário bastante comum em um ambiente de negócios.

Soluções de redes não só são vantajosos para processar os trabalhos deste tipo. Basicamente, qualquer processo que pode ser dividida em unidades independentes podem ser executados em paralelo. Veja esta wikipedia exemplos e mais informações: Grid Computing , mas um par de exemplos famosos são Seti @ Home e BIONC . Há quadros para a execução de redes de computação, e estes valem bem a pena olhar em.

O que vamos conseguir?

Ao final desses artigos, espero mostrar que a implantação de uma grade de escritório não precisa estar consumindo muito caros ou de tempo. Estou indo para discutir:

  • Configurando o sistema de controle de trabalho, configuração de trabalho
  • Criando uma máquina de processamento virtual apropriada
  • Como configurar o sistema em uma máquina Windows
  • Garantir que você está usando o código mais recente e os dados
  • Implantação e avaliação do desempenho
  • Olhando para o futuro

Eu estarei de construção (ok eu construí, então escrevi isso) uma aplicação de exemplo para testar os conceitos em uma máquina local usando o windows XP e minha máquina GridMachine 'virtual. Meu servidor de controle de trabalho será a minha máquina principal, que corre o Fedora 11 .

Isto é de modo algum significado para demonstrar um sistema totalmente funcional robusto, o seu significado mais de uma demonstração e discussão mostrando que estas coisas pode ser conseguida num espaço de tempo razoavelmente curto e com custos relativamente reduzidos. Sinta-se livre para me enviar quaisquer comentários, correções ou melhorias e eu vou fazer o meu melhor para manter este artigo atualizado para corresponder.

Próxima vez

Na parte 2 eu vou começar por olhar para o sistema de controle de trabalho, e olhar em como os trabalhos devem ser configurados para atingir maior quantidade de processamento, garantindo que cada trabalho é processado, sem falhar.













Tema por Panorama Themocracy

8 visitantes online agora
7 visitantes, 1 bots, 0 membros
Max visitantes hoje: 10 às 01:53 am UTC
Este mês: 40 em 23-05-2012 03:33 am UTC
Este ano: 69 em 27-02-2012 09:56 am UTC
Todos os tempos: 130 em 28-03-2011 10:40 UTC