服务发现和负载均衡的简单路由(支持 HTTP/HTTPS)-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

服务发现和负载均衡的简单路由(支持 HTTP/HTTPS)

反向一觉 2017-10-30 11:30:53 1847

适用场景
普通且简单的 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
设置方式
[backcolor=transparent]注意:请务必确保容器服务相关节点的内核参数(/etc/sysctl.conf)中,如下配置值为 0,否则可能会导致无法访问:
  1. [backcolor=transparent]net[backcolor=transparent].[backcolor=transparent]ipv4[backcolor=transparent].[backcolor=transparent]conf[backcolor=transparent].[backcolor=transparent]default[backcolor=transparent].[backcolor=transparent]rp_filter [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0
  2. [backcolor=transparent]net[backcolor=transparent].[backcolor=transparent]ipv4[backcolor=transparent].[backcolor=transparent]conf[backcolor=transparent].[backcolor=transparent]all[backcolor=transparent].[backcolor=transparent]rp_filter [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0
  3. [backcolor=transparent]net[backcolor=transparent].[backcolor=transparent]ipv4[backcolor=transparent].[backcolor=transparent]conf[backcolor=transparent].[backcolor=transparent]eth0[backcolor=transparent].[backcolor=transparent]rp_filter [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0

通过容器服务管理控制台进行设置
[backcolor=transparent]通过 服务 > 变更配置 进行设置
  1. 登录 容器服务管理控制台
  2. 单击左侧导航栏中的 [backcolor=transparent]服务。
  3. 选择所要暴露的服务所在的集群。
  4. 选择所要暴露的服务(本示例中为 wordpress-web)并单击 [backcolor=transparent]变更配置。
  5. 在变更配置页面,配置主机和容器端口的映射,如下图所示。
    主机端口为空,表示随机暴露一个主机的端口(暴露 HTTP/HTTPS 服务时,您可以不需要知道主机暴露的具体端口是什么,可以使用 overlay 网络或者 VPC 网络来直接访问容器的端口),容器端口为 8080。您使用 wordpress-web 服务的 8080 端口来提供 HTTP 服务,使用的协议是 TCP 协议。
    路由配置通过域名来暴露服务,须标明要暴露的端口,此处为 Web 服务 8080 端口。域名字段只填写了域名前缀,如果域名前缀为 XXX,获得的域名为 XXX.$cluster_id.$region_id.alicontainer.com 供测试使用。此处您获得的域名为 wordpress.cb668bde43f054cd7bd515c8739f38310.cn-hangzhou.alicontainer.com。您也可以填写自己的域名,需要添加解析到相应的负载均衡实例 IP。关于配置路由的容器端口和 HTTP 服务的域名的详细信息,参见 routing 标签

[backcolor=transparent]通过应用的模板编辑器进行设置
  1. 登录 容器服务管理控制台
  2. 单击左侧导航栏中的 [backcolor=transparent]应用。
  3. 选择目标应用所在的集群。
  4. 选择目标应用(本示例中为 wordpress)并单击 [backcolor=transparent]变更配置。
  5. 在模板编辑器中,添加 routing 标签,定义相应的域名或者域名前缀。注意升级应用的版本,以及确定是否拉取最新的 Docker 镜像,最后单击 [backcolor=transparent]确定 更新域名,如下图所示。
  6. 服务更新完毕后,在服务详情页面,单击 [backcolor=transparent]服务访问端点 或者在路由列表下访问 [backcolor=transparent]路由地址。

  7. 进入 wordpress 应用欢迎页。
    通过客户端工具进行设置

弹性计算 负载均衡 网络协议 前端开发 应用服务中间件 nginx Docker 容器
分享到
取消 提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题