详解Docker负载均衡和服务发现

2021-01-27    分类: 网站建设

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目,自开源后受到广泛的关注和讨论,以至于dotCloud 公司后来都改名为 Docker Inc。

Docker 是一个使用Go语言开发的开源的应用容器引擎,是PaaS提供商dotCloud开源的一个容器引擎。Docker 遵从 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

简单讲,Docker就是一个可以分配资源的进程隔离模型。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。

相关术语解释

  • Dubbo:阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
  • LVS:Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
  • Ipvs:IP虚拟服务器(IP Virtual Server,简写为IPVS)。是运行在LVS下的提供负载平衡功能的一种技术
  • Nginx:一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
  • HAProxy:一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
  • 南北通信:指的是整个容器集群入口的通信。南北通信的特点往往是通信量比较大,因此我们首先用SLB将流量分散到各个
  • SLB做到动态绑定的原理:Swarm监管容器的状态,如果容器正常运行,则把容器加入到SLB的后端,如果容器发现异常,则把容器从SLB的后端摘下来。

    HAProxy实现动态服务发现的原理:HAProxy容器内除了有HAProxy软件,还有脚本程序监管容器的状态,根据容器的健康状况重新生成负载均衡信息,然后重新加载(reload)HAProxy,使得新的负载均衡信息生效。

    实现不停服rolling_update原理:平滑升级的关键在于每一时刻均有至少一个容器还能正常提供服务。

    1)需要部署多个容器,将容器分为A、B两批更新。

    2)更新容器时,先将A批容器的路由从SLB或者HAProxy上面摘下来。

    3) 更新A批容器

    4)A批容器健康检查正常后,重新加入路由

    5)摘下B批容器的路由

    6)更新B批容器。

    实现灰度发布原理:不通版本的服务可以共享同一路由信息,通过调整SLB或者HAProxy权重的方式来做到灰度发布。

    根据场景提供服务形态

    简单路由服务:基于HAProxy,我们加了一层Wrapper,做到动态发现处于运行状态的容器,加入到负载均衡中,我们称之为简单路由服务(Routing service),其公网IP通过一个SLB对外进行暴露。主要解决如下需求:

    7层服务端点对公网暴露,即承接公网访问集群内使用7层协议的服务的流量。

    7层服务端点对内网暴露,即容器集群内的负载均衡和服务发现:如下图所示,集群内的服务发现利用了Docker自带的DNS resolver配合了HAProxy的负载均衡和健康检查。图中的LB即为简单路由服务下的HAProxy容器。

    1)首先通过Docker自带的DNSresolver将

    我们根据不同的通信形式和协议层提供不同的服务来满足用户的需求,例如对应南北通信,如果是使用7层协议的服务,我们推荐用户使用集群的SLB进行流量转发,最终的流量会转发到每个主机的HAProxy容器上面,然后在分发到相应的处理请求的服务上。

    本文名称:详解Docker负载均衡和服务发现
    转载注明:/news/97669.html

    成都网站建设公司_创新互联,为您提供网站营销网站内链营销型网站建设品牌网站制作小程序开发定制网站

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    手机网站建设