开发者社区> 问答> 正文

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



适用场景


普通且简单的 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,否则可能会导致无法访问:
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0




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


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

  1. 登录容器服务管理控制台
  2. 单击左侧导航栏中的服务。
  3. 选择所要暴露的服务所在的集群。
  4. 选择所要暴露的服务(本示例中为 wordpress-web)并单击变更配置。
  5. 在变更配置页面,配置主机和容器端口的映射,如下图所示。
    主机端口为空,表示随机暴露一个主机的端口(暴露 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 欢迎页。
通过应用的模板编辑器进行设置
  1. 登录容器服务管理控制台
  2. 单击左侧导航栏中的应用。
  3. 选择目标应用所在的集群。
  4. 选择目标应用(本示例中为 wordpress)并单击变更配置。
  5. 在模板编辑器中,添加routing 标签,定义相应的域名或者域名前缀。注意升级应用的版本,以及确定是否拉取最新的 Docker 镜像,最后单击确定更新域名。
  6. 您也可以在路由列表下访问路由地址,进入 wordpress 应用欢迎页。


通过客户端工具进行设置

展开
收起
青蛙跳 2018-08-31 21:37:09 1553 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
负载均衡是如何支撑几亿手机微博用户访问的 -高性能负载均衡研发和应用实践 立即下载
阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
CDN助力企业网站进入HTTPS时代 立即下载