Ir para o conteúdo
TURNKEYGNU / LINUX
AplicativosDocumentaçãoBlogCapturas de telaGitHubTurnKey Hub
文Português
EnglishEspañol中文日本語PortuguêsDeutsch
Principal/Visão geral do projeto

Documentação

Visão geral do projeto

Contexto

Muitas tarefas em lote podem ser facilmente divididas em unidades de trabalho que podem ser executadas em paralelo. Em serviços de nuvem, como Amazon EC2, executar um único servidor por 100 horas custa o mesmo que executar 100 servidores por 1 hora. Em outras palavras, para problemas que podem ser paralelizados, isso torna vantajoso distribuir o lote em quantos servidores em nuvem for necessário para terminar a execução do trabalho em Pouco menos de uma hora. Para tirar pleno proveito desta economia um sistema automático de fácil utilização para lançar e destruir instâncias de servidor de forma confiável sob demanda e distribuir trabalho entre eles é requerido.

Termos e definições

  • Trabalho: um comando shell representando uma unidade atômica de trabalho
  • Tarefa: uma sequência de trabalhos
  • Modelo de tarefa: uma tarefa pré-configurada
  • Sessão: o estado de uma tarefa executada em um determinado momento. Isto inclui a configuração da tarefa, o estado das tarefas que terminaram de executar e uma lista de tarefas ainda pendentes de execução.
  • Dividir: o número de trabalhadores que os trabalhos de tarefa são divididos entre.
  • Trabalhador: um servidor que executa SSH em que executamos tarefas. Este pode ser um servidor persistente ou uma instância de servidor de nuvem EC2 alocada dinamicamente.
  • TurnKey Hub: a serviço web que o cloudtask pode usar para lançar e destruir servidores TurnKey pré-configurados para executar uma determinada tarefa.

Características

  • Trabalhos são apenas comandos simples executados remotamente: não há API especial. Comandos de shell são bem compreendidos, linguagem agnóstico e fácil de testar e desenvolver.

  • Configuração de tarefa ad-hoc através de opções / ambiente de linha de comando: cloudtask pode ser usado diretamente da linha de comando, que é útil para tarefas pontuais, ou para experimentar/depurar uma nova tarefa de rotina.

  • Modelos de tarefas pré- configurados: os parâmetros de configuração para tarefas de rotina podem ser incorporados dentro de um modelo de tarefa pré-configurado, que é em si executável como a tarefa na nuvem, e herda sua interface.

    Sob o capô, um modelo de tarefa é implementado definindo uma classe Python que herda Tarefa:

#!/usr/bin/python
from cloudtask import Task

class HelloWorld(Task):
    DESCRIPTION = "This is a hello world cloudtask template"
    COMMAND = 'echo hello world'
    SPLIT = 2
    REPORT = 'mail: cloudtask@example.com liraz@example.com'

HelloWorld.main()
  • Execução transparente com registro em tempo real: Cloudtask fornece registro em tempo real para facilitar ao usuário seguir o progresso de uma tarefa. Por exemplo, o progresso de qualquer comando executado sobre SSH pode ser seguido seguindo o registro de sessão do trabalhador:

cd ~/.cloudtask/$session_id/workers/
tail -f 1234
  • Tolerância de falhas: CloudTask é projetado para sobreviver de forma confiável a vários tipos de falha.

    • servidores de worker são continuamente monitorados para falhas, de modo que uma tarefa executada em um servidor falhou pode ser redirecionada para um servidor que esteja trabalhando. Uma tarefa continuará a ser executada enquanto um único trabalhador sobreviver.
    • o usuário pode especificar um tempo limite por trabalho para que os trabalhos que congelam por qualquer razão vão passar o tempo graciosamente sem bloquear o trabalhador indefinidamente.
    • No caso de uma tarefa de nuvem de falha Hub API, irá esperar alguns segundos e tentar novamente.
  • Interromper e retomar a capacidade: uma tarefa pode ser interrompida a qualquer momento pressionando Ctrl-C, ou enviando o sinal TERM para o processo principal. Depois de todas as instâncias de servidor automaticamente lançadas serem destruídas, o estado da sessão é salvo para que possa ser retomado mais tarde de onde parou.

  • Gancho de apresentação de relatórios: quando a execução de uma sessão termina, um gancho de relatório pode ser configurado para executar uma ação arbitrária (por exemplo, enviar um e-mail de notificação, atualizar um banco de dados, etc.). Atualmente são suportados três tipos de manipuladores de relatórios:

    1. correio: enviar um e-mail com o log da sessão para um ou mais destinatários.
    2. sh: execute um comando shell. O diretório de trabalho atual está definido no caminho da sessão e o ambiente é preenchido com o contexto da sessão.
    3. py: execute um trecho arbitrário do código Python. A configuração da sessão e da tarefa são acessíveis como variáveis locais.

Como funciona

Quando o usuário executa uma tarefa, são executadas as seguintes etapas:

  1. Uma chave de sessão temporária do SSH é criada.

    A autenticação inicial para os trabalhadores assume que você configurou um agente SSH ou equivalente (a Cloudtask não suporta a autenticação de senha).

    A chave de sessão temporária será adicionada às chaves autorizadas do trabalhador durante a execução da tarefa e então removida. Precisamos autorizar uma chave de sessão temporária para garantir o acesso aos trabalhadores sem depender do agente SSH.

  2. Os trabalhadores são afectados.

    Servidores de nuvem de trabalhador são lançados automaticamente pela tarefa de nuvem para satisfazer a divisão solicitada, a menos que trabalhadores pré-alocados suficientes sejam fornecidos através da opção --workers.

    Um ID de backup TKLBAM pode ser fornecido para instalar as dependências de execução de tarefas necessárias (por exemplo, scripts, pacotes, etc.) no topo do TurnKey Core.

  3. - Armação de trabalhador.

    Após a atribuição dos trabalhadores, são criados. A chave de sessão temporária é adicionada às chaves autorizadas, a sobreposição é aplicada ao sistema de arquivos raiz (se o usuário tiver configurado uma sobreposição) e o comando pré for executado (se o usuário configurou um comando pré).

  4. Execução de trabalho.

    CloudTask alimenta uma lista de todos os trabalhos que compõem a tarefa em uma fila de tarefas. Cada trabalhador remoto tem um processo de supervisão local que lê um comando de trabalho da fila e executa-o sobre SSH no trabalhador.

    A tarefa pode ser interrompida antes de ter terminado se um --timeout tiver sido configurado.

    Enquanto o trabalho está executando, o processo de supervisão irá verificar periodicamente se o trabalhador ainda está vivo a cada 30 segundos se o trabalho não gerar nenhuma saída de console. Se um trabalhador não for mais acessível, ele é destruído e o trabalho abortado é colocado de volta na fila de trabalho para execução por outro trabalhador.

  5. Limpeza do trabalhador

    Quando não existem comandos de trabalho na Fila de entrada para fornecer um trabalhador, é limpo ao executar o comando post, removendo a tecla de sessão temporária da área autorizada Chaves.

    Se a tarefa da nuvem lançou o trabalhador, ele também irá destruí-lo neste ponto para parar taxas incrementais de uso.

  6. Relatório da sessão

    Poderá configurar- se um gancho de relatórios que executa uma acção quando a sessão terminar de executar. São suportados 3 tipos de ganchos de relatórios:

    1. e-mail: usa o /usr/sbin/sendmail para enviar um e-mail simples não criptografado contendo o log de sessão no corpo.

    2. sh: executa um comando shell, com a configuração da tarefa incorporada no ambiente e o diretório de trabalho atual definido para o caminho da sessão. Você pode testar o contexto de execução assim:

      --report='sh: env && pwd'
    3. py: executa um trecho de código Python com os valores da sessão definidos como variáveis locais. Você pode testar o contexto de execução como este:

      --report='py: import pprint; pprint.pprint(locals())'
TURNKEYGNU / LINUX

Controle sua infraestrutura sem começar do zero.

Explorar o TurnKey
SobreDocumentaçãoPerguntas frequentesBlogGitHub
Livre e de código abertoSeguro por padrãoPronto para implantar