全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
容器服务

简单路由(支持 HTTP/HTTPS)

更新时间:2017-09-30 19:06:12

适用场景

普通且简单的 7 层协议负载均衡,Web 路由服务,容器集群内服务之间 7 层协议互相访问的通信代理和负载均衡。

原理

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

routing-design

如上图所示,HTTP 服务,负载均衡实例的前后端端口的映射为 80:9080,主机与路由容器之间的端口映射为 9080:80,即路由的容器暴露 80 端口,其它用作 Web 服务的容器可以暴露任意的端口。只要在容器启动的时候设置主机和容器端口的映射,routing 服务就能获取到相应的端口进行请求的路由。有关暴露 HTTP 服务的完整示例,参见 通过镜像创建 Nginx

设置方式

注意:请务必确保容器服务相关节点的内核参数(/etc/sysctl.conf)中,如下配置值为 0,否则可能会导致无法访问:

  1. net.ipv4.conf.default.rp_filter = 0
  2. net.ipv4.conf.all.rp_filter = 0
  3. net.ipv4.conf.eth0.rp_filter = 0

通过容器服务管理控制台进行设置

通过 服务 > 变更配置 进行设置

  1. 登录 容器服务管理控制台

  2. 单击左侧导航栏中的 服务

  3. 选择所要暴露的服务所在的集群。

  4. 选择所要暴露的服务(本示例中为 wordpress-web)并单击 变更配置

    服务变更配置

  5. 在变更配置页面,配置主机和容器端口的映射,如下图所示。

    主机端口为空,表示随机暴露一个主机的端口(暴露 HTTP/HTTPS 服务时,您可以不需要知道主机暴露的具体端口是什么,可以使用 overlay 网络或者 VPC 网络来直接访问容器的端口),容器端口为 8080。您使用 wordpress-web 服务的 8080 端口来提供 HTTP 服务,使用的协议是 TCP 协议。

    routing设置

    路由配置通过域名来暴露服务,须标明要暴露的端口,此处为 Web 服务 8080 端口。域名字段只填写了域名前缀,如果域名前缀为 XXX,获得的域名为 XXX.$cluster_id.$region_id.alicontainer.com 供测试使用。此处您获得的域名为 wordpress.cb668bde43f054cd7bd515c8739f38310.cn-hangzhou.alicontainer.com。您也可以填写自己的域名,需要添加解析到相应的负载均衡实例 IP。关于配置路由的容器端口和 HTTP 服务的域名的详细信息,参见 routing 标签

通过应用的模板编辑器进行设置

  1. 登录 容器服务管理控制台

  2. 单击左侧导航栏中的 应用

  3. 选择目标应用所在的集群。

  4. 选择目标应用(本示例中为 wordpress)并单击 变更配置

    应用配置变更

  5. 在模板编辑器中,添加 routing 标签,定义相应的域名或者域名前缀。注意升级应用的版本,以及确定是否拉取最新的 Docker 镜像,最后单击 确定 更新域名,如下图所示。

    模板配置

  6. 服务更新完毕后,在服务详情页面,单击 服务访问端点 或者在路由列表下访问 路由地址

    服务访问端点

  7. 进入 wordpress 应用欢迎页。

    wordpress欢迎页

    通过客户端工具进行设置

本文导读目录