• tsuru.yaml
  • 部署钩子
  • 健康检查

    tsuru.yaml

    tsuru.yaml 是位于应用根目录的一个特殊文件。文件名可以是tsuru.yaml或者tsuru.yml。这个文件是用来描述应用的某些方面。目前,它描述了关于部署钩子和部署时健康检查的信息。。下面是使用这个功能的介绍。

    部署钩子

    tsuru提供了一些部署钩子,如restart:beforerestart:afterbuild。部署钩子允许开发者在一些命令前后运行命令。

    下面是如何在tsuru.yaml声明这些钩子的例子:

    1. hooks:
    2. restart:
    3. before:
    4. - python manage.py generate_local_file
    5. after:
    6. - python manage.py clear_local_cache
    7. build:
    8. - python manage.py collectstatic --noinput
    9. - python manage.py compress

    tsuru支持下面的钩子:

    • restart:before: 这个钩子会列出单元重启前会运行的所有命令。这些命令在每个单元上运行一次。比如,假设有一个应用部署在两个单元上,同时监听上面的tsuru.yaml文件。python manage.py generate_local_file命令会运行两次,每个单元一次。
    • restart:after: 这个钩子和before-each很像, 但是是在每个单元重启后运行。
    • build: 这个钩子会在镜像生成时,列出部署中运行的命令。

    健康检查

    你可以在tsuru.yaml中声明健康检查。该检查在部署过程中被调用,只有通过了健康检查,tsuru才会继续部署。如果健康检查失败,tsuru会在路由指向新的单元前退出部署,这样你的应用就永远不会不响应。你可以通过docker:healthcheck:max-time配置应用的最大响应等待时间。

    下面是在yaml文件中如何配置健康检查的例子:

    1. healthcheck:
    2. path: /healthcheck
    3. method: GET
    4. status: 200
    5. match: .*OKAY.*
    6. allowed_failures: 0
    • healthcheck:path:在应用中调用的路径。每个单元都会调用这个路径。这是唯一要必须设置的字段,如果没有设置,健康检查会被忽略。
    • healthcheck:method: 这个方法用来发起http请求。缺省是GET。
    • healthcheck:status: 期望请求返回状态码。缺省是200.
    • healthcheck:match: 用来匹配返回的消息体的正则表达式。如果没有设置,消息体不会被读取,只有返回的状态码被检查。这个正则表达式使用Go的语法.匹配\n(s标记)。
    • healthcheck:allowed_failures: 允许的错误次数。当出现的错误次数大于它时,才认为应用不健康。缺省为0。

    原文: http://doc.oschina.net/tsuru-paas?t=52829