开发者社区> 问答> 正文

Swarm 集群 服务编排 服务部署约束(affinity:service)


设置服务的部署约束条件。
容器服务支持 Docker Swarm 兼容的容器部署约束条件,您可以通过 Docker Swarm Filter 控制一个容器的部署。
但是在社区版 Docker Compose 中,却并没有相关的能力来控制服务直接的部署约束。
在容器服务中,您可以在 environment 中添加相关 affinity:service,来约束服务之间的亲和度(Affinity),达到控制服务部署策略的功能。支持服务之间的 Soft affinity 和 Hard affinity。
示例:
本示例中,web 服务设置了 affinity:service!=db 的部署约束。使得 web 服务一定会选择没有部署 db服务的节点,这样当一个节点失效时,可提高服务可用性。当您的集群只有一个节点的时候,由于指定的是 hard anti-affinity,该部署会失败,因为部署没有办法满足所指定的强约束条件。
web:
  image: registry.aliyuncs.com/acs-sample/wordpress:4.5
  ports:
    - '80'
  environment:
    - affinity:service!=db
  restart: always
  links:
    - 'db:mysql'
  labels:
    aliyun.logs: /var/log
    aliyun.probe.url: http://container/license.txt
    aliyun.probe.initial_delay_seconds: '10'
    aliyun.routing.port_80: http://wordpress
    aliyun.scale: '2'
db:
  image: registry.aliyuncs.com/acs-sample/mysql:5.7
  environment:
    MYSQL_ROOT_PASSWORD: password
  restart: always
  labels:
    aliyun.logs: /var/log/mysql


展开
收起
青蛙跳 2018-08-22 16:50:34 1628 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
GitOps:Kubernetes多集群环境下的高效CICD实践 立即下载
基于Kubernetes实现弹性的CI/CD系统 立即下载
Kubernetes的网络实践 立即下载