通过自定义阿里云负载均衡 nat 映射的方式来暴露服务端口到公网或者到内网。需要升级到最新版本的 Agent 方能支持该扩展能力标签。
标签格式如下,带$的变量为占位符。
aliyun.lb.port_$container_port:$scheme://$[slb_name|slb_id]:$slb_front_port
示例:
web:
image: wordpress:4.2
ports:
- 7777:80
- 9999:9999
- 8080:8080
- 53:53/udp
links:
- db:mysql
labels:
aliyun.lb.port_80: http://slb_example_name:8080
aliyun.lb.port_9999: tcp://slb_example_name:9999
aliyun.lb.port_8080: https://14a7ba06d3b-cn-hangzhou-dg-a01:80
aliyun.lb.port_53: udp://14a7ba06d3b-cn-hangzhou-dg-a01:53
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=password
要使用好自定义负载均衡的 lb 标签,您需要理解请求路由过程中的 3 个端口,即负载均衡的前端端口,负载均衡的后端端口(也就是 ECS vm 的端口),最后就是容器的端口。以第一个lb标签aliyun.lb.port_80为例,从左往右看,在 key 中的 80 端口指的是容器要暴露的端口,后面的 8080 端口指的是负载均衡要暴露的前端端口。负载均衡的后端端口是 ECS 实例的端口,可从标签 ports 的主机:容器端口映射中获取,由此,您可以查到容器端口 80 对应的主机端口是 7777,因此确定了负载均衡转发的后端端口是 7777 端口。因此第一个标签说明了当向服务 Web 发起请求时,首先通过负载均衡前端的 8080 端口进入,转发到后端 ECS 实例的 7777 端口,然后再根据端口映射 ports 的声明,请求最终从容器端口 80 进入,交由容器内的 WordPress 进程提供服务。接下来的标签以此进行相同的解释。该标签配置的负载均衡均不经过集群内置的 routing 服务,请求的路由由您自己控制。
标签声明的格式要求
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。