草庐IT

[ 云计算 | Azure ] Chapter 04 | 核心体系结构之数据中心、区域与区域对、可用区和地理区域

bluetata 2023-04-14 原文

本章节主要内容进行讲解:Azure云计算的核心体系结构组件中的:Azure物理基础设施(Physical infrastructure),区域(Regions)和区域对(Region Pairs)、地理数据中心(Geographies data centers)和可用区(Availability Zone)

本系列已经更新文章列表:

[ 云计算 | Azure ] Chapter 03 | 描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx
[ 云计算 | Azure ] Chapter 04 | Azure核心体系结构组件之数据中心、区域与区域对、可用区和地理区域

文章目录

一、Azure 数据中心(Data Centers)

Azure 数据中心是独特的物理建筑,它遍布全球,容纳了一组联网的计算机服务器。

如果你在 Azure 中购买了某一项服务,无论是 VM,还是数据库 databases 或者其他的任何Azure众多服务中的一个,所有这些服务都运行在物理基础设施下面的某种服务器上,托管这些物理服务器的地方就是数据中心,和数据机房一样,这些地方必然会有店员网络以及制冷系统等。

Azure 拥有自研数据中心也拥有 第三方合作的数据中心,比如:

Auzre 托管在欧洲波澜的 beyond.pl 数据中心,你可以去他们官网(文末最后)介绍,可以提供99.9999%的 SLA,可以说只要不发生战争几乎不会发生数据中心瘫痪的情况

(beyond.pl 是欧洲唯一一家获得 ANSI/TIA-942 Rated-4 认证的公司)

二、Azure 区域(Regions)

Azure 区域是一组数据中心,部署在延迟定义的范围内,并通过专用的区域低延迟网络连接。

微软在全球有许多不同规模的区域,他们可以小到单个数据中心,也可以包含多个数据中心,单更重要的是,这些数据中心遍布全球

在区域中,需要注意的几点:

  • 我们最先了解的一件事情是,所有的区域只是一个物理区域,它可以包含一个或者多个数据中心
  • 所有的数据中心之间延迟应低于2毫秒
  • 某些 Azure 服务只有在特定的区域才有
  • 有些服务是全局服务,因此没有分配到特定的区域
  • Azure 在全球范围内有50多个区域

Azure 媒体服务只在东亚、东南亚、澳大利亚、欧洲、印度、中东和北美的一些区域提供。Azure 全球服务 (GRS) 和 Azure 冗余存储服务 (RA-GRS) 只在全球部分区域提供,这些区域包括: 东亚、东南亚、澳大利亚、欧洲、印度、中东和北美。Azure 异地冗余存储服务 (GRS) 和 Azure 冗余存储服务 (RA-GRS) 只在全球部分区域提供,这些区域包括:东亚、中国北部、中国东部、欧洲东部和美国东部。


三、Azure 可用区(Availability Zones)

Azure 可用性区域是 Azure 区域内唯一的物理位置,提供高可用性以保护你的应用程序和数据免受数据中心故障的影响。每个区域由一个或多个配备独立电源、冷却和网络的数据中心组成。

区域内可用性区域的物理分离可保护应用程序和数据免受设施级问题的影响。区域冗余服务跨 Azure 可用区复制你的应用程序和数据,以防止出现单点故障。

作为用户,你是无法控制你的产品或者程序部署在 Azure 的哪个数据中的,这也就是创建可用区的一个原因。用来区分可用区一般都是用序号来区分,可用区1、可用区2、可用区3… 这样来区分,每个可用区都有独立的设施,简单来说,可用区的主要目的就是防止数据中心发生故障,因为每个可用区都有自己的电源、冷却和网络基础设施,如果其中的某一个可用区出现故障,比如地震火灾,或者其他什么原因,造成某一个可用区不能使用了,那么其他的另外两个可用区还可以继续工作。

可用性区域主要用于 VM、硬盘、负载均衡器和 SQL 数据库。 支持可用性区域的 Azure 服务分为三类:

  • 区域性服务:将资源(例如 VM、托管磁盘和 IP 地址)固定到特定的区域。
  • 区域冗余服务(Zone-redundant services):平台自动跨区域复制(例如区域冗余存储和 SQL 数据库)。
  • 非地理区域服务:服务始终从 Azure 地理位置提供,可以灵活应对局部区域和地理区域范围的服务中断。

3.1 可用区 AZ 总结(重要

  • AZ 是 Azure 区域内物理上独立的数据中心
  • 允许通过冗余使应用程序高可用
    • 将您的计算、存储、网络和数据资源复制到其他分区。
    • 增加成本,使你的成本更高
    • 主要用于虚拟机、托管磁盘、负载均衡器和SQL数据库
    • 区域性服务:将资源固定到特定的分区
    • 区域冗余服务:跨分区自动复制
  • 有独立的电源、冷却和网络
  • 设置为隔离边界(isolation boundary)
    • 如果一个 AZ 区域坏了,另一个 AZ 区域还能继续工作
  • 识别命令一般为 AZ 1、2、3
    • 逻辑上独立地映射到每个订阅的实际物理区域
    • 给定订阅中的可用区域1可能与其他订阅中的可用区域1引用不同的物理区域
  • 通过高速专用光纤网络连接
  • 有些地区不支持(多个)可用区

四、Azure 区域对(Region Pairs)

在同一地域内,大多数 Azure 区域都会与至少距其 500 公里左右外的另一区域配对。 此方法适用于跨地域复制资源,有助于减少因自然灾害、社会动乱、电力中断或物理网络中断等事件(影响整个区域)造成服务中断的可能性。 例如,如果一个区域对中的某个区域受到自然灾害,则服务会自动故障转移到其区域对中的其他区域。

重要:并不是所有 Azure 服务都会自动复制数据,或自动从故障区域回退以跨区域复制到另一个已启用区域。 在这些情景中,恢复和复制必须由客户配置。

4.1 区域对 Region Pairs 总结(重要

  • 每个 Azure 区域总是与同一地理区域中的另一个区域配对
    • 例如,美国西部和美国东部配对,东南亚和东亚配对
  • 区域对配对距离至少300(≈500公里)英里。
  • 区域对允许复制资源,例如虚拟机存储
    • 一些服务使用区域对提供自动的地理冗余存储。
  • 区域对可以减少两个地区中断的可能性
    • 例如,自然灾害、内乱、电力中断或物理网络中断
  • 区域对其中一个 Region 失效时,业务会自动切换到对应的区域对中的另一个 Region。
  • 出于税收和执法管辖权的目的,一个数据区域与其配对数据区域应位于相同的地理位置(除了巴西南部)。
  • 如果有大规模的 Azure 中断,每一个区域对中有一个区域被优先排序,以确保至少有一个区域能够尽快恢复
  • 如果 Azure 有计划的更新,更新的方式是一次一个的 Region 进行,再到配对的 Region,以最大限度地减少宕机时间和应用程序宕机的风险。

五、Azure 地理区域(Geographies)

Azure 地理区域是一个离散市场,通常包含至少一个或多个区域,可保留数据驻留和合规边界。地理位置允许具有特定数据驻留和合规性需求的客户保持其数据和应用程序关闭。地理位置具有容错能力,可以通过连接到 Azure 的专用高容量网络基础设施来承受整个区域故障。

5.1 地理区域 Geographies 总结

  • 每个区域属于一个地理区域
  • 地理区域由政治边界或国家边界界定
  • 地理区域具有适用于它的特定服务的可用性、合规性和数据独立规则
  • 通过连接到专用的网络基础设施,容错以承受完全的区域故障
    • 容错:应用程序能够自我检测和纠正其环境中的所有类型的问题
  • 地理区域数据保存规则要符合当地法律法规
  • 地理区域分为以下几个区域
    • 美洲
    • 欧洲
    • 亚太地区
    • 中东和非洲

六、参考文献

https://azure.microsoft.com/en-us/explore/global-infrastructure/
https://www.beyond.pl/en/services/microsoft-cloud/
https://news.microsoft.com/source/features/sustainability/project-natick-underwater-datacenter/

有关[ 云计算 | Azure ] Chapter 04 | 核心体系结构之数据中心、区域与区域对、可用区和地理区域的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  4. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  5. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

    您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

  8. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  9. ruby-on-rails - 缺失区域;使用 :region option or export region name to ENV ['AWS_REGION' ] - 2

    我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误:Aws::Errors::MissingRegionErrorinBooksController#create,缺少区域;使用:region选项或将区域名称导出到ENV['AWS_REGION']。但是,这是我的配置开发.rb:config.paperclip_defaults={storage::s3,s3_host_name:"s3-us-west-2.amazonaws.com",s3_credentials:{bucket:ENV['AWS_BUCKET'],access_key_id:ENV['AWS_ACCE

  10. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

随机推荐