本篇文章作为《Azure Stack技术深入浅出系列》的第二篇,将描述我们目前在构建基于Azure Stack混合云业务解决方案方面所面临的网络连通困难,以及相关技术人员为解决这一问题所做出的努力及技术探索。

1. ExpressRouter与Site2Site VPN

1.1微软ExpressRoute服务和Site2Site VPN服务介绍

Express Route(ER): Azure ExpressRoute 可让你通过连接服务提供商(这里是上海电信)扩展到 Azure 云。使用 ER 可与Azure云服务建立连接。ER 连接不通过公共Internet 。与通过 Internet 的典型连接相比,ExpressRoute连接提供更高的可靠性、更快的速度、更低的延迟和更高的安全性。

详细的ER的介绍可以参考微软官网文档

S2S VPN: 是一种站点到站点通过VPN技术互联的azure 服务。详细介绍可以参考 微软官网文档](https://www.azure.cn/documentation/articles/vpn-gateway-howto-site-to-site-resource-manager-portal/

也可参考前面写过一篇关于ER的博文

1.2 ER+S2S VPN配置设计

1.2.1 站点到站点VPN做为ExpressRoute的故障转移路径

可以将站点到站点 VPN 连接配置为 ExpressRoute 的备份。这仅适用于链接到 Azure 专用对等路径的虚拟网络。对于可通过 Azure 公共线路访问的服务,没有基于 VPN 的故障转移解决方案。ExpressRoute 线路始终是主链接。仅当 ExpressRoute 线路失败时,数据才会流经站点到站点 VPN 路径,参见下图。

1.2.2 站点到站点VPN作为ExpressRoute的补充

可以对网络进行配置,使得部分站点通过站点到站点 VPN 直接连接到 Azure,部分站点通过 ExpressRoute 进行连接。参见下图。

1.3 ER+S2S VPN混合云连通实验

公司的ER+S2S VPN混合云实验环境打通了公司的Azure公有云订阅和位于紫竹微软的私有云环境,详细的架构图及网络规划如下图。(这里非常感谢微软ER团队的支持)

Azure公有云和私有云环境通过ExpressRoute和站点到站点 VPN方式连通,这种连通方式可以将站点到站点 VPN 配置为 ExressRoute 的安全故障转移路径,实现高可用。或者使用站点到站点 VPN 连接到不是通过 ExpressRoute 进行连接的站点,承载一些对网络延时不敏感的流量

5.1 网络延迟测试

  1. 下图是从本机(研究院内网的一台PC)ping到研究院内网的wiki服务器,看图延时基本在10ms以内,有一定的抖动。

2.下图是从本机(研究院内网的一台PC)ping到宜山机房的一台服务器,研究院内网和宜山路机房通过一条100M的专线相连接,看图延时基本在10-30ms左右,抖动较大。

3.下图是从本机(公司内网的一台PC)ping到宝山机房的一台服务器的外网地址,公司内网和宝山机房只能通过外网(WAN)访问,看图延时基本在10-30ms左右,抖动较大。图2是从本机(公司内网的一台PC)ping到百度服务器,延时基本在30ms左右。

4.最后是从我们Azure共有云的一台电脑到微软私有云环境的网关地址,两者通过Azure的ExpressRoute相连,可以发现每个包的反馈时间非常稳定在4ms左右,通过对比,通过Azure ExpressRoute的混合云方案基本和纯内网环境的网络延时相当。

实验结论:通过Azure ExpressRoute相连的网络延时非常小,网络抖动也很小,网络的QOS做的非常好,甚至优于我们研究院的内网环境。

5.2 网络带宽测试

从Azure共有云账户里的虚机里通过ftp传文件到微软测试机器中的传输速度如下:

账户里的虚机中的传输速度如下

对比S2S VPN传输速度:

  1. ER的物理线路的带宽为10M,测试下来FTP传输数据的速度基本在1.2M/s这个级别,带宽稳定有保障,而S2S VPN更多的需要看当前网络环境的情况,在测试过程中还出现了多次FTP传输断掉。
  2. 通过实验我们发现ER线路的带宽决定于物理线路的带宽,由于是专线,网络带宽稳定,延时也非常小。而S2SVPN的方案更多的取决于当前网路状况,由于路由到公网,导致网络带宽、延时没有办法保证。
  3. 结合两种连通方案的特点,将站点到站点VPN做为ExpressRoute的故障转移路径是一个非常好的配置方案。

6. 小结与建议

  • 很快,Azure Stack就要发布,相信届时会有很多的Azure Stack的使用者需要一个可靠的联通方案来支撑他们的混合云业务。从上文中的对比测试中可以发现,ExpressRoute作为一种保证网络带宽和运行时间的可靠联通方式,能很好的保证您本地数据中心和Azure公有云的访问和数据传输。同时,Azure 和 Azure Stack提供和各种各样的VPN接入方式,如上文中提到的site2site VPN可以实现数据中心和Azure云平台的网络连接,point2site VPN可以解决移动办公人员的网络接入问题,vnet2vnet可以实现混合云数据中心内的虚拟网络的网络联通。
  • 通过ER这种可靠的网络联通方式和多种多样的VPN接入方式,来构建一个灵活可靠的混合云环境,快速灵活高效的实现我们的业务场景。

3 : Azure Stack运维工具Azure Stack Tools的使用及实战

Azure Stack Tools 是在 GitHub 上维护的一套 Azure Stack 工具集,由微软 Azure Stack 团队为系统开发者和运维者提供的一款基于 Azure Resources Manager 的脚本工具。为了混合云管理开发运维一致性的设计原理,它沿袭了 Azure Resource Managers 设计风格的指令集,可以使开发者与运维者能够像使用 AzureRM 模块一样使用 Azure Stack Tools。不同于 Portal 界面,Azure Stack Tools 能够批处理相关运维、监控操作,为相关人员节省不必要的工作。

六、部署虚机

在 Azure Stack 部署虚机与在 Azure 上面部署虚机一样,我们通过以下代码通过 Azure Stack 部署。

首先,我们创建资源组。

  1. # Create a resource group
  2. New-AzureRmResourceGroup -Name 'myResourceGroup1' -Location "local"

注意:-Location 的参数需要使用 local 或用户自定义区域位置信息,与 Azure 公有云有所区别

然后创建虚拟网络以及子网,并为网络配置公共 IP。

  1. ############### Create networking resources ##############################
  2. # Create a subnet configuration
  3. $subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name 'mySubnet01'`
  4. -AddressPrefix 10.0.1.0/24
  5. # Create a virtual network
  6. $vnet = New-AzureRmVirtualNetwork -ResourceGroupName 'myResourceGroup1'`
  7. -Location 'local' -Name myResourceGroup1-vnet`
  8. -AddressPrefix 10.0.0/16 -Subnet $subnetConfig
  9. # Create a public IP address and specify a DNS name
  10. $pip = New-AzureRmPublicIpAddress -ResourceGroupName 'myResourceGroup1'`
  11. -Location 'local' -AllocationMethod Static`
  12. -IdleTimeoutInMinutes 4 -Name "test1-ip"

添加完公网 ip 后,我们为虚机添加网络安全组。

  1. # Create a virtual network card and associate with public IP address and NSG
  2. $nic = New-AzureRmNetworkInterface -Name 'myNic'`
  3. -ResourceGroupName 'myResourceGroup1' -Location 'local' `
  4. -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id`
  5. -NetworkSecurityGroupId $nsg.Id
  6. # Create an inbound network security group rule for port 3389
  7. $nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig`
  8. -Name myNetworkSecurityGroupRuleRDP -Protocol Tcp `
  9. -Direction Inbound -Priority 1000 -SourceAddressPrefix *`
  10. -SourcePortRange * -DestinationAddressPrefix * `
  11. -DestinationPortRange 3389 -Access Allow
  12. # Create an inbound network security group rule for port 80
  13. $nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig -Name`
  14. myNetworkSecurityGroupRuleWWW -Protocol Tcp `
  15. -Direction Inbound -Priority 1001 -SourceAddressPrefix *`
  16. -SourcePortRange * -DestinationAddressPrefix * `
  17. -DestinationPortRange 80 -Access Allow
  18. # Create a network security group
  19. $nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName myResourceGroup1`
  20. -Location local -Name test1-nsg -SecurityRules $nsgRuleRDP,$nsgRuleWeb
  21. # Create a virtual network card and associate with public IP address and NSG
  22. $nic = New-AzureRmNetworkInterface -Name myNic`
  23. -ResourceGroupName myResourceGroup1 -Location local `
  24. -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id`
  25. -NetworkSecurityGroupId $nsg.Id

最后在 Azure Stack 中添加虚机。

  1. ################################ Create VM ##############################
  2. # Define a credential object
  3. $cred = Get-Credential
  4. # Create a virtual machine configuration
  5. $vmConfig = New-AzureRmVMConfig -VMName myVM -VMSize Standard_D1 | `
  6. Set-AzureRmVMOperatingSystem -Windows -ComputerName myVM `
  7. -Credential $cred | Set-AzureRmVMSourceImage -PublisherName `
  8. MicrosoftWindowsServer -Offer WindowsServer -Skus 2016-Datacenter `
  9. -Version latest | Add-AzureRmVMNetworkInterface -Id $nic.Id
  10. New-AzureRmVM -ResourceGroupName myResourceGroup -Location 'local' -VM $vmConfig

最后我们会在 Azure Stack 界面上看到如下新建资源,说明已经添加成功。

http://www.a-stack.com/Azure-Stack-PoC-Deployment/

上海仪电Azure Stack技术深入浅出系列2:Azure Stack与Azure的有QoS保证的网络联通实现方法和对比测试的更多相关文章

  1. Azure IoT 技术研究系列2-设备注册到Azure IoT Hub

    上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT ...

  2. 上海仪电Azure Stack技术深入浅出系列1:谈Azure Stack在私有云/混合云生态中的定位

    2.2 Azure Stack Azure Stack到2017年7月才提供GA版本,但目前还是可以通过技术预览版了解该技术.Azure Stack本质上是核心Azure服务的一个私有实例. Micr ...

  3. Azure IoT 技术研究系列3-设备到云、云到设备通信

    上篇博文中我们将模拟设备注册到Azure IoT Hub中:我们得到了设备的唯一标识. Azure IoT 技术研究系列2-设备注册到Azure IoT Hub 本文中我们继续深入研究,设备到云.云到 ...

  4. Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别

    上两篇博文中,我们介绍了将设备注册到Azure IoT Hub,设备到云.云到设备之间的通信: Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系 ...

  5. Azure IoT 技术研究系列3

    上篇博文中我们将模拟设备注册到Azure IoT Hub中:我们得到了设备的唯一标识. Azure IoT 技术研究系列2-设备注册到Azure IoT Hub 本文中我们继续深入研究,设备到云.云到 ...

  6. Azure IoT 技术研究系列4

    上两篇博文中,我们介绍了将设备注册到Azure IoT Hub,设备到云.云到设备之间的通信: Azure IoT 技术研究系列2-设备注册到Azure IoT Hub Azure IoT 技术研究系 ...

  7. Azure IoT 技术研究系列2-起步示例之设备注册到Azure IoT Hub

    上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT ...

  8. Azure IoT 技术研究系列5-Azure IoT Hub与Event Hub比较

    上篇博文中,我们介绍了Azure IoT Hub的使用配额和缩放级别: Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别 本文中,我们比较一下Azure IoT Hub和 ...

  9. Azure IoT 技术研究系列2

    上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT ...

随机推荐

  1. mongodb拆库分表脚本

    脚本功能: 1. 将指定的报告文件按照指定的字段.切库切表策略切分 2. 将切分后的文件并发导入到对应的Mongodb中 3. 生成日志文件和done标识文件 使用手册: -h    打印帮助信息,并 ...

  2. [Android Tips] 31.如何将第三库引入的 Permission 删除掉

    Just declare the incriminated permission in your (main) Manifest with the tools:node="remove&qu ...

  3. BigDecimal 解决double精度丢失问题(加减乘除)

    package com.qcloud.component.publicservice.util; import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确 ...

  4. COURSES---poj1469 hdu1083(最大匹配)

    题目链接:http://poj.org/problem?id=1469   http://acm.hdu.edu.cn/showproblem.php?pid=1083 题意:有n个学生p门课, 每门 ...

  5. Python开发【笔记】:git&github 快速入门

    github入门 简介: 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大 ...

  6. P2750 贰五语言Two Five USACO5.5 记忆化搜索

    正解:记搜+逼近 解题报告: 神仙题预警,,, 我真滴觉得还是挺难的了,,, 大概说下思路趴QAQ 首先我们要知道逼近法是什么! 逼近法,有点像二分的思路,以这题为例举个eg 假如它给了个数字k.我们 ...

  7. UIView动画补充

    我自己的总结: // 第一种: Duration 时间 animations:动画体 /* [UIView animateWithDuration:4 animations:^{ CGRect rec ...

  8. php://input、$_POST与$GLOBALS['HTTP_RAW_POST_DATA']三者的区别

    $_POST 只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据. $ ...

  9. (转)Terraform,自动化配置与编排必备利器

    本文来自作者 QingCloud实践课堂 在 GitChat 上分享 「Terraform,自动化配置与编排必备利器」 Terraform - Infrastructure as Code 什么是 T ...

  10. ZW云推客即将登场

    ZW云推客即将登场   即"4K云字库"框架文件发布后,ZW团队即将发布一全功能的:ZW云推客系统. ZW云推客系统,是原zBrow"百万社区营销系统".&qu ...