目前在IT界,云这个概念的第一意思不再是词典里的解释了。不过它们还是有相同点的——也许确实会酝酿出一块大蛋糕,可也是飘在天上,众神分食之,与我等P民无关。所谓云,不过是网络时代发展到一定阶段的必然产物,而并非划时代的技术质变,so,我一直保持既不排斥亦不主动接触的立场。but,最近我有个个人服务器快到期了,于是也打算尝试一番。
现在比较知名的云服务有很多,国内的首推阿里云,而作为.Neter,Windows Azure也是一种选择。本人同时申请了两者的免费试用体验,对于阿里云,在申请阶段博主被折腾得够呛,后面可能会写一篇吐槽的随笔;相对来说,Windows Azure价格昂贵,不过既然是免费体验(90天),试试亦无妨。
目前Windows Azure在国内由世纪互联运营,比较坑的是很多服务国内还没有开始运营。另外不能使用微软账号登录Windows Azure管理门户,而是使用在注册域名时填写的用户ID。假如您注册的域名是xxxx.partner.onmschina.cn,那么您的登录账号就是“用户ID@xxxx.partner.onmschina.cn”。不出意外的话,申请之后两三天,你就能收到一份告知通过的邮件。
前几天又去Windows Azure中国首页看了下,发现官网已经不再接受新的试用申请,应该说博主搭了一趟末班车,运气!(截止到博主发文,Windows Azure中国官网又推出了所谓1元试用计划,名额为1500人,试用期一个月,且有积分限制)
另:本文只简略涉及博主接触到的功能,且并不保证所有阐述都正确。
登录后,会看到类似下图的页面,顶部为工具栏,左侧显示Windows Azure所提供的所有云服务,右侧面板显示您已在使用的服务。
点击顶部工具栏的下拉按钮,会弹出几个链接,其中“文档”链接到微软总部的微软云官网(不是中国[世纪互联]官网)。左侧菜单的一些概念我接触的并不多或者从没接触过,比如Active Directory,登录进来之后就发现其中已经存在一条目录了,即登录ID。根据网资(网上资料)所说——IT管理员通过 Windows Azure Active Directory,可以轻松管理用户对数百个云 SaaS 应用程序(如 Office 365、Box、GoToMeeting、DropBox、Salesforce.com 等)的访问,具体如单点登录、权限配置等等——so,我觉得这比较适用于企业内部系统,而相关的也有“域”、“命名空间”的概念,可以说,这应该是原来的一套windows服务器Active Directory在云端的重现。
存储
Windows Azure有个所谓的“存储账户”的概念,并提供了三种类型的存储服务——Blob 服务、表服务、队列服务。Blob 存储是一项可存储大量非结构化数据(如文档、图片、流媒体等)的服务;表服务提供类似NoSql方式存储数据;队列存储是一项可存储大量消息的服务,用户可以通过经验证的呼叫,使用 HTTP 或 HTTPS 从世界任何地方访问这些消息。
相对来说,Blob存储是更基础的存储服务,比如虚拟机中的数据磁盘即是Blob存储。因此,为避免出现硬件故障并提高可用性,Windows Azure在同一数据中心的三台计算机上复制每个 blob。写入 blob 时会更新所有三个副本,因此稍后的读取操作不会导致不一致的结果(博主并未找到任何资料涉及到这三个副本的负载平衡说明,因此可认为这里多个副本的存在只关乎可靠性,而非性能)。您还可以指定将 blob 数据复制到位于同一区域中但至少相距 500 英里的另一个 Windows Azure 数据中心。此复制称为“异地复制”,发生在 blob 更新后的几分钟内,可用于灾难恢复。我们还可以通过终结点对Blob数据进行读写操作,这里不再赘述。
对表服务的理解请参看:Windows Azure 表存储:不同于传统数据库,博主表示对文章中的一句话印象深刻:在学习新知识的时候,避免自己被迫转换观念,但却无法真正理解。
队列存储博主暂未研究,按过不表。
虚拟机
简单的说,虚拟机即是远程服务器。在管理门户中新建虚拟机的过程很简单。新建完毕后,点击网页下部工具栏的“连接”按钮,浏览器会自动下载远程连接用到的rdp文件:
下载完毕后,双击打开远程登录框,填入之前新建时设置的用户名和密码即可登录虚拟机(请自动忽略右上角亮点)。
可以看到,虚拟机自带系统磁盘和一个临时磁盘。Azure上的虚拟机上有两种磁盘,一种是存储在Blob存储上的,一种是存储在虚拟机所在物理机磁盘上的。前一种由于使用了Blob存储,其数据会按照Blob的存储策略在本地存3份,并在异地保持一份镜像,其数据的可用性和可靠性都很高,虚拟机通过网络访问这些Blob存储,不依赖于特定一台物理机。后一种依赖于物理机,如果物理机故障或进行维护,这个存储可能会被清空。显然,如果我们使用虚拟机的时候不分清楚磁盘类型,就会导致数据丢失。上图的C盘(系统盘)是Blob盘,D盘是临时盘。
临时盘往往空间比较大,完全不用的话有些可惜。另外,临时盘在本地,存取数据要比Blob快。因此,临时盘适合存放一些临时数据,比如裸日志、中间结果、上传下载的缓存等等。
为了提高运行效率,默认情况下,系统盘开启了读写缓存。
由于开启了磁盘缓存(主要是写入缓存),因此会有写入数据丢失的风险。综上所述,对于需要持久化的数据,比如数据库文件,系统盘和临时盘都不是很好的存放位置(当然你也可以关闭系统盘的写入缓存,不过有些得不偿失了,请看在 Windows Azure 上设置 SQL Server 虚拟机后续步骤一节)。我们可以通过附加一个新的数据磁盘到虚拟机来解决这个问题(当然得禁用写入缓存),附加的新磁盘是Blob盘。附加磁盘的步骤请参看:如何将数据磁盘附加到虚拟机。Now,我们就可以在虚拟机中安装SQL Server,并将数据库文件放到新的数据磁盘上了。如前所述,数据库似乎存储在运行服务器的 VM 的本地磁盘上。不过,事实上,其中每个磁盘都写入到 Windows Azure blob。与任何 Windows Azure blob 一样,它所包含的数据会在数据中心中复制三份。还可以使用 SQL Server 数据库镜像等方式来提高可靠性。
在新建虚拟机的过程中,会看到有个“可用性集”的选项,可参看:管理虚拟机的可用性。可结合使用可用性集和负载平衡终结点,以确保应用程序始终可用并且高效运行。有关使用负载平衡终结点的更多信息,请参见对虚拟机进行负载平衡。
SQL Database
除了在虚拟机中安装SQL Server外,。Windows Azure 提供了称为 SQL Database 的 PaaS 技术,该技术允许您对关系数据进行单独管理。
新建SQL Database时会让你选择在已有服务器上新建库还是新建一个服务器,下图所示为部署在两台服务器上的两个SQL Database。
SQL Database 不为每个客户提供自己的 SQL Server 物理实例。相反,它为每个客户提供多租户服务和逻辑 SQL Database 服务器。所有客户共享该服务提供的计算和存储容量。与 Blob 存储一样,SQL Database 中的所有数据都存储在 Windows Azure 数据中心的三台独立计算机上,从而为您的数据库提供内置的高可用性 (HA)。虽然对应用程序来说,SQL Database 非常类似于 SQL Server,但它的行为与运行在物理计算机或虚拟机上的 DBMS 不完全相同。因为它运行在共享硬件上,所以其性能将随其所有客户置于该硬件上的负载而变。这意味着 SQL Database 中存储过程等任务的性能可能每天都在变化。
在使用本机客户端访问云端数据库之前,需要配置服务器,允许访问它的IP地址(配置页面会自动获取你的公网地址,你也可以添加其它允许访问的IP[范围]);由于网站也打算放在云端,所以设置其它云服务也能访问该服务器。这一步骤在服务器的配置选项卡下进行。
Now, 现在就可以在本机使用客户端访问云端数据库了,以上图test数据库为例,链接地址为:rmvatzpfci.database.chinacloudapi.cn,1433。连上之后,就可以开始部署了,比如迁移数据库,如下图:
这同以往的数据库部署并无不同,博主非常顺利地将本地数据库迁移到云数据库。然而在使用时发现,select into 到临时表的方法将出现异常——“Statement 'SELECT INTO' is not supported in this version of SQL Server.”网上资料( SELECT INTO With SQL Azure)说SQL Azure要求所有表都要有聚合索引(经验证并不需要),而这对于select into 创造的临时表来说自然是强人所难。不论如何,我们可以使用先create临时表(不需要聚合索引),再Insert INTO 的方式使用临时表。
关于 SQL Database 和虚拟机中的 SQL Server ,博主查阅资料后也没有发现很大不同,也许要深入使用后才能真正理解并区别开来。
网站
关于如何在Azure管理门户中新建一个默认空站点不再赘述,在这步完成之后,就可以使用VS将网站直接发布到云端了。步骤如下:
1、在管理门户中点击一条网站记录进入网站管理页面,then点击“下载发布文件”,将会下载一个PublishSettings类型的文件:
2、打开vs(博主用的是2012),右键项目——发布——配置,点导入,选择之前下载的配置文件:
3、确定后,下一步为连接到服务器的必要的验证信息:
4、下一步,在“设置”选项卡将看到应用程序使用到的数据库。该步骤会自动检测EF context和web.config中的数据库连接字符串的key值,可以按需设置连接字符串(在本例中,连接数据库即为前述云端SQL Database),也可以发布成功后在管理门户中手动添加:
5、下一步,选择需发布的文件,点击发布,完成。
我们还可以使用ftp发布网站和管理网站文件,ftp地址在网站管理的仪表盘选项卡下:
关于网站是否有负载平衡的支持,官方说“内置自动缩放和负载平衡”,但资料较少。
[更多]参考资料:
部分云端存储类型介绍和比较:数据管理和业务分析
Windows Azure Virtual Machines设置IIS 7.5 FTP