3.8 管理应用程序
Deis 包含了许多工具管理已经部署的应用程序
扩展应用程序
部署在 Deis 的应用程序通过进程模型扩展。使用 deis scale
来控制容器的数量。
$ deis scale web=8
Scaling processes... but first, coffee!
done in 20s
=== peachy-waxworks Processes
--- web:
web.1 up (v2)
web.2 up (v2)
web.3 up (v2)
web.4 up (v2)
web.5 up (v2)
web.6 up (v2)
web.7 up (v2)
web.8 up (v2)
扩展是被进程类型管理的像定义在一个你的应用程序 repository 根目录下 Procfile 的 web 或 worker。
注意
Docker 应用程序可以使用 cmd 进程类型来扩展默认的容器命令
管理应用程序
Deis 应用程序为 admin tasks 使用一次性(one-off)的进程像数据库迁移和其他针对动态应用程序(live application)的命令。
使用 deis run
来在已经部署的应用程序上执行命令。
$ deis run ls -l
total 28
-rw-r--r-- 1 root root 553 Dec 2 23:59 LICENSE
-rw-r--r-- 1 root root 60 Dec 2 23:59 Procfile
-rw-r--r-- 1 root root 33 Dec 2 23:59 README.md
-rw-r--r-- 1 root root 1622 Dec 2 23:59 pom.xml
drwxr-xr-x 3 root root 4096 Dec 2 23:59 src
-rw-r--r-- 1 root root 25 Dec 2 23:59 system.properties
drwxr-xr-x 6 root root 4096 Dec 3 00:00 target
共享应用程序
使用 deis sharing:add
允许另外的 Deis 用户在你的应用程序上合作。
$ deis sharing:add otheruser
Adding otheruser to peachy-waxworks collaborators... done
使用 deis sharing
来看应用程序当前共享给谁了,以及使用 deis sharing:remove
来移除合作。
注意
合作者可以做应用程序它自己能做的任何事情,除了删除应用程序自己。
当工作的应用程序已经共享给你时, clone 原始的 repository 并试图 git push 任何变更到 Deis 之前,添加 Deis 的 git 远程实体。
$ git clone https://github.com/deis/example-java-jetty.git
Cloning into 'example-java-jetty'... done
$ cd example-java-jetty
$ git remote add -f deis ssh://git@local.deisapp.com:2222/peachy-waxworks.git
Updating deis
From deis-controller.local:peachy-waxworks
* [new branch] master -> deis/master
排查应用程序
部署在 Deis 上的应用程序把日志记录当作事件流,Deis 从每个容器中聚合 stdout 和 stderr 使得可以非常容易的为你的应用程序排查问题。
使用 deis logs
从你已经部署的应用程序中浏览日志输出。
$ deis logs | tail
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.5]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.8]: INFO:oejs.Server:jetty-7.6.0.v20120127
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.5]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10005
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.6]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.7]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.6]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10006
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.8]: INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,null}
Dec 3 00:30:31 ip-10-250-15-201 peachy-waxworks[web.7]: INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10007
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
通过进程类型限制内存:
$ deis limits:set web=512M
Applying limits... done, v3
=== peachy-waxworks Limits
--- Memory
web 512M
--- CPU
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
来限制这些主机的应用程序:
$ deis tags:set environ=prod
Applying tags... done, v4
environ prod