Azure IaaS 快速实践 1 - 使用Windows虚拟机搭建多层次网站服务

前面的PaaS快速实践中,逐步讲述了PaaS的开发模式和运行环境。从搭建本地开发环境开始,到开发第一个云服务,再到设计并实现第一个较综合的云服务,最后对云服务进行性能优化和状态跟踪。其设计到的主要产品包括:云服务(Cloud Service)、云存储(Azure Storage)、云缓存(Azure Caching)以及云服务(Cloud Service)中能附加的预启动任务(startup task)和云诊断&监控(Windows Azure Diagnostics)。

本系列实践中,我们开始关注Azure平台中的IaaS(平台即是服务),主要分为以下几个部分:

1. 使用Windows虚拟机搭建多层次网站服务

2. 规划实践Windows Azure虚拟网络及VPN

3. 实现Azure虚拟网络域环境(Active Directory)

 

下面开始第一个实践: 使用Windows虚拟机搭建多层次网站服务

创建含有SQL Server的虚机

1.    打开IE浏览器,并访问Windows Azure主页: https://manage.windowsazure.com/,用你的帐号登录。

2.    在底部的菜单中, 选择 New | Compute | Virtual Machine | From Gallery 开始创建虚机

 

3.    在 选择虚机OS镜像(VM OS Selection 页面, 单击左边菜单中的 ALL并从选项单中选择SQL Server 2008 R2 SP2 Standard操作系统. 单击向右箭头到下一步.

 

4.    在虚机配置页,配置虚机名 (如 "iisvm1") 和以后管理使用的用户名/密码. 密码需要包含3种元素:小写字母,大写字母,数字和特殊符号. 单击向右箭头到下一步..

 

创建虚机 配置

Note: 请选择安全性高的密码供后续虚机管理使用,更多有关密码规则和安全特性,请参考

:https://www.microsoft.com/security/online-privacy/passwords-create.aspx

5.    在 进一步的虚机配置页, 选择创建一个新的云服务(Create a new Cloud Service),设定该虚机的DNS Name(如mydnsname),选择 Region/Affinity Group/Virtual Network(如选择SouthEast Asia数据中心),然后依次选择一个 Storage Account(或使用默认选项Use Automatically Generated Storage Account). 单击向右箭头到下一步..

 

创建虚机 配置

 

6.    在 进一步的虚机配置页, 保持默认选项,然后单击完成按钮开始创建虚机。

 

 

创建虚机 - VM Options

 7.    在 Virtual Machines 部分, 你会看到刚创建的虚机的状态是Starting (provisioning). 稍等一会直到该虚机的状态变为Running,然后在该虚机上完成后续实践步骤。

 

创建虚机

提示 : 虚机的创建过程一般需要3到10分钟完成.

 

加载存储磁盘

1.    在 Virtual Machines 列表中, 选择刚刚创建的SQL Server 虚机.

 

2.    在虚机的状态页(上图),点击底部菜单中的Attach按钮并选择Attach Empty Disk.(此步骤必须等到虚机创建完成之后才能进行,即虚机状态为Running)

 

Attach Empty Disk

3.    在Attach Empty Disk 页面, 设置磁盘Size50 GB,其他项保持默认。点击完成按钮开始创建磁盘.

 

4.    稍等片刻直到磁盘加载完成。重复上述步骤1~3,加载第二个磁盘.

5.    回到Windows Azure管理主页,从虚机列表中选择创建的虚机(iisvm1),并点击进入iisvm1后选择Dashboard 页,在虚机的状态页. 你会看到三个磁盘: 1个OS磁盘和2个数据磁盘.

提示 : 加载磁盘后,需要稍等片刻才能在虚机状态页上看到所有磁盘信息

 

选中并点击创建的虚机

 

选中DASHBORAD页

 

加载的磁盘

6.    现在需要进入虚机中格式化磁盘以供后续使用, 在虚机的状态页底部点击 Connect 开始远程连接到虚机

 

7.    在弹出的提示页中,点击打开,然后输入步骤3中设定的虚机管理员密码,进入虚机桌面.

8.    在虚机中, 打开 Start | All Programs | Administrative Tools | Server Manager.

9.    展开 Storage 节点并选择 Disk Management 选项.

 

磁盘管理

10.  Initialize Disk对话框会弹出. 保持默认值,点击 OK按钮.

11.  右击第一个未分配的空间,选择New Simple Volume.

 

磁盘管理

12.  根据向导页完成后续New Simple Volume Wizard. 加载第一个磁盘.

13.  稍等片刻直到第一个磁盘分配完成. 重复上述装载第二个磁盘.

14.  完成后 Disk Management 视图中将会有新添加的两个磁盘:

配置SQL Server数据库

1.    创建以下文件夹: F:\Data, G:\LogsG:\Backups.

2.    打开 Start | All Programs | Microsoft SQL Server 2008 R2 | SQL Server Management Studio.

3.    直接在默认登陆页点击Connect,用Windows Account 连接SQL Server 2008.

 4.    接下来,重新设定SQL Server中数据和日志的存储位置。右击SQL Server instance然后选择Properties.

 

5.    在property页面的左边栏选择security,选择SQL Server and Windows Authentication mode

 

 

6.    在property页面的左边栏选择 Database Settings.

7.    找到Database default locations部分并更新数据库和日志的存储位置,点击"Ok"保存更改.(注意:选择的存储路径必须有效, SQL不会自动创建文件夹

 

设置 Database Default Locations

8.    更改完成后, 在SQL Server管理页左边栏右击你的SQL Server instance并选择 Restart 重启SQL Server,使得上述设置生效。

9.    新建数据库

 

 

 

10.  新建数据表

CREATE TABLE Persons( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255))

 

11.  添加部分数据到数据表中

insert Persons (Id_P, LastName, FirstName, [Address], City) values (1, 'testor1', 'the', 'Beijing', 'Beijing')

insert Persons (Id_P, LastName, FirstName, [Address], City) values (2, 'testor2', 'the', 'Beijing', 'Beijing')

insert Persons (Id_P, LastName, FirstName, [Address], City) values (3, 'testor3', 'the', 'Shanghai', 'Shanghai')

insert Persons (Id_P, LastName, FirstName, [Address], City) values (4, 'testor4', 'the', 'Shanghai', 'Shanghai')

 

 

检查数据:

 

12.  创建新的登录用户,密码设置为111

 

 

13.  关闭SQL Server Management Studio

配置虚机上的IIS

1.      在虚机中,启动Start | All Programs | Administrative Tools | Server Manager.

2.      在Server Manager页面, 选择 Roles节点.

 

Server Manager

3.      点击 Add Roles 链接.

 

添加 Server Roles

4.      Add Roles Wizard 向导页面将会弹出.

5.      在 Before You Begin 页, 点击 Next.

6.      在选择 Server Roles 页, 选中Application Server 和 Web Server (IIS). 如有提示框弹出,选择Add Required Features,然后点击Next.

 

Add Roles Wizard向导

7.      在 Application Server 页. 点击 Next 到下一步。

8.      在Select Role Services 页, 选择Web Server (IIS) Support 和 .NET Framework 3.5.1.如有提示框弹出,选择Add Required Role Services,然后点击Next.

 

Add Roles Wizard

9.      在Web Server (IIS) 页,点击 Next 到下一步.

10.   在 Select Role Services 页,点击 Next 到下一步

 

Add Roles Wizard

11.   在Confirm Installation Selections 页, 确认之前所选的模块都在安装列表中(.NET Framework 3.5.1 support and IIS), 然后点击install.

 

Add Roles Wizard

提示 : 安装将会在数分钟内完成

 

12.   虚机中IE默认不允许下载,通过以下步骤可以启用下载 Start | All Programs | Administrative Tools | Server Manager

 

 

13.   等待Add Roles任务完成后,安装.net4.0,打开https://go.microsoft.com/fwlink/?linkid=186916,下载并按照向导安装.net4.0

 

 

 

配置虚机服务端口

1.      回到Windows Azure管理主页,从虚机列表中选择前面创建的虚机(iisvm1),并点击进入iisvm1的Dashboard 页,然后点击 Endpoints. 点击 底部的Add .

 

选择主页中的添加服务端口

2.      选择 Add STADNALONE Endpoint,然后单击向右箭头到下一步.

 

添加一个新的服务端口

3.      在Specify endpoint details 页面, 设置端口名为HTTP, 协议为 TCP ,共有端口和私有端口均为 80. 单击完成按钮以创建服务端口. 等待端口创建完成后进行后续步骤.

 

新端口细节

提示 : 新端口将在数分钟内创建完成

部署WebSite应用程序

 

1.      复制本实践课包含的WebSite1文件夹到虚机中,或从以下地址下载

https://zcdnstorage.blob.core.windows.net/container1/Azure_VM_HOL-Windows_1_WebSite1.zip

2.      下载完后,打开虚机IIS管理器(Start | All Programs | Administrative Tools | IIS manager

3.      配置默认website对应的website目录,使其指向WebSite1文件夹

 

4.      配置Application Pools,使其使用.Net4.0

 

 

5.      重启IIS,本地浏览

 

6.      点击Read Data,读取数据库数据

 

7.      访问https://<youdnsname>.cloudapp.net, yourdnsname 为创建虚机是设定的dns名。

8.      也可以通过如下方法新建网站项目,然后完成上述部署

 

 

代码部分:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient;

using System.Data;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        SqlConnection cn = new SqlConnection("server=localhost;database=testdb;user=testlogin;password=111");

 

        SqlCommand cmd = new SqlCommand("select * from Persons", cn);

 

        SqlDataAdapter da = new SqlDataAdapter(cmd);

 

 

        da.InsertCommand = cmd;

 

        DataSet ds = new DataSet();

        da.Fill(ds, "Persons");

 

        GridView1.DataSource = ds;

        GridView1.DataBind();

 

    }

}