Configure o plugin ecs-tool-servicekeepalive do Cloud Assistant para reiniciar automaticamente serviços ou scripts interrompidos por exceções, reinicializações de instância ou quedas de energia.
Como funciona
O plugin ecs-tool-servicekeepalive usa o systemd do Linux para monitorar periodicamente e reiniciar automaticamente serviços ou scripts interrompidos. Ao fornecer um comando de inicialização, o plugin gera a configuração de serviço do systemd automaticamente. O systemd inicia o serviço e o habilita na inicialização do sistema.
O systemd é um gerenciador de serviços do Linux que inicia serviços na inicialização e os reinicia após paradas inesperadas. Consulte a documentação do systemd.
Procedimento
Ativar keepalive para um serviço
Após implantar serviços em uma instância ECS, inicie o plugin ecs-tool-servicekeepalive como usuário root.
Iniciar um serviço como usuário root
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'<cmd>'"
Substitua <cmd> pelo comando de inicialização. Exemplos:
Programa Shell:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.shPrograma Python:
python /home/root/main.py
Iniciar um serviço como um usuário específico
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,execstart='<cmd>',user=<user_name>,group=<group_name>"
-
Substitua <cmd> pelo comando de inicialização. Exemplos:
Programa Shell:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.shPrograma Python:
python /home/root/main.py
Substitua <user_name> pelo usuário que inicia o serviço. Execute
cut -d: -f1 /etc/passwdpara visualizar os usuários existentes.Substitua <group_name> pelo nome do grupo do usuário. Execute
cut -d: -f1 /etc/grouppara visualizar os grupos de usuários existentes.
Especifique o caminho absoluto do script ou programa.
Se não for possível ativar o keepalive para um serviço, execute as operações a seguir para evitar processos duplicados: Consultar o status de keepalive do serviço, desativar o keepalive do serviço, resolver o problema, reiniciar o serviço e reativar o keepalive.
Consultar o status de keepalive de um serviço
Verifique se o keepalive está ativado para um serviço:
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"
A saída a seguir indica que o keepalive está ativado:
service_name execstart user group status
ecs_keepalive_1744262359.service /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log active (running) since Thu 2025-04-10 13
Desativar keepalive para um serviço
Desative o keepalive para um serviço:
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop <service_name>"
Substitua <service_name> pelo nome real do serviço na coluna service_name da saída em Consultar o status de keepalive de um serviço.
Desativar o keepalive encerra o processo do serviço, remove a configuração de início automático e exclui a configuração de serviço gerada pelo plugin ecs-tool-servicekeepalive.
Exemplo
-
Prepare um script para um serviço de teste.
Neste script, o diretório de trabalho é
/home/ecs-user. Substitua-o pelo seu diretório de trabalho real.# In the /home/ecs-user directory, create the keepalive-simple folder and create the test-keepalive.sh script in the folder. sudo mkdir -p /home/ecs-user/keepalive-simple && \ sudo tee /home/ecs-user/keepalive-simple/test-keepalive.sh > /dev/null << 'EOF' #!/bin/bash # Generate a log message every second in the specified log file. while true do sudo echo "$(date '+%Y-%m-%d %H:%M:%S') progress is alive" >> $1 sleep 1 done EOF # Grant executable permissions on the script. sudo chmod +x /home/ecs-user/keepalive-simple/test-keepalive.sh -
(Opcional) Consulte o status do serviço:
ps aux | grep test-keepalive.shA saída a seguir indica que o serviço não foi iniciado:
ecs-user 2207 0.0 0.0 221528 916 pts/0 S+ 11:34 0:00 grep --color=auto test-keepalive.sh -
Ative o keepalive para o serviço.
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log'"A saída a seguir indica que o keepalive está ativado:
Created symlink /etc/systemd/system/multi-user.target.wants/ecs_keepalive_1744256544.service → /etc/systemd/system/ecs_keepalive_1744256544.service. Start systemd service for "/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log" success -
Consulte o status do keepalive e do serviço.
-
Consulte o status do keepalive:
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"A saída a seguir indica que o keepalive está ativado e o serviço está em execução:
service_name execstart user group status ecs_keepalive_1744256544.service /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log active (running) since Thu 2025-04-10 11 -
(Opcional) Consulte o status do serviço:
ps aux | grep test-keepalive.shA saída a seguir indica que o serviço está em execução:
root 3144 0.0 0.0 222200 3420 ? Ss 11:42 0:00 /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log ecs-user 6841 0.0 0.0 221660 968 pts/0 S+ 11:49 0:00 grep --color=auto test-keepalive.sh
-
-
(Opcional) Verifique o efeito do keepalive.
-
Interrompa manualmente o processo do serviço para verificar se o Cloud Assistant o reinicia.
Método 1: Reiniciar a instância ECS
Reinicie a instância para simular uma reinicialização inesperada.
Método 2: Encerrar o processo do serviço
Encerre o processo
test-keepalive.sh. Substitua <PID> pelo ID do processo obtido com o comando ps.sudo date && kill -9 <PID> -
(Opcional) Consulte o status do serviço:
ps aux | grep test-keepalive.shA saída a seguir indica que o serviço está em execução:
root 33061 0.0 0.0 222200 3504 ? Ss 13:19 0:00 /bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh /home/ecs-user/keepalive-simple/test-keepalive.log ecs-user 34558 0.0 0.0 221660 2556 pts/0 S+ 13:23 0:00 grep --color=auto test-keepalive.sh
-
-
Desative o keepalive para o serviço:
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop ecs_keepalive_1744256544.service"A saída a seguir indica que o keepalive está desativado:
service check ok, file:ecs_keepalive_1744256544.service is valid Removed /etc/systemd/system/multi-user.target.wants/ecs_keepalive_1744256544.service. stop service ok, service:ecs_keepalive_1744256544.service is stopped and removed
Referências
Consulte a Visão geral do Cloud Assistant.