容器服务支持对 Docker 容器的重新调度:当一个节点失效时,容器可以被自动调度到其他可用节点自动运行。
缺省情况下,容器的重新调度策略是关闭的。根据需要,您可以用如下配置来让重调度策略生效。
容器服务提供兼容 Docker Swarm 的容器重新调度策略,可以通过环境变量方式或者 label 方式启动。
环境变量:
redis:
Label:
image: redis
environment:
- reschedule:on-node-failure
[font=PingFangSC, "]
web:
image: nginx
restart: always
environment:
- aaaaa=aaaaa
labels:
aliyun.scale: "3"
com.docker.swarm.reschedule-policies: "[\"on-node-failure\"]"
Note
如果重新调度容器之后,需要恢复 Docker 容器所需的持久化状态,需要配合支持数据迁移或共享的 Docker 文件卷。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云容器服务确实支持对Docker容器的自动重新调度功能,以确保高可用性。您提到的两种配置方式——环境变量和label,都是实现这一功能的有效手段。下面我将分别解释这两种方法如何应用在阿里云容器服务中来启用容器的重新调度策略。
通过设置环境变量 reschedule:on-node-failure
,可以指示容器服务在节点失效时自动重新调度容器到其他健康节点上。示例如下:
redis:
image: redis
environment:
- reschedule:on-node-failure
这段配置定义了一个名为 redis
的服务,使用 Redis 镜像,并通过环境变量开启了“在节点失败时重新调度”的策略。
除了环境变量,您还可以通过添加特定的标签(label)来实现相同目的。使用 Docker Swarm 兼容的标签 com.docker.swarm.reschedule-policies
来指定重新调度策略。示例如下:
web:
image: nginx
restart: always
environment:
- aaaaa=aaaaa
labels:
aliyun.scale: "3"
com.docker.swarm.reschedule-policies: "[\"on-node-failure\"]"
在这个例子中,web
服务使用 Nginx 镜像,设置了始终重启(restart: always
),并定义了一些环境变量和标签。其中,com.docker.swarm.reschedule-policies
标签的值为 ["on-node-failure"]
,这同样指定了当宿主机节点发生故障时,容器应当被重新调度。
综上所述,通过合理配置,阿里云容器服务能够有效地管理容器的生命周期,确保服务的高可用性和数据的一致性。