はじめに
RundeckをEC2からECSへ移行する際に、task_definition
へのヘルスチェックの設定が必要かどうか検討するために、公式のイメージがヘルスチェックが設定されているか確認する。
検証
最新のイメージを取得
# docker pull rundeck/rundeck:3.0.23 3.0.23: Pulling from rundeck/rundeck 34667c7e4631: Pull complete d18d76a881a4: Pull complete 119c7358fbfc: Pull complete 2aaf13f3eff0: Pull complete 86de475f193d: Pull complete f49f74edfc4c: Pull complete d714e14cc5eb: Pull complete a73833a8c0ec: Pull complete 2be4d99da4ed: Pull complete e60ed19fced1: Pull complete a10701fac628: Pull complete af475d4f97ae: Pull complete c40d0c213b07: Pull complete Digest: sha256:1ae5b79c9312d668a83c97a27e1f579b3c4b3fdca7b39a755a7c60a792d6b84a Status: Downloaded newer image for rundeck/rundeck:3.0.23 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE rundeck/rundeck 3.0.23 7ccc8fb7dbbd 35 hours ago 508MB
起動
# docker run -d rundeck/rundeck:3.0.23 2838b80cb581e6906280e2c5d6c83761d39a8b26422b646a4aecb4c3d7b1cb1b # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2838b80cb581 rundeck/rundeck:3.0.23 "/tini -- docker-lib…" 7 seconds ago Up 6 seconds 4440/tcp reverent_heisenberg
ヘルスチェックの履歴を確認
# docker inspect --format='{{json .State.Health}}' 2838b80cb581 null
デフォルトのままだとヘルスチェックしてない。
停止
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2838b80cb581 rundeck/rundeck:3.0.23 "/tini -- docker-lib…" 4 minutes ago Up 4 minutes 4440/tcp reverent_heisenberg # docker stop 2838b80cb581 2838b80cb581
ヘルスチェックオプションを指定して起動
Docker run リファレンス — Docker-docs-ja 1.12.RC2 ドキュメント
--health-interval チェックを実行する間隔
--health-retries 障害を報告するまでに必要な連続失敗回数
--health-timeout チェックを実行できる最長時間
--no-healthcheck コンテナ固有のヘルスチェックを無効化
#docker run --rm -d \ --name=rundeck \ --health-cmd="curl --silent --fail localhost:4440 || exit 1" \ --health-interval=5s \ --health-retries=12 \ --health-timeout=2s \ rundeck/rundeck:3.0.23 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc5ba9986d4e rundeck/rundeck:3.0.23 "/tini -- docker-lib…" 3 seconds ago Up 2 seconds (health: starting) 4440/tcp rundeck
STATUSにhelth
情報が追加された
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc5ba9986d4e rundeck/rundeck:3.0.23 "/tini -- docker-lib…" About a minute ago Up About a minute (healthy) 4440/tcp rundeck
一定時間後にSTATUSがhealthy
に変更
ヘルスチェックの履歴を確認
# docker inspect --format='{{json .State.Health}}' rundeck | jq { "Status": "healthy", "FailingStreak": 0, "Log": [ { "Start": "2019-06-21T07:32:23.7781889Z", "End": "2019-06-21T07:32:23.9518703Z", "ExitCode": 1, "Output": "" }, { "Start": "2019-06-21T07:32:28.9596497Z", "End": "2019-06-21T07:32:29.1666407Z", "ExitCode": 1, "Output": "" }, { "Start": "2019-06-21T07:32:34.1808149Z", "End": "2019-06-21T07:32:34.3793393Z", "ExitCode": 1, "Output": "" }, { "Start": "2019-06-21T07:32:39.4058127Z", "End": "2019-06-21T07:32:39.872353Z", "ExitCode": 0, "Output": "" }, { "Start": "2019-06-21T07:32:44.8796508Z", "End": "2019-06-21T07:32:44.996942Z", "ExitCode": 0, "Output": "" } ] }