すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:クラウドアシスタントプラグインを使用してサービスを稼働状態に保つ

最終更新日:Apr 17, 2025

サービスまたはスクリプトは、プログラムの例外、インスタンスの再起動、または停電が原因で実行が停止することがあります。 サービスまたはスクリプトが可及的速やかに再開に失敗した場合、オンラインビジネスは損失を被る可能性があります。 このトピックでは、クラウドアシスタントの 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.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 プラグインによって生成されたサービス構成も削除されます。

  1. テストサービスのスクリプトを準備します。

    スクリプトでは、ユーザーの作業ディレクトリは /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
  2. (オプション) 次のコマンドを実行して、サービスのステータスを照会します。

    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
  3. サービスのキープアライブを有効にします。

    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
  4. キープアライブステータスとサービスのステータスを照会します。

    1. 次のコマンドを実行して、サービスのキープアライブステータスを照会します。

      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
    2. (オプション) 次のコマンドを実行して、サービスのステータスを照会します。

      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
  5. (オプション) キープアライブの効果を確認します。

    1. サービスプロセスを手動で停止させて、クラウドアシスタントがプロセスを再起動できることを確認します。

      方法 1: ECS インスタンスを再起動する

      ECS コンソールでインスタンスを再起動することで、予期しない再起動をシミュレートします。

      方法 2: サービスプロセスを終了する

      次のコマンドを実行して、test-keepalive.sh プロセスを終了します。 <PID> は、ps コマンドを実行して取得したプロセス ID (PID) に置き換えます。

      sudo date && kill -9 <PID>
    2. (オプション) 次のコマンドを実行して、サービスのステータスを照会します。

      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
  6. 次のコマンドを実行して、サービスのキープアライブを無効にします。

    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

関連情報

クラウドアシスタントの詳細については、「概要」をご参照ください。