之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣,毕竟很多客户以前都是做网络存储系统出身,他们对底层架构的兴趣甚至超过了Azure所提供的功能,基于以上原因,所以笔者感觉有必要初步分析一下Azure的底层架构。

在分析Azure的底层架构之前,我觉得有必要说一下Azure的所使用的硬件,其实在初期,Azure的cpu使用过AMD的,但是现在Azure的cpu都是Intel Xeon  E系列,x86架构,RS全部为cisco的设备,负载均衡器都为F5的

接下来我们来分析Azure的底层架构,我们都知道,在传统的网络架构中,我们都采用pod架构,如下图,这种架构是基于L2来做的,先由接入层到核心层,核心层连路由网关,或者在中间有firewall

                         

但是我们知道,这种传统的基于大量二层+少量三层的架构有致命的缺陷,就是stp与vlan的限制,我们知道交换机在处理广播报文的方式是泛洪,为防止形成广播风暴,必须运行stp来block掉某个端口,这样就会有造成如下的缺点,低效的路径,造成大量闲置带宽,维护成本高昂,可靠性很低,在运行stp的架构中数据中心最多可接入百台双网卡服务器,远不能满足大型数据中心的要求,第二点,就是传统vlan的数量限制(4096个,远不能满足数据中心的大规模组网),同时基于IP子网的区域划分限制了需要二层连通性的应用负载的部署,TOR交换机mac表耗尽,以及多租户场景都无法满足,此外虚拟化技术的发展,使得虚拟机在二层域的动态迁移中显得非常困难,以及收敛比等问题,这时就急需一种新的网络架构,fabric架构应运而生

fabric架构应用了大量的新兴的技术,实现了大二层,运用了trill vxlan等技术,架构图如下

fabric架构有相对于传统的网络架构,fabric架构将多台物理的交换机看成一台巨大的逻辑交换机,不受stp限制,互相之间都可以通信,节约物理链路的带宽,优化了收敛比,可以实现二三层飘移,同时没有ARP广播和未知单播泛洪等现象,像传统的路由网络一样可以扩展,任意服务器可以在任意vlan,vlan可以扩展到全网, 任意位置都可以做任意vlan路由,同一vlan网关要一致,任意vlan内和任意vlan之间都可以做类似三层路由的方式通信 ,提供更灵活的拓扑,节点小型化,分布扁平化等优点 。

以上就是笔者粗浅地对比了两种架构,有兴趣的读者可以自行百度,这里就不再展开细说,接下来我们重点来看Azure的底层架构,并且这里隐去RS部分,只看计算单元,首先附上两张图,第一张是Azure的计算单元的实物图,另一张是本人手绘的Azure的计算单元图,废话不多说,上图

实物图

手绘图

Azure是将计算单元分成一个个独立的cluster,在这里笔者想提醒一句,在老的portal里面,以前有一个地缘组的概念affinity group,很多人不明白这一概念,以为只是中国东部数据中心和中国北部数据中心的别名,这一认识是完全错误的,地缘组的概念其实不是这样,在我们的Azure数据中心内部,是由若干个容器组成,每个容器包含了群集/机架,每个容器都有特定的服务与功能,包括计算和存储,举个例子来说,当你建了一台vm,然后你又给该vm建立了存储账户,假如我们在建立这两个服务的时候计算资源放在数据中心的内部,而存储资源放到了数据中心外围,显而易见这不是我们想预见的结果,最好的结果是能放在同一数据中心比较靠近的位置,最好能在同一群集里,所以就有了地缘组的概念,放在同一地缘组的云资源会放在同一数据中心比较靠近的地方,甚至同一个群集里,这样的好处是能够降低时延,但是Azure已经逐步淡化这一概念,在这里笔者只是想提醒大家一下,以后再碰到这个概念不要混淆。

从上面的图中我们可以看出,一个cluster中包含了20个chassis,每个chassis有96台机器,每个chassis上都有几台SLB,在以前,Azure的SLB(负载均衡器)都由虚拟机来做,但是后来微软发现用虚拟机来做SLB性能并不理想,所以全部用物理机来做,在SLB外面附着一些VIP(在这里你可以将它看成一个SLB的公网IP地址,关于Azure的几种IP地址,笔者会在后续的博文中详细介绍,这里先不展开叙述),每个chassis上面还有一个FC(Fabric Controller),管理这个chassis上资源的分配,千万不要小看它,它是一个chassis的核心部位,每个chassis上包含了不同类别的虚拟机,可能有只有A系列的虚拟机,如A0-A4或者A1-A7,也或者包括了D系列,Dv2系列虚拟机,甚至还有F系列虚拟机(G系列与H系列虚拟机在国内仍没有preview,只有global账户才能建立)。

但是我们会发现一个重要的问题,并不是每个chassis上都包含所有系列的虚拟机,有的甚至只有A0—A4或者A1—A7的虚拟机(这都是Azure初建数据中心的老的chassis,现在可能只有很少的一部分了),还记得在上面的博客中笔者提醒大家在建虚拟机的时候先建立D系列虚拟机,然后再降为A系列虚拟机,就是这个原因造成的,当我们在建立vm的时候,FC会去看哪个chassis上的资源比较闲置,然后扔给最不忙的那个chassis ,如果你先选建立一个A系列虚拟机,FC有可能碰巧将它扔在了某个只有A系列虚拟机的chassis上,等你再想做纵向扩展的时候会发现虚拟机不能D系列了,就是这个原因造成的,所以我竭力建议大家先建高配的虚拟机,然后再降为低配的虚拟机。

但是就是这样就结束了嘛,其实远不是这样,其实在Azure最老某些的cluster里面只有A系列虚拟机,这就相当可怕了,因为这样你不仅不能纵向扩展,也不能横向扩展,为什么?所谓横向扩展就是建立可用性集,然后将多台虚机加入同一可用性集,以实现HA,同一可用性集的虚拟机的意思就是在同一cluster而不在同一chassis上面,这样既提供高可用有提供了冗余(不在同一chassis的目的是为了防止该chassis出问题而导致整个可用性集里的虚拟机全部挂掉),但是你整个cluster里面都只有A系列虚拟机,那你横向扩展只能扩展多台A系列虚拟机,这就是某些客户碰到的问题,说先建立了某两台A系列的虚拟机,并且加入了某个可用性集,但是后来发现再建了一台D系列的虚拟机不能加入这个可用性集了,就是这个原因造成的,因为那两台虚拟机很有可能被扔进了某个只有A系列的虚拟机的cluster里造成的,但是反过来如果我们先建立一台D系列虚拟机,并且加入某个可用性集,再去A系列虚拟机加入该可用性集,这样就一定不会出问题,因为第一台D系列虚拟机决定了你的cluster,这句话一定要理解,所以我们在建立虚拟机的时候一定要记得先建立高配置的虚拟机,然后再降为低配的!!!

转载于:https://www.cnblogs.com/chenjie520/p/6169208.html

Azure底层架构的初步分析相关推荐

  1. java底层app_Java底层类和源码分析系列-ArrayBlockingQueue底层架构和源码分析

    ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列. 几个要点 ArrayBlockingQueue是一个用数组实现的队列,所以在效率上比链表结构的LinkedBlockingQu ...

  2. 编程内功心法「底层原理系列」 底层架构原理,分析CPU处理器鲜为人知的那些秘密

    前提概要 所谓,知彼知己百战不殆,针对于计算机的优化技术来讲,最底层也不过是针对于CPU技术的优化了,但是如果要区优化程序,涉及到CPU的执行能力,那必须要了解CPU的原理和概念以及执行过程等概念,所 ...

  3. 一份职位信息的精准推荐之旅,从AI底层架构说起

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]也许,每天早上你的邮箱中又多了一封职位推荐信息,点开一看,你可能发现这些推荐正合你意,于是按照这些信息,你顺利找到一份符合 ...

  4. 字节跳动推荐平台技术公开,项亮:底层架构有时比上层算法更重要

    允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 字节跳动已正式吹响进军云计算市场号角. 12月2日,火山引擎全系列云产品亮相,共推出了78项云产品服务,涵盖云基础.视频及内容分发.数据中台 ...

  5. mysql多大_洞悉MySQL底层架构:游走在缓冲与磁盘之间

    提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系.为此我撰 ...

  6. 查看队列深度_不为人知的网络编程(十一):从底层入手,深度分析TCP连接耗时的秘密...

    " 本文作者张彦飞,原题"聊聊TCP连接耗时的那些事儿",本次收录已征得作者同意,转载请联系作者.即时通讯网收录时有少许改动.本文已同步发布于52im社区:http:// ...

  7. 打造自己的分布式搜索引擎底层架构(非Lucene)

    打造自己的分布式搜索引擎底层架构(非Lucene) 大家知道,搜索引擎技术不仅仅是类似百度首页的应用,还可以衍生出数据分析工具,商务智能工具等许多有卖点的应用,甚至是社会化关系通道的发现. 甚至这些非 ...

  8. 通过一条语句的执行,深入理解innoDB的底层架构

    MySQL最常用的存储引擎是innodb,我们今天就借助一条更新语句的执行,了解下innodb具体是如何处理的,深入理解下它的架构. 假设更新语句是这样的: update user set name ...

  9. 8种 骨干级 架构设计模式 图示 分析 优缺点 总结

    8种 骨干级 架构模式 图示 分析 总结 文章目录 8种 骨干级 架构模式 图示 分析 总结 单库单应用模式 内容分发模式 查询分离模式 微服务模式 多级缓存模式 分‍‍‍库分表模式 弹性伸缩模式 多 ...

最新文章

  1. zookeeper3.4集群搭建
  2. SVN:This client is too old to work with working copy…解决的方法
  3. MSSQL 2008 数据库变成可疑状态
  4. 数据采集之用户区域(USER)事件
  5. 直面桌面云带来的现状优势
  6. C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
  7. 20200221_2_国家非文化遗产聚类分析
  8. docker 使用非加密registry
  9. kotlin中Gson解析Json时对于泛型的应用
  10. 2022年PYTHON应用行业,PYTHON就业方向
  11. php读取与写入文件(详解)
  12. java计算机毕业设计高校学生党建管理系统源码+mysql数据库+系统+lw文档+部署
  13. 奋斗在美国湾区,码农的生活
  14. 邮件裸奔,两大加密协议 PGP 与 S/MIME 被曝明文漏洞;DeepMind AI 能让自己拥有像哺乳动物那样的导航能力...
  15. 情人节适合送礼的数码好物有哪些?心意满满的数码好物清单
  16. 蓝牙基带协议(baseband specification)
  17. 16 最小二乘法 - 数据分析的瑞士军刀
  18. Web 页面如何添加水印?
  19. UI控件Telerik UI for Silverlight发布R3 2018 SP1|附下载
  20. 【雕爷学编程】Arduino动手做(92)--- 433M无线收、发模块

热门文章

  1. TabControl控件和TabPage
  2. git add 之后因为没提交正确文件需要撤销
  3. 机器学习一 -- 什么是监督学习和无监督学习?
  4. java.lang.IllegalArgumentException: Path index does not start with a / character
  5. ndarray.shape[]返回值的意义
  6. JQuery实现Ajax功能
  7. acwing算法题--看图做题
  8. 文本显示变量_Axure9实操教程10-变量
  9. PHP算法之四大基础算法
  10. Cloud Native Computing Foundation Welcomes the NATS Messaging Protocol into the Fold