Configurar o escalonamento automático do Amazon EC2 por evento do banco de dados

2

Como você configura o escalonamento automático do Amazon EC2 para criar instâncias programaticamente com base em um evento de banco de dados?

Eu tenho um aplicativo que processa várias dezenas de arquivos grandes (100MB cada) mensalmente. Atualmente, uma vez por mês, criarei manualmente uma instância por arquivo e, em seguida, executei um script de shell para iniciar a tarefa de processamento em cada instância e eliminar as instâncias quando todo o processamento estiver concluído.

Eu quero automatizar isso configurando um grupo de dimensionamento automático do EC2 para iniciar uma nova instância quando um novo registro de banco de dados for criado, significando que um novo arquivo está pronto para ser processado. Essa instância será propagada com código que se conectará automaticamente ao banco de dados, localizará o novo arquivo, o marcará como "em andamento" e começará a processá-lo.

Eu controlo quando os arquivos são adicionados ao sistema, por isso não preciso me preocupar com o fato de alguns usuários adicionarem 1000 arquivos e excederem minha cota EC2. No entanto, não vejo nenhuma maneira óbvia de configurar a escala automática para funcionar assim. Parece apenas acionar a criação de instâncias com base no uso de CPU ou ELB.

    
por Cerin 07.12.2015 / 18:04

1 resposta

3

Suas observações estão corretas - você não poderá usar os controles AutoScaling da própria Amazon para esse tipo de evento. Você pode, no entanto, fazer o script através das ferramentas CLI da Amazon.

Você pode pesquisar o arquivo de várias maneiras (por exemplo, inotify / incron, consulta SQL periódica ao banco de dados ou até mesmo um ls na pasta) e fazer uma solicitação da API do Amazon para aumentar a capacidade do AutoScaling. Agrupe alterando a capacidade desejada quando o evento é acionado.

Quando o trabalho terminar, você poderá fazer com que a instância seja autonomizada automaticamente - obtendo o ID da instância do URL de metadados e alimentando-o diretamente no Amazon CLI, ou definindo a instância para ser encerrada no desligamento e emissão um shutdown -h now quando seu trabalho de processamento estiver concluído.

Eu não sei os detalhes da sua implementação, então YMMV descontroladamente aqui.

    
por 07.12.2015 / 18:20