适用场景
普通且简单的 7 层协议负载均衡,Web 路由服务,容器集群内服务之间 7 层协议互相访问的通信代理和负载均衡。
原理
如下图所示,当您新建一个集群的时候,会默认给这个集群分配一个负载均衡实例。该负载均衡实例会将集群中的所有节点加入作为后端,同时前端会暴露 80 端口,后端所有节点的机器会暴露 9080 端口。容器服务会启动一个路由应用
acsrouting
,即阿里云容器服务路由应用(Alibaba Cloud Container Service Routing)。该路由应用只有一个服务,即路由服务。该服务是全局(global)的,即每个节点(下面说到的主机和节点都是同一个意思,即 ECS 的 vm 实例)都部署了该服务(或者说镜像)的一个拷贝,也就是容器。每个节点都由这个容器用来路由 HTTP 服务或者 HTTPS 服务。

如上图所示,HTTP 服务,负载均衡实例的前后端端口的映射为 80:9080
,主机与路由容器之间的端口映射为 9080:80
,即路由的容器暴露 80 端口,其它用作 Web 服务的容器可以暴露任意的端口。只要在容器启动的时候设置主机和容器端口的映射,routing 服务就能获取到相应的端口进行请求的路由。有关暴露 HTTP 服务的完整示例,参见通过镜像创建 Nginx。
设置方式
![]() |
说明 |
请务必确保容器服务相关节点的内核参数(/etc/sysctl.conf )中,如下配置值为 0,否则可能会导致无法访问:
|
通过容器服务管理控制台进行设置
通过 服务 > 变更配置 进行设置
- 登录容器服务管理控制台。
- 单击左侧导航栏中的服务。
- 选择所要暴露的服务所在的集群。
- 选择所要暴露的服务(本示例中为 wordpress-web)并单击变更配置。
- 在变更配置页面,配置主机和容器端口的映射,如下图所示。
主机端口为空,表示随机暴露一个主机的端口(暴露 HTTP/HTTPS 服务时,您可以不需要知道主机暴露的具体端口是什么,可以使用 overlay 网络或者 VPC 网络来直接访问容器的端口),容器端口为 80。您使用 wordpress-web 服务的 80 端口来提供 HTTP 服务,使用的协议是 TCP 协议。
路由配置通过域名来暴露服务,须标明要暴露的端口,此处为 Web 服务 80 端口。域名字段只填写了域名前缀,如果域名前缀为
XXX
,获得的域名为XXX.$cluster_id.$region_id.alicontainer.com
供测试使用。此处您获得的域名为wordpress.cb668bde43f054cd7bd515c8739f38310.cn-hangzhou.alicontainer.com
。您也可以填写自己的域名,需要添加解析到相应的负载均衡实例 IP。关于配置路由的容器端口和 HTTP 服务的域名的详细信息,参见routing。 - 配置完毕后,单击更新,然后返回服务列表,进入服务详情页,单击访问端点。
- 您可以成功访问 wordpress 欢迎页。
通过应用的模板编辑器进行设置
通过客户端工具进行设置
- docker help run:查看使用的 “-p” 选项, 路由配置在容器服务管理控制台进行。
- docker-compose:查看支持的 “ports” 选项,路由配置规则详情见 routing。