Como começar, parar um servidor automaticamente, com base em pedidos de http?

1

Estou usando serviços em nuvem (por exemplo, AWS EC2) para meus servidores de desenvolvimento. Esses são geralmente grandes servidores e eu estou pagando por eles. Depois de usá-los, às vezes eu os esqueci correndo por dias, então acabo pagando mais.

Como posso iniciar minha instância quando uma solicitação http é feita em seu endpoint http? "then" Como posso parar minha instância se não houver uma solicitação recebida na última 1 hora?

Sinta-se à vontade para compartilhar qualquer aplicativo, serviço, código ou design.

Muitos agradecimentos

Mais alguns detalhes para explicar melhor o problema:

  • Quando tento acessar um URL do ambiente de desenvolvimento, espero ter um página web temporária (ou proxy?) que diz "servidor inicial" redirecionando-me para a aplicação depois.
  • Estou ciente do agendamento no EC2. Mas eu preciso de desligamento automático se não mais pedido vindo para esse servidor. E eu posso tentar acessar meu servidor a qualquer momento.
  • Eu não posso considerar a configuração de um cron job para desligar. Eu preciso de melhor solução, mesma causa com a opção acima.
por ozkolonur 04.02.2018 / 13:19

1 resposta

3

Basicamente, dois problemas:

  • um de iniciar o VPS
  • um para desativá-lo

Como iniciar

Primeiro, você precisa instalar o link ec2 cli tools ,

Para começar, você pode criar seu próprio servidor como proxy (localhost). Crie uma página php, python, etc. que você possa chamar. Essas páginas se ligam para abrir uma página de teste, se for timeout (x segundos), você chama o cli ec2 para iniciar a instância específica.

Alternativamente, você pode chamar um script ec2 para iniciar seu VPS assim que seu servidor de desenvolvimento iniciar (ou seja, eu estou fazendo Ruby on Rails, e seria muito fácil apenas chamar um script que inicie o servidor, uma vez que eu comecei meu código de desenvolvimento)

link

Desligando

Para desligar, eu criaria um cron rodando em cada servidor de desenvolvimento, a cada x minutos (de hora em hora?). Lá você basicamente segue o resultado do log de desenvolvimento e cria um MD5 , contanto que o MD5 mude, você sabe que o servidor está sendo usado. Então, para que isso funcione eu levaria uma boa quantidade de verificação de tempo (ou seja, não a cada minuto). Adicionado um email para você ser notificado quando o desligamento for iniciado.

Assumindo que seu registro de desenvolvimento tenha um timestamp, você deve ser bom.

Exemplo de script de script de desligamento

#!/bin/sh
# /etc/cron.hour/autoshutdown
# Example EC2 auto shutdown script
# Place in your /etc/cron.hourly

LOG_FILE=/path/to/my/development.log
MD5_FILE=/tmp/my.log.md5
[email protected]

echo "Create MD5..."
cur_md5='tail $LOG_FILE | md5'

echo "Read latest MD5..."
if [ -f $MD5_FILE ]; then
    last_md5='cat $MD5_FILE'
else
    echo "No MD5 found, 1st time use..."    
    last_md5='no sig. found'
fi

if [ "$cur_md5" = "$last_md5" ]; then   
    echo "MD5 signatures are identical, nothing changed we can stop the server..."
    echo "Server is been shutdown" | mail -s "Server $(hostname) has been shutdown..." $NOTIFY
    # shutdown -h now
else
    echo "Current MD5 [$cur_md5]"
    echo "Last MD5   [$last_md5]"
    echo "MD5 changed, we are still using the sever..."
    echo "Updating signature..."
    echo $cur_md5 > $MD5_FILE
fi

Claro, sem garantias , apenas meus pensamentos; -)

    
por 04.02.2018 / 17:20