Data Center(5): 实例
我们来分析从外网访问内网的服务的具体过程:
首先我们看DNS和Load Balancer是怎么工作的。
- 客户端要访问我们的系统,发送了一个https请求,https://nova.mycompany.com
- 客户端的local resolver查看本地的缓存,是否能找到域名nova.mycompany.com
- 如果不能找到,则发送一个递归查询到本地的DNS服务器
- 本地的DNS服务器查看它的缓存,看是否能够找到域名
- 如果还是不能找到域名,则DNS服务器发送查询到root DNS服务器
- root DNS服务器找不到域名,返回.com域的DNS服务器地址给本地的DNS服务器
- 本地的DNS服务器发送查询到.com域的DNS服务器
- .com域的DNS服务器找不到域名,返回.mycompany.com域的DNS服务器给本地的DNS服务器
- 本地的DNS服务器发送查询到.mycompany.com域的DNS服务器
- .mycompany.com域的DNS服务器找到了域名nova.mycompany.com,返回一个别名nova.vip.mycomany.com,以及另外两个DNS Server的IP,这两个DNS Server我们分别称为dnsloadbalancer1 and dnsloadbalancer2
- 本地的DNS服务器选择其中一个,比如选择dnsloadbalancer1,来查找nova.vip.mycompany.com
- dnsloadbalancer1返回6个IP,这六个IP分别指向六个LoadBalancer,从LoadBalancer1到LoadBalancer6
- 本地的DNS服务器将这6个IP返回给客户端的Local resolver
- 客户端的Local Resolver在六个IP中,选择一个,比如选择LoadBalancer1
- 客户端连接LoadBalancer1,由于它是一个负载均衡,会将请求发给后端的多个nova服务的一个
- nova服务返回LoadBalancer1调用结果
- LoadBalancer1将结果返回给客户端
其次我们看网络流是如何工作的:
- 假设客户端想要访问https://nova.mycompany.com,当然需要经过上面的DNS过程,得到6个LoadBalacer的IP,并选择其中的一个,并试图去连接这个LoadBalancer。这整个过程如上面从第一步到第十四步,接下来第十五步要连接LoadBalacer1,连接的过程没这么简单,要经过复杂的过程。
- 连接LoadBalancer1的请求会到达其中的一个Border Router
- Border Router的通过iBGP知道,其中一个Available Zone 的aggregation router知道到LoadBalancer1的路由怎么走,于是Border Router通过Core Switch,将请求发送给aggregation router (AR1)
- aggregation router知道LoadBalancer1如何到达,于是将请求发给LoadBalancer1
- LoadBalancer1将包的源地址由客户端的IP变为自己的IP,然后将包发给其中一个nova服务
- 如果nova服务和LoadBalancer1在同一个VLAN中,则能够直接到达,否则还需要经过aggregation router
- 如果nova服务和LoadBalancer1不在同一个VLAN中,但是在同一个aggregation router连接的多个VLAN中,则通过aggregation router上的Virtual Interface就能够转发过去
- 如果nova服务在另一个aggregation router (AR2) 的管理之下,则还需要先发给自己的aggregation router,然后经过core switch发送给另一个aggregation router
- 另一个aggregation router利用arp找到nova服务的MAC地址,将包发给TOR switch
- TOR switch将包发给nova服务,nova服务处理请求,将结果通过TOR Switch –> aggregation router (AR2) –> core switches –> aggregation router (AR1) –> LoadBalancer1
- LoadBalancer1将目标地址改成客户端的地址,将结果发给aggregation router (AR1)
- AR1将结果发送给Border Router,Border Router通过Internet,将结果发送给客户端。
Data Center(5): 实例的更多相关文章
- Codeforces Gym 100513D D. Data Center 前缀和 排序
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/proble ...
- Data Center手册(4):设计
基础架构 拓扑图 Switching Path L3 routing at aggregation layer L2 switching at access layer L3 switch融合了三种功 ...
- Data Center手册(2): 安全性
有个安全性有下面几种概念: Threat:威胁 Vulnerability: 安全隐患 Attack: 攻击 有关Threat 常见的威胁有下面几种 DoS(Denial of Service拒绝服务 ...
- Data Center手册(1):架构
如图是数据中心的一个基本架构 最上层是Internet Edge,也叫Edge Router,也叫Border Router,它提供数据中心与Internet的连接. 连接多个网络供应商来提供冗余可靠 ...
- Docker Data Center系列(一)- 快速搭建云原生架构的实践环境
本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...
- Docker Data Center系列(二)- UCP安装指南
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 Linux内核版 ...
- Docker Data Center系列(四)- 离线安装UCP和DTR
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...
- Docker Data Center系列(三)- DTR安装指南
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...
- Docker Data Center系列(五)- 使用自定义的TLS安全认证
本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 名词说明 CSR: Certificate Sig ...
随机推荐
- 一, Python 一次性多行打印多个变量
>>> n = 123 >>> f = 456.789 >>> s1 = 'hello ,world' >>> s2 = 'he ...
- spring-cloud-config-server分布式配置中心
spring cloud config是一个基于http协议的远程配置实现方式.通过统一的配置管理服务器进行配置管理,客户端通过https协议主动的拉取服务的的配置信息,完成配置获取. spring ...
- unity中调试模型时unity崩溃问题
这个问题是在我调试3D模型资源时出现的,每当在Scene场景中调试模型时unity崩溃,出现Unity Bug Reporter页面,反复出现这个问题,很烧脑 对于这个问题我表示很无语,但是经过不断查 ...
- Bootstrap-datepicker3官方文档中文翻译---Event/事件(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)
Events/事件 DatePicker在某些情况下触发一些事件.所有事件都拥有 传递给任何事件处理程序的 事件对象的 附加数据.(译者注:这里英语拗口,汉语也拗口,我用空格给大家断断句) ...
- 注册中心(Eureka)
1. pom.xml依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</gr ...
- C#生成COM组件
1.类库代码 1.1暴露的方法必须以接口的方式实现 1.2类需要GUID编号 using System; using System.Runtime.InteropServices; //COM组件 n ...
- Selenium之Selenium IDE
官方文档:https://www.seleniumhq.org/docs/02_selenium_ide.jsp 1. Selenium IDE介绍 Selenium IED (Integ ...
- java-数组排序--计数排序、桶排序、基数排序
计数排序引入 不难发现不论是冒泡排序还是插入排序,其排序方法都是通过对每一个数进行两两比较进行排序的,这种方法称为比较排序,实际上对每个数的两两比较严重影响了其效率,理论上比较排序时间复杂度的最低下限 ...
- pytest简介
pytest有哪些优点? 允许直接使用assert进行断言,而不需要使用self.assert*; 可以自动寻找单测文件.类和函数; Modular fixtures可以用于管理小型或参数化的测试信息 ...
- 2018-2019-2 20175305实验一《Java开发环境的熟悉》实验报告
2018-2019-2 20175305实验一<Java开发环境的熟悉>实验报告 实验题目 实验一Java开发环境的熟悉-1 1).实验目的及要求 1.建立"自己学号exp1&q ...