Posts tagged: virtual

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

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

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 2 nós olhamos os trabalhos serão executados num servidor, e como os trabalhos devem ser configurados para atingir maior quantidade de processamento, garantindo que cada trabalho é processado, sem falhar.

Configurar o trabalhador - ou servidor LIMP

O próximo passo no processo é a criação de seus trabalhadores virtuais. Por isso eu vou usar uma instalação do CentOS usando VirtualBox. Vou instalar mySQL e PHP no servidor, também conhecido como Bizkit (Li nux, m ySQL, P HP) Servera (eu possa ter feito esse nome).

  • Instalar VirtualBox em sua máquina windows (seguir link)
  • Baixe e instale o CentOS (versão atual 5.3) dentro de uma máquina virtual criada

Não adianta me ir a este provavelmente há 1.000 's de tutoriais lá fora (ok, aqui vai um: Criando e Managing CentOS máquina virtual no VirtualBox ). O ponto importante a notar é que suponho que eu chamei minha máquina virtual GridMachine.

Tanto quanto as minhas escolhas do cliente de virtualização de sistema operacional e lá não é grande motivo convincente para cada escolha. VirtualBox é algo que eu uso na minha máquina em casa e é apoiado pelos três principais sistemas operacionais. Eu escolhi o CentOS como seu sistema operacional uma boa estável e eu uso no meu próprio servidor web. Sou um grande crente nas ferramentas certas para o trabalho (embora eu estou aplicando "usar o mais rápido e mais fácil para você" mentalidade aqui), então se o sistema operacional X executa o código mais rápido e mais eficiente usar isso em vez :)

É importante se certificar de que sua VM usa DHCP, caso contrário, para cada nova máquina virtual que precisa ser configurado separadamente que é algo que não want.By utilizando DHCP não precisa configurar as configurações de rede individualmente para máquinas de trabalho, DHCP irá entregar fora IPs para você. Portanto, você pode copiar a sua máquina virtual sobre o escritório sem se preocupar sobre como configurar cada um para cima (isto melhora a escalabilidade e reduz a administração trabalhador).

O processo que você deve ter por objectivo seria obter uma nova máquina física, instale o VirtualBox, e, em seguida, praticamente implantar a imagem virtual sem muito mais. Pode ser sábio para configurar todos os seus trabalhadores em uma sub-rede diferente para que você possa, pelo menos, ver quantas máquinas estão funcionando. Você também precisa configurar suas máquinas em um contrato de longo ou de concessão ilimitada DHCP.

Como executar Jobs sobre o trabalhador

Esta é uma área interessante e existem vários métodos válidos para processar os trabalhos sobre o trabalhador. Aqui eu só vou discutir os dois mais óbvios:

  • Perpetuamente executar o script: Um script, seja ele um shell script, ou um script PHP é executado uma vez sobre o trabalhador e é executado como parte de um loop infinito. Eu já descontado este método como um acidente do script e, potencialmente, os trabalhadores deixarão de funcionar sem algum tipo de intervenção.
  • Cron a execução de scripts baseada em: a cada X minutos o daemon cron inicia uma chamada para o script para fazer as coisas acontecerem. Sem alguns testes este poderia levar a muitas muitas cópias de sua corrida roteiro trabalhador.

Minha decisão era ir com o cron que começa um shell script cada minutes. 10 Meu script shell executa as seguintes tarefas:

  1. Faça uma lista de processos e grep para este 'php'. Se não for encontrado, em seguida continuar.
  2. Ligue para o seu código de trabalho, no meu caso isso seria algo baseado PHP
  3. Roteiro trabalhador completa a sua execução
  4. Pronto para ir novamente na próxima chamada apropriada

Meu script bash parece algo como o seguinte:

  #! / 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"
     php yourJobProcessingScript.php
 fi 

Nota: o de eco são quase completamente inútil, mas pode ajudar a próxima pessoa que vem para tentar editá-los.

Isso conclui a configuração da máquina de trabalho virtual, rápida, simples e fácil de copiar a cada nova peça de hardware que é recebido. A "inteligência" do sistema de rede realmente não é visualizado no sistema operacional, é tudo a ver com o código criado para trabalhos do processo, a configuração do trabalho, e para garantir que o trabalho é executado quando for o caso (ou seja, quando o anfitrião é ocioso ).

Configurando o Windows para inicializar Trabalhadores

A primeira tarefa é descobrir o comando necessário para executar a máquina virtual a partir da linha de comando do Windows. Se você instalou o VirtualBox no local padrão e você nomeou seu trabalhador GridMachine então o comando necessário para carregar o seu trabalhador é:

  "C: \ Arquivos de programas \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

No entanto, para executar o script em um estado 'sem cabeça', precisamos usar:

  "C: \ Arquivos de programas \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - VRDP = off 

Isto irá iniciar a máquina virtual sem a GUI e permitir que ele salve o estado graciosamente. O segundo argumento desliga RDP por isso não entra em conflito com janelas RDP, ou dar-lhe uma mensagem sobre escuta na porta 3389. O nome da máquina virtual é sensível a maiúsculas!

A seguir, vamos precisar definir janelas até começar a nossa VM trabalhador uma vez que a máquina estiver ociosa. Para fazer isso (no Windows XP) você precisa ir em Iniciar -> Programas -> Acessórios -> Ferramentas do Sistema -> Tarefas agendadas conforme abaixo:

tarefas agendadas

Em seguida clique em "Adicionar tarefa agendada 'seguido de navegar para adicionar um programa personalizado. Navegue até o script VBoxManage e clique em OK. Agende sua tarefa para qualquer uma das opções (vamos mudar isso em um minuto) e continuar. Depois de pular a próxima tela do Windows irá pedir que você deseja executar esta tarefa, eu sugiro que seja "Administrador" ou criar um novo usuário privilegiado. Lembre-se que não queremos interferir com a conta pessoal padrão na máquina a qualquer momento. Clique ao lado e confira show advanced options para esta tarefa.

Para o fim da caixa de texto longo adicionar nosso string 'startvm GridMachine "e garantir que execução somente quando conectado fica desmarcado. Visite a tarefa seguinte cronograma e alterar o cronograma de cair para a opção 'quando ocioso ", escolha a quantidade de tempo que você gostaria que o computador esteja ocioso antes de passar para a próxima guia.

Finalmente desmarque a opção que afirma parar a tarefa se ela foi correndo X quantidade de tempo, mas não assinalar a opção de parar a tarefa se a máquina não está mais ociosa.

programar

É isso então, para a configuração de host do Windows!

Resumo

Nesta parte temos um conjunto de uma máquina virtual para agir como um trabalhador, bem como a maneira pela qual nós chamamos e executar nossos scripts de processamento de trabalho (para mim um script PHP). A partir daqui, veremos como configurar nossas cópias do Windows para iniciar a máquina virtual no modo headless quando o computador torna-se ocioso, e salvar seu estado quando o usuário retomar a utilização da máquina. Esperemos que neste momento você está vendo como é simples para configurar um sistema deste tipo e está ansioso para começar algumas experiências vai você mesmo!

Próxima vez

Na Parte 4 , vamos estar a olhar para o uso de ferramentas para garantir que você está rodando 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.

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.

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

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.

Na parte 1 eu dei uma visão geral do sistema e as tecnologias que estarão usando, bem como discutimos algumas das possíveis razões por que você gostaria de criar uma rede de escritório.

Job Control

Se você estiver indo para ser executado empregos, então você vai precisar de alguma maneira de gerenciá-los. Seu sistema de controle do trabalho (em seu servidor de emprego) precisa ser muito bem pensada antes mesmo de tentar executar uma rede de escritório. Então, em primeiro lugar, quais são as tarefas de um sistema de controle de trabalho:

  • Distribuir os trabalhos, a pedido dos trabalhadores
  • Diga trabalhadores que tipo de postos de trabalho para executar
  • Empregos Pista
  • Certifique-se que os trabalhos são executado apenas uma vez
  • Fornecer dados de emprego aos trabalhadores, ou pelo menos dizer-lhes onde obtê-lo

O sistema também deve ser extensível, uma solução que funciona por enquanto em um único caso pode ser estendido para executar vários tipos de trabalhos como a empresa vê o valor em uma solução de rede. Por exemplo, os trabalhos podem ganhar prioridades, mais de um tipo de trabalho pode existir (ou seja, várias bases de código), eventualmente você pode até mesmo executar várias máquinas de trabalho diferentes que são otimizados para cada tipo de trabalho (apesar de que não se afasta do trabalhador genérico 'idéia). Sempre tento pensar no futuro no desenvolvimento de sistemas, uma visão de curto prazo pode levar à frustração a longo prazo e tempo de desenvolvimento maior.

Servidor de trabalho

Nós vamos precisar de um lugar para controlar o nosso trabalho de, este deve ser o único sistema em sua rede que tem um fixo resource locator, seja um endereço IP, nome do host URL (usando DNS interno), etc Isto é porque os trabalhadores precisam saber onde procurar emprego, os trabalhadores precisam encontrar o sistema de controle de trabalho (não o sistema de controle de trabalho encontrar os trabalhadores).

O servidor de trabalho em si não tem realmente uma tarefa complicada (em um sistema básico de qualquer forma), ele precisa armazenar uma lista de empregos, mão de empregos, receber os resultados, e, posteriormente, armazená-los para posterior recuperação. Como essas peças (como "mão de empregos") são definidos pode ser muito básico. Mais tarde, podemos estender o sistema para incluir uma interface de administração para adicionar, editar, apagar, suspender os trabalhos, mas isso está além deste exercício.

Não há nenhuma razão que seja, então, que o seu servidor de trabalho não poderia ser uma máquina virtual rodando dentro do seu servidor de processamento principal, desde que não drena muitos recursos dele. O servidor de trabalho no entanto é necessário alta disponibilidade, se ele vai para baixo em uma noite de sexta-feira você vai perder um fim de semana inteiro de processamento, potencialmente custando-lhe um par de semanas no valor de tempo de processamento (quando comparado com o seu servidor de processamento principal sozinho) . Você pode querer colocar o seu servidor de trabalho em um ambiente de balanceamento de carga para alta disponibilidade.

Configuração básica

A configuração básica para o nosso servidor de trabalho consistirá em o que eu estou chamando um dos meus servidores Bizkit (que é Li nux, m ySql, P HP). O código em execução em trabalhadores Thea vai realmente descobrir o que ele pode executar trabalhos, interagindo com bancos de dados com emprego de sistemas de controle. Posteriormente, poderíamos criar um serviço web e realmente mão empregos ao invés de ter os trabalhadores fazem o trabalho duro em si, mas por agora vamos continuar usando o princípio KISS (Keep it Simple, Stupid!).

Então, vamos criar três mySQL tabelas para lidar com os trabalhos. Estes serão os `empregos`, `jobRecords`, e `jobResults`.

empregos tabela Aqui eu estou usando SQL camarada uma ótima alternativa pouco para phpMyAdmin só porque é mais fácil de instalar no CentOS (para os outros o vêem: 10 ótimas alternativas para phpMyAdmin )

Esta tabela é composta por 5 campos simples,

  • ID: Identifique o trabalho
  • nome: Poderia ser uma referência de cliente, ou qualquer número de outros identificadores
  • Status: Você precisa saber onde o trabalho está, por exemplo,
    • 0: Não iniciado
    • 1: Pegou
    • 2: Concluído
  • started_by: Quem começou a fazer o trabalho? Isso não é totalmente necessário, mas é um bom ter. Eu sugiro que os trabalhadores de rastreamento pelo seu endereço IP em sua rede
  • started_at: Quando o trabalhador iniciar o trabalho? Ao acompanhar os trabalhos que não tenham concluído dentro de X quantidade de tempo que sabemos que precisamos para pegar o trabalho mais uma vez e começar a processar por outro trabalhador. Os trabalhadores poderiam parar o processamento / go off-line para qualquer número de razões, falta de energia, acidente, perda de rede, etc

É fácil como esta tabela pode ser estendido com alguns campos suplementares para permitir estatísticas de rastreamento, uma coluna de tempo de chegada para ver quanto tempo o trabalho levou, um contador para ver quantos trabalhadores pegou o trabalho (obviamente isso precisa tendem a 1), a prioridade dos trabalhos, a lista pode ir sobre e sobre. Em cenários mais complexos de trabalho seria possível especificar a quantidade de memória que o trabalhador precisaria de acesso (e, portanto, usar apenas os trabalhadores mais adequados), ou mesmo que tipo de trabalhador seria necessário.

Permite adicionar um exemplo poucos empregos:

empregos exemplo

A próxima tabela novamente é bastante simples de entender, estes são dados que o nosso trabalho. Eles estão ligados à tabela de trabalhos principal por uma coluna `jobs_id`. A composição desta tabela depende muito dos dados que você precisa fornecer a seus trabalhadores, vamos fazer um exemplo muito simples, onde temos quatro colunas:

  • id: identificação do registro
  • nome: o nome da pessoa
  • Endereço: Endereço da Pessoa
  • jobs_id: A ID de trabalho que este registro está ligado à

A tabela terceiro e último é constituído por uma tabela de resultados, que tem o mesmo tornar-se como a nossa tabela registos, e com a adição de algumas colunas poderia ser parte da tabela de registos:

  • job_record_id: Vincular o resultado para a mesa de trabalho
  • Resultado: Os dados do resultado

... E isso é tudo que você precisa para o controle de trabalho! (Embora a um nível muito básico) No meu caso eu estou apontou para outra tabela onde meus dados para processo foi localizado, mas isso pode apenas como facilmente ter sido um arquivo, os parâmetros para executar código de simulação, o nome dele.

Selecionando um emprego

Como mencionado anteriormente, os trabalhadores vão fazer o nosso trabalho de gestão para nós agora, para tudo o que precisamos realmente fazer é encontrar um trabalho que precisa de processamento e obter as informações. Como faríamos isso? Bem escolher os nossos critérios de seleção de emprego e procurar emprego, em SQL eu fiz o seguinte:

  1. Tome todos os trabalhos que não estão marcadas como concluídas, mas do nosso trabalhador e redefini-las (substitua ME__ __ com um identificador mais fácil, seria o endereço IP):
      UPDATE `empregos` SET `status` = 0 WHERE `status` = 1 AND `started_by` = __ ME__; 
  2. Usando os nossos critérios de seleção de emprego, selecionar um trabalho e dizer ao sistema de controle que este trabalhador está lidando com isso:
      UPDATE `empregos` SET `status` = 1, `started_by` = __ ME__, `started_at` = NOW () WHERE `status` = 0 OR
     (`Status` = 1 AND `started_at`> DATE_SUB (NOW (), INTERVAL HOUR X)) ORDER BY `id` ASC; 

    Ao pegar empregos que não apresentaram resultados em X quantidade de tempo que assegurar que todos os trabalhos são executados em caso de um trabalhador deixar de funcionar ou se ausentar sem licença.

  3. Em seguida pegue os detalhes empregos seguidos pelos registros próprios:
      SELECT * FROM `empregos` onde `started_by` = __ ME__ LIMIT 1;
     SELECT * FROM `job_records WHERE` id `= __ JOBID__; 

Após a conclusão do trabalho que inserir registros nosso resultado e marcar o trabalho como concluído. Lembre-se que os trabalhos podem suspender / retomar a qualquer momento permitem alguma robustez em seu script. Pode ser que a tarefa suspende a meio a atualização do sistema de controle de trabalho, então verificar o número de registros em um trabalho eo número de resultados salvos de volta para o sistema de controle de trabalho seria uma medida acertada.

Além disso, embora isso demonstra como os trabalhos podem ser selecionados e gerenciados a partir de um quadro SQL-query você deve realmente ser abstraindo o seu controle sobre o trabalho de modo que se você decidir passar a usar um serviço web, um sistema de arquivos baseado em XML , ou qualquer outro número de sistemas que não afetará o código acima.

Configuração do trabalho

O próximo aspecto a considerar é o tamanho do trabalho e configuração. Ao jogar com a configuração do trabalho, podemos encontrar um equilíbrio excelente entre a velocidade, a replicação de processos, e confiabilidade. Dedique alguns cenários OFA casal:

  1. Empregos tomar 1 a cada dia para ser executado: Isto significa que os trabalhadores precisam de 15 dias para processar cada trabalho (lembre-se 10% da energia para 2/3rds do tempo). Este não é claramente um sábio configuração, o tamanho do trabalho é muito grande! Levaria pelo menos o dobro do tempo para conseguir um emprego processado deve o trabalhador ir AWOL inicial (tempo de pegar que não retornou um resultado mais o tempo de reprocessamento). Em um ideal que você tem pelo menos um trabalho completo facilmente apuradas até ao final de cada período de tempo ocioso, de que maneira você mantém os postos de trabalho mais típico e, na pior caso, um trabalho levaria dois dias para o primeiro processo deveria vão faltar.
  2. Empregos levar 1 minuto para executar: Isto significa que os trabalhadores levar cerca de 15 minutos para executar cada trabalho. Embora isto possa parecer inicialmente ideal, você ganha processamento trabalho adicional durante a hora do almoço, coffee breaks, reuniões, etc este cenário coloca pressão sobre outras áreas de seu sistema e apresenta seus próprios problemas. Por exemplo, em primeiro lugar a sua razão de tempo de configuração / processamento está a ir direito para baixo, perdendo assim a eficiência do sistema. Sua rede vai ser constantemente informações sobre o trabalho de streaming para a equipe vários trabalhadores frustrante que são dong seu trabalho do dia a dia. Você também vai colocar mais pressão sobre seu trabalho como servidor de processamento que tem que repartir lotes e lotes de pequenas peças de trabalho em uma base regular. Por fim, nesta situação, se o seu servidor de emprego desce você vai criar um log de volta enorme de trabalho incompleto enquanto trabalhos maiores poderia de processamento continuou alegremente inconscientes de que o servidor estava passando por dificuldades de emprego.

Na realidade, não haverá uma configuração ideal para a sua instalação da grade, muito depende dos recursos disponíveis, tipos de trabalho, requisitos do trabalho tempo de produção, capacidade de rede, e assim por diante. No entanto, algumas diretrizes seria:

  • Trabalhos em tamanho de modo que cada trabalhador pode passar por pelo menos 3-4 empregos em um período de 15 horas (o mais longo período de tempo provável idle)
  • Jogue com o tamanho do trabalho de modo que o tempo de configuração torna-se bastante insignificante comparado com o tempo de processamento (tendo em conta o ponto acima).
  • Se um trabalho não for concluído em dobrar a quantidade de tempo (talvez menos) se espera para concluí-lo assumir que a sua AWOL ido e começar a processá-lo com outro trabalhador. Isto significa que você pode ter que esperar até três vezes o comprimento normal de um trabalho para a conclusão (possivelmente mais se o trabalho subsequente falha). Você pode querer reduzir esse tempo, mas tome cuidado para não reduzi-lo muito como você pode começar a duplicação de tarefas de processamento em uma base regular.
  • Jobs deve ser independente das exigências externas, tanto quanto possível. O servidor de emprego, por exemplo, só deve ser contactado no início e final de cada trabalho.
  • Não saturar sua rede, este terá dois efeitos negativos, sua equipe vai encontrar durante o dia usando a rede frustrante e os problemas podem ser experimentados com conexões tempo limite um problema que só vai piorar quando você escalar a grade.
  • Garantir os empregos podem ser executados em seus trabalhadores. Se os trabalhos tornam-se muito espaço de memória trabalhos intensivos ou intensivos disco vai começar a abortar ea única coisa que você notará é uma gota no número de trabalhos processados ​​sem motivo real.

Entregarem os resultados de um trabalho

Ao apresentar os resultados de um trabalho é importante verificar se os resultados não tenham sido apresentados por outro trabalhador, especialmente se o trabalhador atual tem estado dormente por algum tempo.

Quando os resultados são apresentados assegurar que o número de resultados coincide com o número de registos dentro do trabalho.

Como mencionado anteriormente, e não pode ser mais enfatizado, construir tolerância a falhas na recuperação de trabalhos e apresentação de resultados. Os trabalhadores podem (e provavelmente vai) entrar em modo de suspensão no mais inconveniente de vezes e isso precisa ser servidos. Também mais uma vez abstraindo sua submissão resultados ajudarão atender a futuras alterações ao seu sistema de controle de trabalho muito mais fácil de lidar.

Resumo

Neste sectiona vimos o que é um servidor de controle de trabalho precisa fazer e como obter um sistema bastante básico configurado. Discutimos como recuperar um trabalho a partir do sistema de controle ea melhor forma de configurar trabalhos para obter o máximo de nosso sistema de grade escritório. Para finalizar, um parágrafo ou dois sobre como enviar os resultados de volta para o servidor de controle de trabalho foi apresentado.

  • Um servidor de controle de trabalho gere empregos e garante que todas as unidades de trabalho são concluídas
  • Ao abstrair o seu trabalho Select / resultados submissão podemos mudar a tecnologia do servidor de controle sem muitos problemas
  • Configure seus trabalhos para garantir que eles são executados de forma rápida e eficiente, sem colocar demasiada pressão sobre a infra-estrutura de rede, e sem duplicar tarefas de processamento em uma base regular.
  • Certifique-se de construir a tolerância a falhas e checking erro em suas rotinas, os trabalhadores podem suspender e retomar e mais inconveniente de vezes. Lembre-se de verificar se os resultados já foram apresentados por outro trabalhador.

Próxima vez

Na parte 3 vamos criar a nossa máquina de processamento virtual e configurar nossas máquinas de janelas para se tornar ocioso dos trabalhadores a tempo.

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

7 visitantes online agora
4 pessoas, 3 bots, 0 membros
Max visitantes hoje: 15 às 05:20 am UTC
Este mês: 26 em 2012/04/04 10:27 UTC
Este ano: 69 em 27-02-2012 09:56 am UTC
Todos os tempos: 130 em 28-03-2011 10:40 UTC