アプリケーションエラー、インスタンスの再起動、または停電により、サービスやスクリプトが停止し、ビジネスの中断につながる可能性があります。このトピックでは、Cloud Assistant の ecs-tool-servicekeepalive プラグインを使用して、サービスのキープアライブを確保する方法について説明します。
仕組み
Cloud Assistant の ecs-tool-servicekeepalive プラグインは、Linux のサービスマネージャーである systemd を使用して、停止したサービスやスクリプトを自動的に再起動し、サービスの信頼性と継続性を確保します。このプラグインをキープアライブに使用するには、起動コマンドを指定します。その後、プラグインは必要な systemd サービス設定を生成し、サービスを起動して、起動時の自動起動を有効にします。手動でファイルを編集する必要はありません。
systemd は、Linux のサービスマネージャーであり、起動時の自動起動や予期せず停止したサービスの再起動などのタスクを実行できます。詳細については、「公式のsystemd ドキュメント」をご参照ください。
操作手順
サービスのキープアライブの有効化
サービスをデプロイした後、root ユーザーとして Cloud Assistant プラグイン ecs-tool-servicekeepalive を実行します。
root として実行
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'<cmd>'"
<cmd>:サービスの起動コマンド。以下の例をご参照ください。
-
シェルスクリプト:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh -
Python スクリプト:
python /home/root/main.py
指定ユーザーとして実行
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,execstart='<cmd>',user=<user_name>,group=<group_name>"
-
<cmd>:サービスの起動コマンド。以下の例をご参照ください。
-
シェルスクリプト:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.sh -
Python スクリプト:
python /home/root/main.py
-
-
<user_name>:サービスを実行するユーザー名。既存のユーザーを確認するには、
cut -d: -f1 /etc/passwdを実行します。 -
<group_name>:サービスのグループ名。既存のユーザーグループを確認するには、
cut -d: -f1 /etc/groupを実行します。
-
スクリプトまたはプログラムファイルには、絶対パスを使用する必要があります。
-
キープアライブの有効化に失敗した場合は、まずサービスのキープアライブステータスの確認を行い、次に失敗したエントリに対してサービスのキープアライブの無効化を実行してから、再度試行してください。これにより、複数のサービスプロセスが起動してアプリケーションに問題が発生するのを防ぎます。
キープアライブステータスの確認
次のコマンドを実行して、キープアライブステータスを確認します。
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"
次の出力例は、キープアライブが有効であることを示しています。
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
サービスのキープアライブの無効化
キープアライブを無効にする場合は、次のコマンドを実行します。
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop <service_name>"
<service_name>:サービス設定の名前。この値は、キープアライブステータスの確認手順の出力の service_name 列に表示されます。
キープアライブを無効にすると、サービスプロセスが停止し、自動起動設定と ecs-tool-servicekeepalive プラグインが作成したサービス設定ファイルが削除されます。
例
-
テストサービススクリプトの準備
このスクリプトは、作業ディレクトリとして
/home/ecs-userを使用します。実際の作業ディレクトリに置き換えてください。# /home/ecs-user ディレクトリに keepalive-simple ディレクトリを作成し、その中に test-keepalive.sh スクリプトを作成します。 sudo mkdir -p /home/ecs-user/keepalive-simple && \ sudo tee /home/ecs-user/keepalive-simple/test-keepalive.sh > /dev/null << 'EOF' #!/bin/bash # 指定したログファイルに、1 秒ごとに 1 行のログを書き込みます。 while true do sudo echo "$(date '+%Y-%m-%d %H:%M:%S') progress is alive" >> $1 sleep 1 done EOF # スクリプトに実行権限を付与します。 sudo chmod +x /home/ecs-user/keepalive-simple/test-keepalive.sh -
(オプション)サービスの実行ステータスの確認
次のコマンドを実行して、サービスの実行ステータスを確認します。
ps aux | grep test-keepalive.sh次の出力例は、サービスが実行されていないことを示しています。
ecs-user 2207 0.0 0.0 221528 916 pts/0 S+ 11:34 0:00 grep --color=auto test-keepalive.sh -
サービスのキープアライブの有効化
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'"次の出力例は、キープアライブが有効であることを示しています。
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 -
キープアライブステータスとサービスの実行ステータスの確認
-
次のコマンドを実行して、キープアライブステータスを確認します。
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "status"次の出力例は、キープアライブが有効であり、サービスが実行されていることを示しています。
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 -
次のコマンドを実行して、サービスの実行ステータスを確認します。
ps aux | grep test-keepalive.sh次の出力例は、サービスが実行されていることを示しています。
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
-
-
(オプション)キープアライブの検証
-
サービスを手動で停止して、Cloud Assistant がプロセスを自動的に再起動することを確認します。
方法 1:ECS インスタンスの再起動
インスタンスを再起動して、予期しないインスタンスの再起動をシミュレートします。
方法 2:プロセスの終了
次のコマンドを実行して、
test-keepalive.shプロセスを終了します。<PID> を、ps コマンドで返されるプログラムの PID に置き換えてください。sudo date && kill -9 <PID> -
次のコマンドを実行して、サービスの実行ステータスを確認します。
ps aux | grep test-keepalive.sh次の出力例は、サービスが実行されていることを示しています。
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
-
-
サービスのキープアライブの無効化
次のコマンドを実行して、キープアライブを無効にします。
sudo acs-plugin-manager --exec --local --plugin ecs-tool-servicekeepalive --params "stop ecs_keepalive_1744256544.service"次の出力例は、キープアライブ設定が無効になったことを示しています。
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
関連ドキュメント
Cloud Assistant の詳細については、「Cloud Assistant の概要」をご参照ください。