为了使应用有更高的可用性,容器服务支持将同一个服务的容器调度在不同的可用区(zone)里。当某个可用区发生故障时,应用依然能够提供服务。
您可以在编排文件中通过环境变量指定对可用区的选择,有以下两种格式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您提供的示例中,要确保服务至少部署在两个可用区(AZ)中,您已经在环境变量部分正确设置了约束条件。下面是您的配置的一个小总结和解释:
version: '2'
services:
nnn:
expose:
- "443/tcp"
- "80/tcp"
image: 'nginx:latest'
environment:
- 'availability:az==2' # 这一行确保服务至少分布在两个可用区
labels:
aliyun.scale: '8' # 服务实例数量为8
restart: always
volumes:
- /var/cache/nginx
这段YAML配置定义了一个名为nnn
的服务,使用的是最新版本的Nginx镜像。通过expose
指令指定了容器需要暴露的端口(443和80),并且通过environment
中的availability:az==2
设置,确保了该服务的实例会被调度到至少两个不同的可用区里。这意味着当一个可用区发生故障时,另一个可用区的服务实例仍可以继续提供服务,从而提高了应用的高可用性。
此外,labels
部分的aliyun.scale: '8'
意味着您希望运行8个该服务的副本以进一步增强服务的健壮性和负载能力。restart: always
策略保证了无论容器因何种原因退出,都会自动重启,确保服务持续运行。最后,通过volumes
挂载了本地的/var/cache/nginx
目录,这通常用于持久化Nginx的缓存数据或配置文件。
请记得,这些配置是在假设您使用的是支持阿里云容器服务(如ACK, Container Service for Kubernetes, or ACS)的环境下有效。如果您需要在实际环境中应用此配置,请确保您的集群横跨至少两个可用区,并且有足够资源来满足部署需求。