在基于 DNS 的负载均衡中,一个服务的名称(别名)会被映射到多个 IP 地址,在这种情况下,服务其实是运行在容器的 IP 地址背后的。当进行 DNS 查询时,DNS 服务器将会响应多个 IP 地址,同时它也会打乱返回的 IP 地址的顺序,这使得从不同客户端发送的请求将会命中不同的 IP,但必须通过手动映射一个别名到多个容器的 IP 地址才能实现循环负载均衡。
在 1.12.0 版本中,Docker添加了内置的对于服务的负载均衡的支持,原理是使用了称为 IPVS 的 Linux 特性,使用 Docker 的集群引擎,一个服务可以通过命令行和必须的数个复制品(容器)来声明,再也不用为服务手动地指定别名。在内部,该服务的 DNS 名称被映射到了一个虚拟 IP(VIP),在这里这个特性与 IPVS 联系了起来,当进行 DNS 查找时,VIP 将被返回。
IPVS 是一个 Linux 内核特性,它可以使得第四层(传输层)TCP/UDP 流量被转发到后端服务器,它是基于网络过滤模块的,其形成了在 Linux 内核中的包过滤和网络地址转换实现的基础。当一个服务请求到达了 VIP,它会被转发到一个托管服务的后端容器中,通过这样的方式,流量会被均匀地分发到容器之中,这种负载均衡服务的方式和 Consul 非常相似,它是服务发现软件。Consul 也提供一个 DNS 服务器,它可以在每次查询完成时返回多个 IP 地址。
本文地址:http://www.linuxprobe.com/docker-1120-balancing.html


Ronny 于 2016-09-02 20:36:53发表:
docker技术的确是未来的技术,大家可以好好学习一下喔