サービスまたはスクリプトは、プログラムの例外、インスタンスの再起動、または停電が原因で実行が停止することがあります。 サービスまたはスクリプトが可及的速やかに再開に失敗した場合、オンラインビジネスは損失を被る可能性があります。 このトピックでは、クラウドアシスタントの ecs-tool-servicekeepalive プラグインを使用して、サービスを稼働状態に保つ方法について説明します。
実装
Linux の systemd に基づいて、ecs-tool-servicekeepalive プラグインは定期的な監視メカニズムを使用して、中断されたサービスまたはスクリプトが迅速に再開できるようにし、それによってサービスの信頼性と継続性を確保します。 プラグインを使用してサービスを稼働状態に保つには、サービスまたはそのプログラムを開始できるコマンドを入力します。 次に、プラグインは、入力した起動コマンドに基づいて systemd サービス構成を自動的に生成します。手動で構成する必要はありません。 構成が生成されると、systemd はサービスを開始し、システムの起動時にサービスが開始されるように構成します。
systemd は、サービスを管理するために使用できる Linux コンポーネントです。 たとえば、systemd はインスタンスの起動時にサービスを開始したり、予期しない停止後にサービスを再起動したりできます。 詳細については、「systemd のドキュメント」をご参照ください。
手順
サービスのキープアライブを有効にする
Elastic Compute Service (ECS) インスタンスにサービスをデプロイした後、ルートユーザーとしてクラウドアシスタントの ecs-tool-servicekeepalive プラグインを起動します。
ルートユーザーとしてサービスを開始する
sudo acs-plugin-manager --exec --plugin ecs-tool-servicekeepalive --params "start,'<cmd>'"<cmd> を、サービスを開始できる実際のコマンドに置き換えます。 例:
シェルプログラム:
/bin/bash /home/ecs-user/keepalive-simple/test-keepalive.shPython プログラム:
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.shPython プログラム:
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 秒ごとにログメッセージを生成します。 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
(オプション) キープアライブの効果を確認します。
サービスプロセスを手動で停止させて、クラウドアシスタントがプロセスを再起動できることを確認します。
方法 1: ECS インスタンスを再起動する
ECS コンソールでインスタンスを再起動することで、予期しない再起動をシミュレートします。
方法 2: サービスプロセスを終了する
次のコマンドを実行して、
test-keepalive.shプロセスを終了します。 <PID> は、ps コマンドを実行して取得したプロセス ID (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
関連情報
クラウドアシスタントの詳細については、「概要」をご参照ください。