• 由世纪互联运营的微软Windows Azure公有云服务正式在中国大陆地区投入商业运营(2014年3月26日)

    昨天,在经历了近1年的公众预览阶段(Preview)后,由世纪互联运营的微软Windows Azure公有云服务正式在中国大陆地区投入商业运营。

    可见最新发布的公告:http://www.windowsazure.cn/zh-cn/what-is-new/

    而在此前,1月16日,Windows Azure 支持也已经转入正式阶段:http://www.windowsazure.cn/zh-cn/support/plans/

    此次一个重要的发布就是:价格(见:http://www.windowsazure.cn/zh-cn/pricing/overview/ )。

    可以看到在报价、使用量计价标准等方面,和全球其他Windows Azure中心还是有一些差别的。例如:对于数据传输(Data Transfer),中国大陆地区是按照数据传入和传出 - 不少于20TB的免费数据流量。之后数据传入和传出每 GB为0.60元(人民币)。而其他地区(目前区分地区,Zone1:北美及欧洲;和Zone2:亚洲及日本),是按照阶梯方式收费,其中每月头5GB是免费的。见:http://www.windowsazure.com/en-us/pricing/details/data-transfers/。中国大陆地区传入和传出都是要收费的,而其他地区,仅传出收费。这一点非常重要,对于大家设计技术架构、合理规划数据传输及服务提供,都有非常大的差别。

    此外,对于虚拟机,此次也是和其他地区接轨,采用了按照小时计费的方式。

    而商务流程、支付方式等,则会更加具有中国特色,也将包括很多中国用户熟悉的在线支付方式。

  • 通过软件保障(Software Assurance)实现SQL Server在Windows Azure虚拟机(VM)的许可移动性(License Mobility)

    最近,我在微软虚拟学院(Microsoft Virtual Academy)上讲了一门课:在 Windows Azure VM 上实现 SQL Server 高可用性及容灾设计。

    http://staging.microsoftvirtualacademy.com/training-courses/835#?fbid=YLWfBUsNgJ8

    课程主要介绍了如何基于Windows Azure 虚拟机部署SQL Server数据库服务器,这种方式将可以充分利用微软数据中心所提供的基础设施服务,拥有对Windows Azure上虚拟机、SQL Server及数据库的完全控制。

    SQL Server高可用性及容灾解决方案可以在Windows Azure 虚拟机上运用,并可在混合云环境中部署。

    Windows Azure 虚拟机部署SQL Server数据库,可以帮助数据库管理员降低高可用性及容灾的成本,并提升业务连续性。

    结合SQL Server 2012和2014的AlwaysOn技术,基于Windows Server的故障修复Failover Cluster技术(WSFC),保证1台为主服务器(Primary Server),在主服务不能服务的时候,其他辅助服务器(Secondary Server)中会有一台承担起主服务器角色。主服务器和辅助服务器之间可以采用同步或者异步方式同步。

    这一模式除了可以提供高可用性、容灾之外,还有一个更大的益处在于除了主服务器能同时读/写操作,辅助服务器可以提供读操作,而对于大量的查询操作,及报表、商业智能(BI)等应用都主要依赖对数据的读取,这一模式可以提高整体的工作负荷(workload)。

    具体部署图如下:

    image

    值得一提的是SQL Server 2012企业版可以支持1个主服务器+4个辅助服务器的部署,而SQL Server 2014则可以1个主服务器+8个辅助服务器的部署,能力得到更大的提升。

    在这样的部署中,一个需要注意的问题就是在Windows Azure虚拟机(VM)上部署SQL Server的许可问题。其实,对于SQL Server在虚拟机部署的情形,将涉及许可移动性(License Mobility)问题。

    对于SQL Server的许可,可以参考:http://www.microsoft.com/licensing/about-licensing/sql2012.aspx

    对于许可移动性(License Mobility),可以访问:http://www.microsoft.com/licensing/software-assurance/faq.aspx#expand-content-4

    具体说来,许可移动性可以实现服务器在自有数据中心、云(Windows Azure等)虚拟环境的部署。这一点,对于用户来讲,提供了更强的支持,可以实现部署SQL Server服务器的虚拟机,在自有数据中心和公有云(Windows Azure)之间的灵活移动,从而实现更灵活的混合云(Hybrid Cloud)部署模式。

    此外,实现故障转移群集的场景,也可以通过许可移动性(License Mobility)来实现。被动 SQL Server 可通过主动服务器的许可获得使用权。

    如下图:

    clip_image002

  • 为Windows Azure 虚拟机(VM)设置静态内部IP(Static Internal IP address, DIP)

    在Windows Azure中,为虚拟机同时提供两种IP:对外公开的虚拟IP,及对内使用的内部IP(Internal IP address, DIP)。

    这两个IP都可以在Windows Azure管理门户(Management Portal)中仪表盘(Dashboard)上看到,如下图:

    clip_image001

    在Windows Azure一个订阅中,虚拟机之间可以通过VIP来互相通讯,这和外部通过internet连接到该虚拟机是一样的。

    目前,VIP和DIP的一个主要区别就在于生命期及IP的稳定性。其中,VIP相对稳定,只有虚拟机VM保持活跃状态(Active),或所在同一云服务(Cloud Service)中有至少1台VM处在活跃状态,VIP会保留下来。而与VIP不同的是,在虚拟机停止(后台将其释放资源)后,再重启的虚拟机将重新获得一个随机的可用IP地址。此外,虚拟机实例因为其他某种原因,例如机房中机柜维护等,在Windows Azure中由Fabric Controller搬到其他机柜的时候,都有可能造成DIP发生变化。

    另外,当一个虚拟机通过VIP访问同一个订阅中其他虚拟机的时候,也要通过Windows Azure Load Balancer (LB);而虚拟机之间通过DIP来互联,则避免了通过LB来访问。由此,一些用户希望通过使用DIP方式来访问,以便相较于VIP,获得更少的网络延迟,例如大约0.5ms。

    对于希望保持虚拟机DIP稳定的IT人士/开发者,这是一个需要面对的问题。解决这一问题有不同的途径。

    最新的PowerShell(版本号:PowerShell cmdlets for Windows Azure version 0.7.3)命令增加了四个命令来解决这一问题:

    ◾Get-AzureStaticVNetIP

    ◾Set-AzureStaticVNetIP

    ◾Remove-AzureStaticVNetIP

    ◾Test-AzureStaticVNetIP

    更多信息,可访问:https://github.com/WindowsAzure/azure-sdk-tools/releases/tag/v0.7.3-February2014

    具体步骤是:

    ◾通过执行Test-AzureStaticVNetIP命令,确定所申请的IP是可用的(没有与其他VM冲突)

    ◾通过执行Set-AzureStaticVNetIP命令,指定IP,并可配合创建虚拟机命令(例如New-AzureVM)来创建新的、拥有该IP的虚拟机;也可以通过Update-AzureVM等命令,来为一个现有的VM指定新的IP(该IP将在虚拟机重启后生效)

    具体可参考:http://msdn.microsoft.com/en-us/library/windowsazure/dn630228.aspx

    需要额外说明的是,目前还不能通过管理门户来实现,而只能通过PowerShell脚本来实现。

    其实,用户还可以通过自己的域控制器(Domain Controller,DC),来为虚拟网络里的虚拟机来提供稳定的内部IP。如下图:

    clip_image003

    而为了避免单个域控制器虚拟机实例带来的风险,还可以在虚拟网络中额外增加一个域控制器,从而确保内部IP的稳定提供。

    可以参考:Install a Replica Active Directory Domain Controller in Windows Azure Virtual Networks

    http://www.windowsazure.com/en-us/documentation/articles/virtual-networks-install-replica-active-directory-domain-controller/

  • Windows Azure 虚拟机(VM)尺寸选择及一些相关技术规格(Specification)的差异

    在Windows Azure上创建的虚拟机(VM),一个需要关键的参数就是虚拟机的尺寸。

    目前,Windows Azure虚拟机尺寸的列表请访问:

    Virtual Machine and Cloud Service Sizes for Windows Azure

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

    其中,目前A8、A9还不针对虚拟机来提供,只用于云服务(Cloud Service)里。

    针对不同的虚拟机尺寸,除了CPU核数(Cores)、内存(Memory),还有一些技术规格的差异。其中比较重要的包括:

    . 数据盘

    不同尺寸的虚拟机可附加的数据盘个数不同,其中最多可以附加16块盘,每块最大1TB,即总共16TB。

    与此相关,不同配置的数据盘,可以满足不同的IOPS需求。当然,不同的磁盘读写模式及数据负载(Workload),实测的的IOPS可能也会不同。

    以单块盘IOPS为500来推算,最多16块数据盘,最大IOPS可以达到16 * 500 = 9,000。

    此外,还可以在Windows Azure上的Windows Server 虚拟机(VM)中灵活配置数据盘及磁盘阵列(RAID),具体请见:http://blogs.technet.com/b/nevin_dongs_blog/archive/2014/03/12/windows-azure-windows-server-vm-raid.aspx

    另:如何在Windows Azure Linux虚拟机(VM)上利用多数据磁盘(Data Disk)部署RAID,具体请见:http://blogs.technet.com/b/nevin_dongs_blog/archive/2014/03/12/windows-azure-linux-vm-data-disk-raid.aspx

    . 临时盘

    临时盘提供的是本虚拟机在机房里机柜的物理机器的本地存储,在计划内(如机柜、物理机等维护)或计划外(电源/网络故障、虚拟机失去响应)等情形时,Windows Azure OS会将虚拟机挪到别的地方,而这时临时盘的内容将丢失。

    临时盘访问和存取的速度都很快。不同尺寸的虚拟机临时盘大小不一样。目前最大尺寸的虚拟机的临时盘为605GB。

    . 网络带宽

    虽然目前在官网上没有见到不同尺寸的虚拟机的网络带宽的规格,但实测会发现不同尺寸的虚拟机的bandwidth是不同的。

    一个可以参考的外部网站可见:http://windowsazureguide.net/2014/02/13/windows-azure-virtual-machines-sizes/

    image

    可以看到,随着虚拟机的尺寸的scale up,bandwidth也是倍增的。考虑到虚拟机网络带宽在物理环境的实现,虚拟机之间互联的带宽应根据实测结果来判断。

  • 如何在Windows Azure Linux虚拟机(VM)上利用多数据磁盘(Data Disk)部署RAID

    稍前曾探讨“在Windows Azure上的Windows Server 虚拟机(VM)中灵活配置数据盘及RAID”,那么,对于在Windows Azure上创建的 Linux虚拟机(VM),如何部署RAID?

    首先,部署RAID的想法,对于一些LAMP的IaaS用户,是一个具有价值和吸引力的想法,例如,在Windows Azure上创建的 Linux VM,在VM上部署MySQL等服务,同时希望能够获得性能更高的磁盘读/写访问,得到更好的数据安全、支持更多的并发访问等。

    Windows Azure IaaS在实现和运营机制上,实际上为虚拟机用户提供了很多保障,例如数据盘(Data Disk)都是存储在Windows Azure Blob Storage上,而Windows Azure Storage提供了多份备份,确保了更好的数据安全备份;如果再加上Windows Azure Storage账户可选的地域冗余复制(Geo-Replication)机制,在跨地域、跨Windows Azure 数据中心(Data Center, DC)容灾方面,提供了更高的数据安全。

    当然,也可以基于Windows Azure VM,结合RAID技术,提供更多的技术选择。

    对于RAID的不同等级,可以参考:Standard RAID levels

    对于Windows Azure上的 Linux虚拟机,可以采用以下的步骤,来创建RAID:

    1. 在一个虚拟机上附加多个数据盘。

    不同尺寸的虚拟机可以附加的数据盘的数量也不一样:其中8核的XL和A7最多可以增加16块1T的数据盘,即每个虚拟机最多可提供16TB。

    具体请参考:Virtual Machine and Cloud Service Sizes for Windows Azure

    这一工作可以在Windows Azure管理门户 (Management Portal)上来完成,也可以用PowerShell脚本等方式来添加。

    clip_image001

    需要注意的是,对于数据磁盘,主机缓存默认首选项为“无”,这样对于性能等角度而言更为有利。

    2. 在Linux虚拟机中,利用root权限,执行下面的创建RAID、文件系统及磁盘安装命令:

    mdadm --create /dev/md0 --level=0 --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf

    mkfs.ext3 /dev/md0

    mount /dev/md0 /raid0

    例如,利用4块数据磁盘,部署RAID-0。

    不同的RAID等级,可以满足用户针对磁盘读/写性能、数据校验等方面的要求。