品尝阿里云容器服务:负载均衡与容器的关系

最近我们开始尝试基于阿里云容器服务使用Docer进行生产环境的自动化部署,首先遇到的一个问题是 —— 如何部署负载均衡(这里的负载均衡是指阿里云负载均衡SLB)?面对这个问题,我们首先关注的是这个问题 —— 阿里云负载均衡与容器究竟是什么关系?

在阿里云容器服务中创建集群时(这个使用容器服务的第一步操作),默认会自动创建负载均衡。

这个负载均衡依然是我们熟知的那个负载均衡,后端服务器依然是云服务器(ECS)。

最大的不同之处是监听的配置是基于TCP的4层负载均衡。

从这个监听配置可以得知,在使用阿里云容器服务时,负载均衡与容器没有直接的关系,它们感知不到容器的存在,只是作为4层负载均衡(也支持7层负载均衡,详见这里),负责将请求通过TCP转发到后端ECS的9080端口上,只不过这些ECS是容器服务集群中的节点(容器主机)。

这时我们有产生了另外一个疑问 —— 容器主机的9080端口与容器内应用监听的端口之间又是什么关系呢?

从阿里云容器服务的帮助文档-简单路由(支持 HTTP/HTTPS)中得知,在容器主机内运行着一个专门提供路由服务(acsrouting)的容器。

在容器服务控制台的“应用列表”中可以看到这个acsrouting应用:

点击上图中的应用名称"acsrouting",会显示这个应用中的服务acsrouting_routing:

从上图中的端口映射中可以知道,原来与容器主机(ECS,集群节点)的9080端口发生关系的是acsrouting_routing容器的80端口。

所以,当使用阿里云容器服务时,请求是这样被转发+路由到运行实际Web站点的容器中的:请求 -> 负载均衡80端口 -> ECS(容器主机)的9080端口 -> acsrouting的80端口 -> 运行Web站点的容器的80端口。

需要注意的是 acsrouting 的路由是基于域名的。

posted @ 2017-06-02 12:14 dudu 阅读(...) 评论(...) 编辑 收藏