前言:Azure学习笔记系列


本周笔者参加了公司安排的Azure培训。本系列文章仅为笔者的学习笔记,仅用于技术讨论,本文不适用与生产环境规划设计和和实施参考。


本文是大卫Azure学习笔记的完结篇,也是完整版。本文包含:案例分析和架构设计、基本概念与实验展现两大部分。本文的架构设计仅供参考。



案例分析与架构设计


案例分析:大卫公司电子商务网站案例研究


大卫公司是北京的一家媒体和出版公司,拥有约2000名员工。它有一个成功的直接面向消费者的电子商务网站,使用.NET构建,并使用SQL Server来存储客户资料和订单信息。

 

•桌面为内部和面向客户的应用程序提供单一数据中心。大多数服务器都是在VMware上虚拟化的。应用程序服务器主要运行Microsoft服务器软件,包括Active Directory(AD)域服务和许多AD集成服务(包括Exchange 2013)以及多层,内部AD集成的基于Microsoft Internet Information Services(IIS)的Web应用程序与SQL Server 2016作为数据库平台。


 •桌面电子商务网站由于雷击,最近经历了多天的停电,数据中心的主要和次要冷却系统都导致16小时停机而冷却系统被修复。 


▪当前的灾难恢复策略

经典的备份/恢复。

不提供异地热备用机器。 

备份被转储到文件共享,然后备份到磁带并发送到异地。

没有自动化,所有操作步骤都是手动的。

灾难现场依靠从主机设施租用的临时硬件。 

故障转移从未经过测试,由于成本和复杂性。

由于没有归档策略的大表,维护作业运行时间过长。


 ▪客户要求

全面的多站点灾难恢复解决方案,要求:复杂度低、故障切换联动、数据丢失接近零。 

具有跨站点灾难恢复的高可用性容错SQL Server服务。

随着环境的发展,能够无缝扩展容灾站点基础设施。 

数据存档可使数据库大小更易于管理,并可减少数据库维护所需的时间。

在不到两个小时的时间内保护异地备份。  


 ▪客户关注要点:

解决方案必须支持协调故障转移,以便故障转移不需要全部动手进行。

解决方案必须支持现有的VMware基础架构。 

灾难恢复基础架构必须易于扩展,以支持工作负载的变化。 

主站点和灾难恢复站点都必须具备高可用性。



使用Azure对案例架构设计

本项目用到的Azure技术:

Traffic Manager,使用目的:将客户端发过来的请求进行流量分发。默认都分发到主站点。

Virtual Network,使用目的:用于网络隔离。

Virtual Machines,使用目的:承载应用。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java

Azure AD Service,使用目的:故障切换后,用户信息、密码、权限等不变。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_02

LoadBalancer:使用目的:应用的负载均衡。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_03

Express Route,使用目的:构建On-Premises和Azure Cloud之间的隧道。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_04

Availability Set:用于保证VM的高可用。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_05


Scale Sets,使用目的:让虚拟机实现弹性伸缩。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_06

Site Recovery,使用目的:主站点发生灾难时,自动触发灾难恢复。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_07

Storage Backup,使用目的:将主站点的SQL Server数据备份到备站点。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_08

Blob Storage,使用目的:用于Azure上存放SQL Server归档数据。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_09

Disk storage,使用目的:为SQL Server提供存储空间。

可选:SQL Server Stertch Database。使用目的:如果客户对SQL Server的高可用要求非常高,那么使用分布式SQL server技术。如果要求相对较低,则使用上面提到的data backup备份主站点的SQL Server数据,到备站点恢复(从大卫公司的要求看,不必使用SQL Server Stertch Database,因为价格较高)。


整体架构:

在方案中,有两个站点:

On-Premises是主站点本地数据中心的VMware虚拟机。里面运行了IIS Server和SQL server。


Azure Cloud是备站点,用于VMware环境的灾备。

站点之间:

1.Site Recovey监控整个VMware环境,并在本地发生灾难的时候,向Azure上进行切换;


2.Traffic Manager负责流量的发送,默认所有流量都发向On-Premises环境;


3.ADConnect负责将On-premises AD的信息同步到Azure AD;


4.通过Date Backup技术,将VMware中SQL server的数据,备份到Azure上的Disk storage上。


5.两个站点间的互通,通过Express Route实现,它可以加快data backup的速度。如果使用SQL Server Stertch Database,也需要Express Route做跨站点的数据同步。


备站点Azure Cloud:

1. Traffic Manager链接Load balancer,它后面链接IIS集群。IIS集群在一个Scale Set中。IIS和后面的SQL server位于两个不同的Vnet。对IIS设置Avaliable Set。


2. IIS连接SQL Server,SQL server访问后端的数据。上面已经提到,这些数据是从VMware的SQL Server数据中备份过来的。对SQL Server设置Avaliable Set。SQL server所在的Vnet需要和IIS所在的Vnet配置peer。


3. 为了避免以后数据量太大,对SQL Server的数据设置归档策略,归档到blob 存储。


在正常情况下,客户端的请求,都被Traffic Manager转发到主站点。主站点的SQL Server数据被异步拷贝到备站点。


当主站点发生灾难以后,Site Recovery触发IIS虚拟机和SQL Server VM的切换。SQL Server将访问备份过来的数据。客户端的请求,都被Traffic Manager转发大到备站点。



基本概念与实验展现


一、Azure学习笔记系列


本周笔者参加了公司安排的Azure培训。本系列文章仅为笔者的学习笔记,仅用于技术讨论,不代表任何厂商的官方观点。


二、Azure的概况


Azure目前全球有38个region。目前在中国有两个:中国北部和中国东部。目前Azure中国是由世纪互联运营的。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_10

Azure的底层Hypervisor是Hyper-V。需要注意的是,Azure的Hyper-V和Windows中的Hyper-V虽然名字一样,但功能区别很大。Azure虚拟机的数据文件是.vhd

的(vSphere是vmdk)。


笔者在做实验过程中,在Azure China可以申请一元适用订阅(绑定信用卡或使用支付宝),有效期是一个月。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_11


三、Azure的存储服务


Azure提供的存储服务有几种类型:Blob、Files、Tables、Queues。

  • Blob是对象存储。适合存放:图片、视频、文件、日志文件、大数据等。

  • Files是文件存储。为应用提供文件系统的服务。

  • Tables是为非结构化数据提供存储的,它是一个Key-Value的方式,支持NOSQL,不支持RDBMS。

  • Queues用于存放通过http/s协议发请求类服务的查询消息。

  • Disk storage:为VM提供高性能的持久存储,包含SSD和HDD。


Azure的存储服务中,有一个很重要的概念:Storage Account。它是Azure存储服务的namespaces。


一个Azure的用户,最多有20个Storage Account,每个Storage Account最多有500TB的空间。


Storage Account的复制技术有四种:

  • LRS(Locally Redundant Storage):数据三个副本都存在于一个Region。

  • ZRS(Zero-Redundant Storage):数据的三个副本跨1-2个region。

  • GRS(Geo-Redundant storage):数据六个副本,三个在第一个region,另外三个在第二个region。第二个region的数据是静态不能被修改的(在主备region发生切换前,第二个region的数据不可读写)。

  • RA-GRS(Read-Access Geo-Redundant storage ):在GRS基础上,第二个 region的数据是可读的。


在创建storage account的时候,可以指定存储的复制技术:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_12

接下来,在创建好的Storage Account中,选择Blob Service:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_13

然后创建一个container(方便按照存储内容的细分。如可以有日志、大数据等类型的数据,就可以分成不同的container):

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_14

从本地上传一个文件:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_15

然后复制这个文件的链接:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_16

https://savidsa.blob.core.chinacloudapi.cn/clt-container/%E6%BC%94%E8%AE%B2%E9%A2%98%E7%9B%AE1%EF%BC%9A%E5%AE%B9%E5%99%A8%E5%9C%A8%E4%BC%81%E4%B8%9A%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8.pdf


就可以通过浏览器访问URL浏览、下载文件了:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_17


接下来,我们再看一个创建文件存储的示例:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_18

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_19

然后查看VM如何通过SMB方式挂载共享,点击connect:

net use Z: \\dedevstore.file.core.chinacloudapi.cn\azurefileshare /u:AZURE\dedevstore X6l5+VUL8kmC7PmbF9rI34tttK2s4u1ntY/7UqM2Plobs1bMNi/wDj5Ll8Mec334jaVwyajvmWRVzDjSb65GXQ==


映射网络驱动器:使用上一步粘贴出来信息中的凭证:

映射成功:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_20


四、Azure的网络服务


为了避免赘述概念,我们通过一个实例大致讲述Azure的网络。


在Azure中国的北区和东区,分别有两个虚拟网络:Vnet1和Vnet2。


Vnet1的网段是:10.0.0.0/16; Vnet2的网段是:20.0.0.0/16; 

Vnet1中有一个subnet,网段是:10.0.0.1.0/24; Vnet2也有一个subnet,网段是:20.0.1.0/24; 


Vnet1-subnet1中有个虚拟机VM1,IP是10.0.1.4;

Vnet2-subnet1中有个虚拟机VM2,IP是20.0.1.4;


我们如何让VM1和VM2进行通讯?

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_21


第一步,在两个Vnet中创建subnet gateway:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_22


第二步,为两个跨Region的通讯准备两个public IP:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_23

第三步,创建vnet gateway,创建过程中,会和public ip、subnet gateway创建关联关系。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_24

第四步:创建vnet  gateway之间的connection。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_25

至此,分别位于两个区域的两个VM,就可以通过通讯了。当然,需要VM上的Network interface的Network security group放行相关的网络策略。


接下来,我们看一下实验环境。

先看一下Vnet之间的connection(双向的):

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_26

查看第一个connection,它将RG1的vnet gateway和RG2的vnet gateway建立了关联:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_27

查看第二个connection,它将RG2的vnet gateway和RG1的vnet gateway建立了关联:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_28

查看第一个vnet gateway,它和vnet1进行了关联。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_29

在查看vnet1,可以看到有两个VM和它进行了关联:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_30

查看vnet1的subnet,可以看到subnet的gateway:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_31

subnet gateway的信息:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_32

查看VM的网卡安全组策略:

至此,大家应该都够大致了解Azure的网络架构。



五、VM Scale Set的配置与验证

Scale Set是用于设置VM的横向扩展的。通过设置阈值,当Scale Set中的VM CPU利用率变高或者变低时,触发虚拟机的弹性扩展。


创建Scale Set:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_33


指定VM用的模板,VM数量。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_34


设置Auto Scale的阈值:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_35

接下来,对Scale set中的VM进行CPU加压:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_36


然后在scale set中可以看到,虚拟机实例已经增加:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_37

当CPU利用率下降以后,虚拟机实例进行了自动缩减:

随后,再度触发CPU压力,新的虚拟机实例被创建:


六、同步On-premise AD和Azure AD的信息


Azure上有AD service服务。但很多用户都有本地的AD,因此需要将本地AD信息与Azure AD的信息同步。本步骤通过实验展示这个步骤。


首先,数据中心本地有个AD:mastercloud.net。这个AD的管理员是:harits。在创建几个普通用户:曹操、杨过、小龙女等。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_38


接下来,在Azure AD中添加本地的域:mastercloud.net:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_39

然后,在本地AD的windows中,用Azure ADConnect添加Azure AD的Global Account:davidsajarewei.partner.onmchina.cn.

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_40

添加成功以后,可以在本地windows上看到本地AD已经和Azure AD创建了同步关系:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_41


然后在Azure AD中,就可以看到本地AD中的用户了:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_42



七、创建Recovery Service并保护一个VM


在Azure上选择Backup and Site Recovery:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_43

然后选择backup服务,并设置保护本地系统的文件和目录:

接下来,下载Recovery Services Agent,安装到被保护的系统中。然后下载认证文件,在配置agent的时候导入:


一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_44

将Agent安装完毕:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_45

接下来,在Azure上查看被保护的系统:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_46

已经可以看到一个:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_47

接下来,在被保护的系统上创建backup任务:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_48

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_49

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_50

也可以手工触发,完成backup:



八、配置VM的定时自动启动和关闭


本步骤将使用Azure上的Automation服务。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_51


选择runbooks,通过gallery添加自动启动和停止的脚本:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_52

分别对两个脚本对现有虚拟机进行测试,确保成功:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_53

测试关闭VM脚本的效果:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_54

很快,虚拟机开始释放资源:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_55

过一会,虚拟机被关闭了。


用同样的方法,测试启动脚本,确保可以执行成功。


然后将两个runbook发布。


接下来,设置计划任务:


然后关联虚拟机:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_56

用同样的方法,再创建一个定时启动VM的任务。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_57



九、配置Hadoop Insight Cluster


创建HD Insight Cluster,也就是创建一个Hadoop集群以及hadoop集群的监控:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_58


添加对Hadoop集群的监控:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_59


一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_60


一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_61

设置Hadoop集群的规模:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_62

创建完毕后,可以监控Hadoop的信息,应该说信息还是比较丰富的:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_63

查看Cluster dashboard:

还可以给Hadoop扩容:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_64

可以为hadoop增加app:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_65

可以增加脚本:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_66



十、配置机器学习

链接:https://studio.azureml.net。

本实验将展示通过Azure上的机器学习,通过输入原始数据,进行汽车价格预测。


原始的数据表如下,这个表格列出了全美93个地区的信息。第一列是该地区的名称、第二列表示当地的基尼系数、第三列表示2014年该地区的人口、第四列表示地区面积、第五列表示人口趋势、第六列表示人口密度。

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_67

开始试验:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_68

点击新建:

点击New,选择dataset,从本地上传数据文件:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_69

选择从本地上传数据文件:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_70

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_71

数据导入成功:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_72

将数据进行可视化查看:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_73


一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_74

再增加一个模块:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_75

创建两者的数据关系:

设置Transformation method:

确认选择的 COLUMNS是如下几个:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_76

选择run select

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_77

然后查看可视化数据:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_78

添加新的模块:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_79

继续添加:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_80

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_81

为Train clustering Model:

对数据进行可视化:

再增加两个模块,并连接拓扑:

然后点击运行:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_82

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_83

对最终结果进行可视化:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_84

最终形成结果:

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_85

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_86

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_87

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_88

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_89

一个虚拟化客户上云的需求分析&架构设计-大卫的Azure学习笔记大全_java_90