3.8 管理应用程序

Deis 包含了许多工具管理已经部署的应用程序

扩展应用程序

部署在 Deis 的应用程序通过进程模型扩展。使用 deis scale 来控制容器的数量。

  1. $ deis scale web=8
  2. Scaling processes... but first, coffee!
  3. done in 20s
  4. === peachy-waxworks Processes
  5. --- web:
  6. web.1 up (v2)
  7. web.2 up (v2)
  8. web.3 up (v2)
  9. web.4 up (v2)
  10. web.5 up (v2)
  11. web.6 up (v2)
  12. web.7 up (v2)
  13. web.8 up (v2)

扩展是被进程类型管理的像定义在一个你的应用程序 repository 根目录下 Procfile 的 web 或 worker。

注意
Docker 应用程序可以使用 cmd 进程类型来扩展默认的容器命令

管理应用程序

Deis 应用程序为 admin tasks 使用一次性(one-off)的进程像数据库迁移和其他针对动态应用程序(live application)的命令。

使用 deis run 来在已经部署的应用程序上执行命令。

  1. $ deis run ls -l
  2. total 28
  3. -rw-r--r-- 1 root root 553 Dec 2 23:59 LICENSE
  4. -rw-r--r-- 1 root root 60 Dec 2 23:59 Procfile
  5. -rw-r--r-- 1 root root 33 Dec 2 23:59 README.md
  6. -rw-r--r-- 1 root root 1622 Dec 2 23:59 pom.xml
  7. drwxr-xr-x 3 root root 4096 Dec 2 23:59 src
  8. -rw-r--r-- 1 root root 25 Dec 2 23:59 system.properties
  9. drwxr-xr-x 6 root root 4096 Dec 3 00:00 target

共享应用程序

使用 deis sharing:add 允许另外的 Deis 用户在你的应用程序上合作。

  1. $ deis sharing:add otheruser
  2. Adding otheruser to peachy-waxworks collaborators... done

使用 deis sharing 来看应用程序当前共享给谁了,以及使用 deis sharing:remove 来移除合作。

注意
合作者可以做应用程序它自己能做的任何事情,除了删除应用程序自己。

当工作的应用程序已经共享给你时, clone 原始的 repository 并试图 git push 任何变更到 Deis 之前,添加 Deis 的 git 远程实体。

  1. $ git clone https://github.com/deis/example-java-jetty.git
  2. Cloning into 'example-java-jetty'... done
  3. $ cd example-java-jetty
  4. $ git remote add -f deis ssh://git@local.deisapp.com:2222/peachy-waxworks.git
  5. Updating deis
  6. From deis-controller.local:peachy-waxworks
  7. * [new branch] master -> deis/master

排查应用程序

部署在 Deis 上的应用程序把日志记录当作事件流,Deis 从每个容器中聚合 stdout 和 stderr 使得可以非常容易的为你的应用程序排查问题。

使用 deis logs 从你已经部署的应用程序中浏览日志输出。

  1. $ deis logs | tail
  2. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.5]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
  3. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.8]: INFO:oejs.Server:jetty-7.6.0.v20120127
  4. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.5]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10005
  5. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.6]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
  6. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.7]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
  7. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.6]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10006
  8. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.8]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
  9. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.7]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10007
  10. Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.8]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10008

限制应用程序

Deis 支持限制每个容器的 CPU 和内存共享。

使用 deis limits:set 通过进程类型限制内存:

  1. $ deis limits:set web=512M
  2. Applying limits... done, v3
  3. === peachy-waxworks Limits
  4. --- Memory
  5. web 512M
  6. --- CPU
  7. Unlimited

你也可以使用 deis limits:set -c 限制 CPU 共享。CPU 共享在一个扩展上是从 0 到 1024。1024 是使用这台主机上的所有 CPU 资源。

注意
如果你限制资源到容器没有启动的点,limits:set 将会夯住。如果这个发生了,使用 CTRL-C 来中断 limits:set 并使用 limits:unset 来恢复。

隔离应用程序

Deis 支持在一组主机上使用 tags 隔离应用程序。

注意
为了使用 tags,你必须首先以合适的 key/value 信息启动你的主机。如果没有这样做,tag 命令将失败。通过读 Fleet 文档的 machine metadata 章节学习更多。

一旦你的主机被使用适合的 key/value 元数据配置,使用 deis tags:set 来限制这些主机的应用程序:

  1. $ deis tags:set environ=prod
  2. Applying tags... done, v4
  3. environ prod