Posts tagged: bash

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 5

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

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 4 olhamos para o uso de ferramentas para garantir que estamos executando a última versão das fontes de código e dados, de modo que os resultados obtidos são sempre up-to-date com as últimas informações do negócio e da lógica.

Pré-Implantação

Antes de implantar o seu sistema de rede, se há uma coisa que você faz e uma coisa só que é referência do seu sistema atual! Não importa o que dizer aos colegas sobre o quanto trabalho extra o seu sistema vai fazer menos que você tenha números para apoiar isso as suas garantias não são nada. Assim,

  • quantos registros você pode processar atualmente? Por dia? Por hora?
  • Quanto tempo normalmente necessário para virar um emprego?
  • Quanto mais capacidade que você tem?

Há também questões adicionais:

  • Se o seu servidor de processamento (ou um de seus servidores de processamento) vai para baixo como isso afetará as suas capacidades, você vai estar aleijado?
  • Quais as vantagens que você espera / espera obter a partir de um sistema de rede?
  • São máquinas de seu escritório capaz de executar os trabalhos?
  • São o seu (ou você pode ser convertido empregos) para wrok neste estilo de correr?

O último ponto importante é levar o seu tempo em qualquer grande mudança como esta. Atualize seu código de processamento para trabalhar com a nova metodologia de referência, mais uma vez. Possivelmente configurar o servidor de processamento para executar uma máquina virtual, afinal de contas o seu servidor de processamento será apenas outro trabalhador (apenas uma forma muito poderosa relativamente). Permitir que o novo processo para resolver.

Desenvolvimento

Minha sugestão seria a aparecer no fim de semana um escritório executar todas as instalações e configuração. Faça isso imediatamente antes de férias de duas semanas e deixar para outro coitado para lidar com as consequências ... talvez não ...

Implantação de um sistema como este precisa ser lenta. Apesar de ser relativamente simples de configurar este sistema irá afectar a sua infra-estrutura de escritório inteiro (bem o digital). Em primeiro lugar, lançar um par de máquinas ao mesmo tempo, monitorar o tráfego de rede, como os anfitriões do trabalhador executar no dia-a-dia. Você pode precisar alterar a configuração do trabalho em resposta às suas descobertas.

Uma vez que o sistema se estabeleceu com algumas máquinas (digamos 10% de todas as máquinas de escritório, ou seja, 5) manter o tráfego de monitoramento de rede e máquina host performance. referência em Avançar novamente, agora você deve estar processando os trabalhos de 33% a mais do que os primeiros benchmarks. Verifique isto é assim, ou que você é, pelo menos, neste estádio. Se não, investigar o que está acontecendo antes de prosseguir. Repita este ciclo até que felizmente têm todas as máquinas de escritório funcionando sem matar o desempenho da máquina individual ou moagem sua rede a uma paralisação.

Em todos os momentos manter benchmarking, mesmo depois de todas as implementações são feitas. Verifique como as atualizações do novo código afeta a velocidade de seu sistema, verifique todos os trabalhadores estão relatando e processar os trabalhos. Aos poucos (muito lentamente) aumentar a sua configuração do trabalho para obter o melhor de seus trabalhadores e de rede.

Pare!

E se você quiser parar de correr os seus trabalhadores, em algum momento? Eles estão todos lá fora, correndo, regenerar, e tentar o seu melhor para processar dados, como insetos famintos. A resposta pode parecer óbvia, mas vale a pena acrescentar apenas no caso de sua esquecido. Basta editar o script de processamento com um exit (0) ou morrer () ou alguma outra indicação de matar o seu trabalho de processamento. Uma razão importante por que nós sempre tentamos fazer a atualização para o roteiro mais recente de processamento antes de qualquer corrida!

Sistema de demonstração

Para escrever este conjunto de pequenos artigos que eu criei uma rede muito pequena para demonstrar as tecnologias e metodologias. Eu li muitos artigos, tutoriais, e utilizado várias ferramentas para configurar e monitorar o que estava acontecendo. De maneira nenhuma eu tenho ido para fora e saturado de um escritório conjunto com o tráfego e nem tenho tido acesso a um PC normal membros do pessoal para ver como o desempenho do host foi afetada.

Meu sistema de demonstração era muito humilde, de fato. Eu usei o meu desktop normal configurado como um servidor de controle de trabalho. Por isso eu tinha instalado mySQL servidor instalado configurado como um mestre na replicação, PHP , Â e SVN ligados através de apache (para acesso via VM trabalhador).

Eu, então, criou uma máquina CentOS trabalhador no VirtualBox em um antigo Windows XP laptop 6 anos. Eu configurar tarefas agendadas conforme especificado após copiar o VM para a máquina e deixá-lo ir.

A máquina virtual foi criada com o PHP, subversão e mySQL. Eu verifiquei um ramo chamado "trabalhador" do meu trabalho repositório servidores de controle e fez com que ele pode ser atualizado usando 'svn update'. Em seguida eu instalação do MySQL como um escravo e verificado que os dados foram replicar a partir do MySQL no servidor de controle de trabalho até o VM trabalhador. Depois de tudo isso eu configurar o script para o cron job.

Meu script de processamento basicamente seguiram as linhas desse material (muito simples):

  • Leia no campo de nome
  • Contado o número de nomes semelhantes em uma tabela a partir da fonte de dados realizada na VM
  • Contado o número de nomes como acima, mas o nome da divisão por espaços (ou seja, nome próprio, do meio, sobrenome)
  • Repeti o processo 1.000 vezes

Cada trabalho levou cerca de 20 minutos para ser executado. Em um ponto eu abri várias cópias do VM trabalhador no laptop janelas e assistiram os trabalhos ser verificados fora por cada um dos endereços IP dos trabalhadores. Nesse ponto, eu também confirmou que a replicação é reiniciado automaticamente.

Deixando o laptop para a marcha lenta resultou em um trabalhador de começar a processar trabalhos a partir do servidor de controle de trabalho. Ao retomar o uso do laptop havia um atraso de cerca de 30-60 segundos, esta é uma boa quantidade de tempo e pessoal precisaria estar cientes de que sua máquina pode fazer uma pausa por um curto tempo quando voltar para a máquina. Máquinas novas podem não ter uma pausa deste tempo. O benefício da quantidade de processamento realizado por essas máquinas durante períodos de ociosidade seria mais que compensam os funcionários que têm que esperar um curto período de tempo (digamos, 1 minuto), ao chegar em suas máquinas de uma manhã (eu freqüentemente esperar mais que isso para um Windows Defender atualizar a ter lugar), desde que tomaram conhecimento desta (tempo útil para pegar um café da manhã!).

No geral eu me sinto confiante de que eu demonstrei as tecnologias que poderiam ser usados ​​para criar tal sistema. Eu tenho mostrado que esse sistema funciona em uma escala (muito) pequena e com pouco mais de experimentação pode ser ampliada utilizar os recursos de máquinas de um escritório. Se eu não chegar ao ponto de fazer isso eu estaria muito interessado em saber / ver quando alguém faz.

Conclusões / avaliação

O próximo passo óbvio seria começar realmente um exemplo do mundo real e começar a implantar um sistema como este dentro de um ambiente de escritório e ver o que acontece. Pedir a um negócio de se comprometer a isso sem uma companhia trilha ardente para provar que a tecnologia e eficácia pode ser um pouco difícil. Grid / A computação distribuída é muito popular é alguns círculos e tem algumas grandes aplicações (BIONC, o SETI @ Home, Folding @ Home, etc). Eu não, no entanto, encontrar uma escala menor e sistema simples como este em minhas pesquisas que poderiam ser implantadas dentro de um ambiente de escritório.

Eu criei um sistema basicamente livre usando software de código aberto e principalmente ferramentas disponíveis em quase todo o escritório. As tecnologias foram basicamente demonstrada e mostrar para executar e funcionar como esperado. Esperemos que eu tenho mostram que com o trabalho não muito e com uma configuração muito simples que você pode implantar um escritório sistema de computação em grade que é poderoso, Â, barato e escalável, tudo ao mesmo tempo.

Uma vez que o sistema está instalado e funcionando quase não há fim para a quantidade de customização e melhorias que você pode fazer. Por exemplo, estatísticas / análise comparativa podem ser facilmente adicionados mostrando o valor de um tal sistema todos os dias. Novas máquinas podem ser adicionados de forma rápida e facilmente como e quando eles chegam com upgrades de hardware existente reforçar o seu poder de processamento.

Espero que você tenha gostado de ler esta série de artigos e sua lhe deu alimento para o pensamento sobre a execução de um sistema de rede do escritório. A solução apresentada aqui não vai necessariamente funcionar em todas as situações, mas deve ser adaptável para permitir que você obtenha o seu processamento de dados feito usando a sua própria solução.

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.













Tema por Panorama Themocracy

8 visitantes online agora
7 visitantes, 1 bots, 0 membros
Max visitantes hoje: 11 em 03:05 am UTC
Este mês: 18 em 2012/07/05 04:35 UTC
Este ano: 69 em 27-02-2012 09:56 am UTC
Todos os tempos: 130 em 28-03-2011 10:40 UTC