dehio3’s diary

仕事、生活、趣味のメモ

docker版Rundeckのヘルスチェク設定の確認

f:id:dehio3:20190629194221p:plain

はじめに

RundeckをEC2からECSへ移行する際に、task_definitionへのヘルスチェックの設定が必要かどうか検討するために、公式のイメージがヘルスチェックが設定されているか確認する。

docs.aws.amazon.com

検証

最新のイメージを取得

# 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": ""
    }
  ]
}