Sign inSign up

luizm/scheduler

By luizm

•Updated over 9 years ago

https://github.com/Luizm/scheduler

Image
0

215

luizm/scheduler repository overview

⁠Scheduler

Agendador de atividades recorrentes ou pontuais que rodam em containers, feito para propósito de testes.

⁠Arquitetura

VPC:

VPC scheduler.local, utilizada pelo master e workers para comunicaço usando endereços privados, porem possui apenas redes públicas para acesso as instancias.

Route53:

Domínio sheduler.local, utilizado pelo workers para retornar o status dos jobs ao master.scheduler.local

Master:

Instância EC2 onde roda container da aplicação scheduler, fornece os endpoint para adicionar, deletar, listar e mostrar os status das atividades. O servidor master faz parte de um role chamado SchedulerMaster que possui privilegios para lançar instancias chamadas de workers.

Workers:

São instâncias EC2 lançadas na VPC, são provisionadas via user-data, rodam determinado container e parâmetros especificados pelo master. Os workers normalmente serão do tipo spot, lançados na Availability Zones de menor custo, porém o master pode lançar istancia on-demand quando o valor de spot instance for maior que ondemand.

⁠Requisitos:
⁠Como criar o ambiente:

IMPORTANTE: Nessa primeira versão funciona apenas região us-west-2 e não esta parametrizado.

1 - Provisionar a infra-estrutura

git clone [email protected]:Luizm/scheduler.git<
cd scheduler/terraform/master
terraform get
terraform apply

2 - Acessar a interface da amazon, regio us-weast-2 e conectar pelo EIP ao master.scheduler.local

3 - Setar corretamente as configurações do worker:

vi /scheduler/worker_config.yml
⁠EndPoint:

http://localhost:5000/scheduler/add⁠

⁠Parmetros:
  • job_name - Indetificador do job
  • docker_image - Imagem docker com a atividade a ser executada
  • day_of_week - dia da semana (0-6 ou mon,tue,wed,thu,fri,sat,sun)
  • hour - hora (0-23)
  • minute - minuto (0-59)
  • end_data - Data final, exemplo: 2017-12-01

Exemplos:

curl -X POST http://localhost:5000/scheduler/add?job_name=Teste&docker_image=hello-world&day_of_week=mon&hour=10&minute=01&end_data=*'

curl -X POST 'http://localhost:5000/scheduler/add?job_name=Teste&docker_image=hello-world&docker_env_keys=env1,ev2&docker_env_values=value1,value2&day_of_week=mon-fri&hour=10&minute=01&end_data=2017-12-01'

http://localhost:5000/scheduler/delete⁠

⁠Parmetro:
  • job_name - Indetificador do job

Exemplo

curl -X DELETE 'http://localhost:5000/scheduler/delete?job_name=Teste'

http://localhost:5000/scheduler/list⁠

Lista atividades ainda não executadas Exemplo

curl -X GET http://localhost:5000/scheduler/list

http://localhost:5000/status⁠

Mostrar status das atividades:

curl -X GET http://localhost:5000/status
⁠BackLog
  • Melhorar testes e fazer mock dos rescursos AWS Moto⁠
  • Migrar python3 ( 2t3 )
  • Autenticar a API
  • Parametrizar as configurações de VPC e Região
  • Melhorar os parametros do worker_config.yml

Tag summary

Content type

Image

Digest

Size

34.2 MB

Last updated

over 9 years ago

docker pull luizm/scheduler