• 云杂谈:一个比喻(Analogy),让你更好地理解什么是云

    自云计算概念提出以来,大大小小的场合大家谈论云计算,都希望用一个贴切的比喻,让大家更好地了解什么是“云”。而最常用的,往往是“像使用水电一样使用IT基础设施”,形象一点说,就是一打开水龙头、一打开电门,就可以使用这些基础设施所带来的便利。

    在前段时间举办的微软Global Windows Azure BOOTCAMP(云体验营)-北京站的活动中,我做个一个关于Windows Azure概述及IaaS(基础设施即服务)的专题演讲,开场分享了一个观点,通过一个与生活密切相关的比喻,来更好地理解什么是云。

    关于Global Windows Azure BOOTCAMP活动信息详见:

    http://msdn.microsoft.com/zh-cn/chinaazurecamp

    http://globalwindowsazure.azurewebsites.net/

    对于每个普通人,与生活关系最密切的无外乎:衣、食、住、行。

    住,特别是建筑设计,被IT界所引用,特别是在架构(Architecture)设计领域里被广泛引用、参考,其中最著名的当属《建筑的永恒之道》(http://www.amazon.cn/%E5%BB%BA%E7%AD%91%E7%9A%84%E6%B0%B8%E6%81%92%E4%B9%8B%E9%81%93-%E4%BA%9A%E5%8E%86%E5%B1%B1%E5%A4%A7/dp/B0011497KI)及《设计模式语言》(http://www.amazon.cn/%E5%BB%BA%E7%AD%91%E6%A8%A1%E5%BC%8F%E8%AF%AD%E8%A8%80-%E4%BA%9A%E5%8E%86%E5%B1%B1%E5%A4%A7%E7%AD%89/dp/B002VUBI1C/ref=pd_sim_b_1/480-1009409-3177424),这两本书,被后来的软件架构(Software Architecture)和设计模式(Design Pattern)专业人士奉为经典参考书。

    而云计算,“行”则是一个非常好的参考。所谓“行”,除了最早人徒步方式,更多的则是依靠交通工具及设施;而现代生活中,交通设施则成了必不可少的生活一部分。

    让我们将“交通设施”和“云设施”做个有趣的对比。

     

    “云摩托”

    clip_image002

    “摩托”这种方式,总拥有成本相对低,出行便利,是个人代步的较理想选择;但普通摩托相对性能较低,载客有限,舒适度也较差。

    [云对比]“云摩托”很让人联想到个人PC,满足个人计算需要。在“云计算”日益发展的今天,很多开发者和IT人员所使用,已经不是常规意义上的PC,而更可能是一个虚拟机。不论怎样,满足个人计算需要就好。

    “云轿车”

    clip_image004

    “私家车”这种交通工具,总拥有成本相对高一点,出行便利,是个人及家庭交通、旅行的较理想选择,相比摩托而言性能更好,载客量也大一些,舒适度较好。当然,既然是私家车,车主就要为车辆所有的成本、费用负责,包括车辆的折旧费用等。

    [云对比]“云轿车”容易让人联想到机房(DC)或者私有云(Private Cloud),计算/存储量更大,满足一定数量旅客同时旅行的需要。如果资金充裕,可以买更好的配置来搭建DC,例如“云霸道”。

    “云泥头车”

    clip_image006

    “大货”这种交通工具,“霸气”,虽然外表让人侧目,但马力强劲,载货量巨大(现实生活中更是常见超载,多拉快跑)。在堵车日益成为交通生活一部分的时候,坐在“私家车”里,相信很多司机脑海里浮现过这样的念头,开上“泥头车”,一路冲杀出去…

    [云对比]“云泥头车”很容易让人想到IT投资日益膨胀的机房(DC)或者私有云(Private Cloud)建设,虽然日常的计算需要(如日常的上班交通出行)并不需要自己拥有如此巨大的交通工具,但现实中很多机房和私有云正在或已经成为“泥头车”。

    “云巴士”

    clip_image008

    “巴士”是典型的公共交通工具,由公共组织来运营,乘客只需要购买车票,就可以满足自己上班、旅行的需要。因为要与其他乘客共同分享,所以需要忍耐空间、速度(中间停靠站等)等限制。当然,因为车辆不归乘客所有,所以不必支付数额较大的拥有成本,不必多虑车辆的折旧。在“绿色出行”成为广为提倡的出行方式的时候,“巴士”显然更加“低碳”。

    [云对比]“云巴士”应该算是公有云(Public Cloud)的一种吧,“按使用付费(Pay-as-you-go)”,再贴切不过了。如果说到“低碳”,评价公有云DC的一个指标就是PUE(Power usage effectiveness),具体可以参考http://en.wikipedia.org/wiki/Power_usage_effectiveness

    “云出租”

    clip_image010

    “的士”同样是常见的公共交通工具,往往由第三方出租公司来运营(当然有时候也有个体经营者)。与“出租”概念相近的,应该是在一些发达国家(如美国)非常常见的“租车”。不管是“的士”这种提供司机的车辆租赁,还是“租车”这种自驾驶车辆租赁,乘客同样只需要支付租赁费用,而不需要因为出行而拥有车辆本身。但相比“巴士”,在个人空间、速度等方面要更胜一筹;但成本而言,“的士”或“租车”显然费用更高一些。

    [云对比]“云出租”同样应该算是公有云(Public Cloud)的一种,“按使用付费(Pay-as-you-go)”,而且因为价格更高,所以服务等级(SLA)也更高。对于很多云计算提供商,会考虑为计算/存储/网络流量等方面要求更高的用户,特别是企业用户,提供更好的保障,当然前提是这些用户愿意为这些付费。而正如“的士”包车、“租车”按周/按月更便宜一样,公有云提供商对于月租、预付费等用户更容易提供更有吸引力的价格政策。

    “云飞机”

    clip_image012

    “飞机”是典型的中高端公共交通工具,一般由第三方航空公司来运营(当然有个别富豪拥有私人飞机来满足出行及身份需要)。“飞机”对于中长距离,特别是跨洲、环球旅行显然是主要的交通工具。当然,与“飞机”类似的还有“高铁”、“游轮”。这些一个典型的特点就是总拥有成本巨大,运营成本、专业性更高,当然这些交通工具也满足了高速、安全、舒适等多方面的需要。

    [云对比]“云飞机”对于私有云的场景显然是一个极端例子,当一个组织自身拥有多个“飞机”级别的DC来满足自身的需要的时候,我们很好奇这样的公司是否会自己成为“航空公司”。在公有云领域,这是一种很典型的场景,“按使用付费(Pay-as-you-go)”,为不同的服务等级(SLA)提供不同的舱位(商务、头等、经济等)。正如世界航空公司之间竞争非常激烈一样,全球性公有云运营商之间的竞争将会更加激烈。

     

    读完上面这些文字,不知道大家是否对云计算有了新的体会?

    Global Windows Azure BOOTCAMP活动会务组把我的现场发言录像上传到了网站,欢迎访问、欢迎批评指正:

    http://v.youku.com/v_show/id_XNTYwODI1MTk2.html

  • 使用PowerShell创建虚拟机必须提供新参数:-AdminUserName

     

    对于IT 专业人员和开发者,可以采用多种方式创建和管理虚拟机(VM),其中主要包括:使用管理门户(Management Portal)、通过PowerShell脚本及通过自己编写程序使用REST API方式等。

    对于通过PowerShell脚本,可以采用自动化的方式,大大方便了IT人员的工作量,同时也便于灵活配置及脚本代码复用。

    最近在编写一段自动创建Windows Server虚拟机的代码的时候,发现无法运行下去,具体错误界面如下图:

    clip_image001

    系统提示:“Cannot process command because of one or more missing mandatory parameter”。

    查找MSDN看命令格式:New-AzureQuickVM和New-AzureVM:

    http://msdn.microsoft.com/en-us/library/windowsazure/jj152839.aspx

    Parameter Set: Windows

    New-AzureQuickVM -ImageName <String> -Password <String> -ServiceName <String> -Windows [-AffinityGroup <String> ] [-AvailabilitySetName <String> ] [-Certificates <CertificateSettingList> ] [-DnsSettings <DnsServer[]> ] [-HostCaching <String> ] [-InstanceSize <String> ] [-Location <String> ] [-MediaLocation <String> ] [-Name <String> ] [-SubnetNames <String[]> ] [-VNetName <String> ] [ <CommonParameters>]

    http://msdn.microsoft.com/en-us/library/windowsazure/jj152815.aspx

    Parameter Set: ExistingService
    New-AzureVM -ServiceName <String> -VMs <PersistentVM[]> [-DeploymentLabel <String> ] [-DeploymentName <String> ] [-DnsSettings <DnsServer[]> ] [-VNetName <String> ] [ <CommonParameters>]
     
    Parameter Set: CreateService
    New-AzureVM -ServiceName <String> -VMs <PersistentVM[]> [-AffinityGroup <String> ] [-DeploymentLabel <String> ] [-DeploymentName <String> ] [-DnsSettings <DnsServer[]> ] [-Location <String> ] [-ServiceDescription <String> ] [-ServiceLabel <String> ] [-VNetName <String> ] [ <CommonParameters>]
     
    clip_image003

    好像没有什么不妥;经过进一步排查和搜索,发现原因出在了使用PowerShell创建虚拟机必须提供新参数:-AdminUserName。

    MSDN上述两篇文章的内容尚未更新。

    具体请见:https://github.com/WindowsAzure/azure-sdk-tools/blob/master/ChangeLog.txt

    “BREAKING CHANGE: New-AzureVM and New-AzureQuickVM now require an –AdminUserName parameter when creating Windows based VMs.”

    同时需要注意的是,在提供-AdminUserName的时候,不能选择”Administrator”或者”Admin”这样的用户名,从安全性角度而言,一些常用的管理员名称、密码,也不建议使用,以避免被恶意攻击所利用。

    虽然是一个小的改变,但值得赞同,毕竟安全性是个非常关键的问题。

  • 自己动手打通Windows Store App, Windows Azure Mobile Service和Live Connect services

     

    在开发Windows 8 Store App中,最简便快捷地实现与Windows Azure Mobile Service的移动应用,就是利用Windows Azure Management Portal(管理门户)所提供的初始项目下载,然后根据自己需要增加定制代码。

    为了更好地管理用户和增加安全性,往往增加身份验证功能,例如与Microsoft Live Connect Services连接,实现对LiveID等的验证。当然,也可以集成第三方(例如Facebook, Twitter, Google等)的身份验证服务。

    具体可见:http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-dotnet/

    在实际开发中,更多情况是在一个现有的项目基础上进行扩展,增加对Windows Azure Mobile Service的支持。但在具体开放身份验证环节,即Windows Azure Mobile Service和Live Connect services的联通环节,有时候容易出现问题。

    例如,有的时候,虽然可以弹出身份验证对话框,但却一直出现验证失败的信息提示。有时候会觉得是否是Windows Live出了问题,但经过深入分析会发现,实际上问题出现在自己这里,而且涉及到Store App、Windows Azure Mobile Service、Live Connect services和Visual Studio开发项目环境配置等各个相关环节。

    在Visual Studio 2012调试环境输出窗口中,有时候会发现以下类似的信息:“{YOUR JAVASCRIPT FUNCTION NAME}: The authentication process failed with error: The application requesting authentication tokens is either disabled or incorrectly configured.”就是一个非常典型的例子。

    经过归纳和整理,下面列出一些如何自己动手打通Windows Azure Mobile Service和Live Connect services的相对完整的攻略。

    . Windows Store App开发中心的相关配置

    将自己的应用在Windows Store App开发中心(https://appdev.microsoft.com/StorePortals/en-US/Home/Index)进行注册和配置。其中在开发和测试阶段至少(和重点)要配置好App Name及Advanced Features。

    clip_image002

    其中,在Advanced Features中要配置好“Push notifications and Live Connect services info”,这个是实现LiveID身份验证所必需的;如果后续使用Windows Push Notification service (WNS)进行提醒服务,这也是必需的。

    clip_image004

    [关键操作]需要将下面的IDENTITY NAME和PUBLISHER信息记录下来:

    clip_image006

    [关键操作]这个信息需要将Visual Studio项目中package.appxmanifest文件的<Identity Name="{YOUR APP IDENTITY NAME}" Version="1.0.0.0" Publisher="YOUR APP PUBLISHER NAME" />进行替换。

    . Live Connect开发中心的相关配置

    实际上,上面配置“Push notifications and Live Connect services info”的页面已经转到了Live Connect开发中心(https://manage.dev.live.com/)。

    在之前页面中,通过点击”Authenticating your service”进入到下面的页面:

    clip_image008

    [关键操作]在这里,需要记录Package Security Identifier (SID)和Client Secret的值。

    在Live Connect开发中心仪表盘(https://manage.dev.live.com/?biciid=LcDevPortal),选择要配置的应用名称,然后再设置(Settings)菜单下的API Settings中,首先验证Package Security Identifier (SID)和Client Secret的值和之前记录的一致性,然后将所建立的Windows Azure Mobile Service URL(例如:https://{YOUR MOBILE SERVICE NAME}.azure-mobile.net/)填写到Redirect domain项目中。同时,可以看到已经生成的Package SID。

    [关键操作]在这里,需要记录Redirect domain和Package SID的值。

    clip_image010

    . Windows Azure Management Portal(管理门户)的相关配置

    进入所创建的Mobile Service应用中,进入IDENTITY(身份)页面:

    clip_image012

    [关键操作]在这里,填写之前记录的Client ID和Client Secret的值。

    如果要使用提醒功能,可以再进入PUSH(推送)页面:

    clip_image014

    [关键操作]在这里,填写之前记录的Client Secret和Package Security Identifier (SID)的值。

    在Mobile Service管理门户网页的下方,点击MANAGE KEYS,进入Manage Access Keys对话框:

    clip_image016

    [关键操作]在这里,记录APPLICATION KEY的值。

    . Visual Studio开发项目的相关配置

    在项目中,需要在Reference中增加Live SDK;如果之前没有安装的话,请先下载(http://msdn.microsoft.com/en-us/live/ff621310.aspx)并安装。

    clip_image018

    [关键操作]在Reference中增加对Live SDK的引用,会自动添加相关文件,例如针对JavaScript,增加wl.js。在相关登录处理页面的程序中,在wl.init过程中,设置redirect url,替换为之前记录的Redirect domain的值。

    [关键操作]在相关登录处理页面的程序中,实例化Windows Azure Mobile Service客户端,增加下面的代码,其中,分别替换参数为之前记录的Windows Azure Mobile Service URL和APPLICATION KEY的值:

    var client = new WindowsAzure.MobileServiceClient(

    " https://{YOUR MOBILE SERVICE NAME}.azure-mobile.net/",

    "{YOUR MOBILE SERVICE APPLICATION KEY}"

    );

    现在就可以按照自己的要求,开发相关代码,实现对LiveID等的验证。

    大功告成了吗?且慢,好像还不行。追踪运行时错误信息,发现“The app couldn’t resolve ms-appx://{YOUR IDENTITY NAME}/undefined because of this error: RESOURCE_NOT_FOUND.”

    看来还忘了什么步骤。不错,在Visual Studio的Solution Explorer中,将应用的项目与Store(商店)关联。

    [关键操作]将应用的项目与Store(商店)关联。如下图:

    clip_image020

    运行一下,OK!

  • Windows Azure培训包(WATK) 2013年4月版已经新鲜出炉

     

    五一国际劳动节回来,发现Windows Azure Training Kit最新的四月版已经发布了:

    http://www.microsoft.com/en-us/download/details.aspx?id=8396

    当然,值得期待的是什么时候可以拿到相关的中文简体版资源。

    这个版本是在Windows Azure 虚拟机 (Virtual Machines) 和虚拟网络(Virtual Network) GA之后发布的,当然包括了针对IT专业人士(IT Pro)的很多内容更新。

    在目录中,可以看到针对ITPro Camp的内容已经有了很多丰富,对于ITPro而言,这些活动值得期待。

    clip_image002

    另外一个值得关注的是HDInsight,如下图所示:

    clip_image004

    Windows Azure HDInsight为快速、便捷地开发大数据应用提供了基于Apache Hadoop的封装服务。

    实际上,还有一些新东东值得关注和尝试:

    . WebMatrix 3.0 http://www.microsoft.com/web/webmatrix/

    这是开发基于Windows Azure WebSite, 利用ASP.net, PHP, Node.js, HTML5等语言的开发利器。

    . Windows Azure on GitHub https://github.com/WindowsAzure

    这里提供了大量的开源资源,也充分体现了Windows Azure的开放性特质

    . Windows Azure Training Kit on GitHub http://windowsazure-trainingkit.github.io/

    实际上,WATK本身也是开源的,大家可以把自己的内容贡献和分享给大家;当然,也可以对WATK内容提供宝贵的反馈意见