博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
『中级篇』RoutingMesh之Ingress负载均衡(48)
阅读量:6257 次
发布时间:2019-06-22

本文共 822 字,大约阅读时间需要 2 分钟。

原创文章,欢迎转载。转载请注明:转载自,谢谢!

原文链接地址:

当创建或更新一个服务时,你可以利用--publish选项把一个服务暴露到外部,在docker swarm模式下发布一个端口意味着在集群中的所有节点都会监听这个端口,这时当访问一个监听了端口但是并没有对应服务运行在其上的节点会发生什么呢?

  1. 接下来就该我们的路由网(routing mesh)出场了,路由网时docker1.12引入的一个新特性,它结合了IPVS和iptables创建了一个强大的集群范围的L4层负载均衡,它使所有节点接收服务暴露端口的请求成为可能。当任意节点接收到针对某个服务暴露的TCP/UDP端口的请求时,这个节点会利用预先定义过的Ingress overlay网络,把请求转发给服务对应的虚拟IP。ingress网络和其他的overlay网络一样,只是它的目的是为了转换来自客户端到集群的请求,它也是利用我们前一小节介绍过的基于VIP的负载均衡技术。
  2. 当启动服务时,你可以为你的应用创建一个外部的DNS服务,并把它映射到你集群的任意节点或者是所有节点,你无需担心你的容器具体运行在那个节点上,因为有了路由网这个特性后,你的集群看起来就像是单独的一个节点一样。

上面这个图表明了路由网是怎么工作的:

  • 服务(app)拥有两份复制,并把端口映射到外部端口的8000
    路由网在集群中的所有节点上都暴露出8000
  • 外部对服务app的请求可以是任意节点,在本例子中外部的负载均衡器将请求转发到了没有app服务的主机上
  • docker swarm的IPVS利用ingress overlay网路将请求重新转发到运行着app服务的节点的容器中

PS:负载均衡解决了单一入口负载到多个容器上问题, 但是由于容器调度之后可能落到多个机器上, 假如某些主机上面没有工作的容器,而对外服务时候又希望服务可以被访问, Routing Mesh概念引入是解决多个入口点负载到单个容器的问题。

你可能感兴趣的文章
下载文件downloadFile
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
hdoj1078(介绍记忆化搜索及其模板)
查看>>
cf-Round542-Div2-B(贪心)
查看>>
有关Python的PIL库的学习体会和实例
查看>>
日志挖掘(logminer)
查看>>
LaTeX技巧005:定制自己炫酷的章节样式实例
查看>>
LeetCode解题思路:27. Remove Element
查看>>
CCF NOI1138 高精度加法
查看>>
构造函数私有方法和公有方法
查看>>
JS原型与原型链终极详解
查看>>
win7 下配置Openssl
查看>>
Android中Handler的使用方法——在子线程中更新界面
查看>>
1_NAT模式和桥接模式下的网络配置
查看>>
netcore webapi帮助文档设置
查看>>
springcloud~配置中心的使用
查看>>
EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
查看>>
认识flask框架
查看>>
7. 类的继承
查看>>
npm
查看>>