BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Docker 1.12.0 改进了服务的负载均衡参数

| 作者 Hrishikesh Barua 关注 15 他的粉丝 ,译者 百占辉 关注 0 他的粉丝 发布于 2016年8月29日. 估计阅读时间: 2 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

在最新发布的 1.12.0 版本中,当在集群中启动服务时,Docker 通过 DNS 和 IP 虚拟服务器(IPVS)为服务的负载均衡引入了新的参数。

新版 Docker 引入了内置的 DNS 服务器,当启动一个容器时,可以通过它使用 --net-alias 参数来为容器的 IP 地址映射别名。这个特性从 1.10 后就可使用。从 1.11 版本之后,Docker 也支持了基于循环 DNS 的负载均衡。

在基于 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 地址。

查看英文原文:Improved Options for Service Load Balancing in Docker 1.12.0

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT