背景:对于很多使用公有云的用户来说,一个需要解决的问题是如何让自己在公有云上的资源可以互访,并且与其他用户的资源是隔离的,用户又可以将自己的本地局域网连入这个公有云区域,实现本地局域网和公有云的完美契合,方便自己的应用部署。目前主流云平台提供的解决方案都是采用VPC(Virtual Private Cloud)或者VDC(Virtual DataCenter)的方式。
Azure的虚拟网络(Vnet)是指Azure上针对资源的专用网 络空间,就是实现VPC的技术。
首先,我们罗列一下Azure上提供用户访问Azure云资源,以及Azure云上资源互访的几种方式(每种方式的优势以及局限性这里不做详细论述)。
用户接入Azure云:
- 暴露公网IP直接通过IP访问资源
- VPN的方式(点到点或者site-to-site,通过VPN网关同本地VPN设备相连)
- ExpressRoute(Azure提供的专用线路)
Azure上Vnet之间资源互访的几种方式
- VPN方式,Vnet之间通过VPN网关进行互相访问
- Vnet之间通过ExpressRoute方式进行访问
- Vnet之间通过peering进行访问
下面,我们来看一下用户接入Azure云以及组建自己Vnet的方式:
上述这种方式用户通过ExpressRoute接入Azure云,并且通过网关共享以及Vnet之间的peering来实现Vnet之间的资源互访,最终实现跨区域,跨Vnet之间的资源互访。
上述方式用户通过基于BGP的VPN(类似于MPLSVPN)接入Azure云,跨区域的Vnet之间也使用VPN连接,同一个区域的Vnet之间使用网关共享和peering实现资源互访,最终实现跨区域,跨Vnet之间的资源互访。
上述两种方式都用到了Vnet之间的peering实现本地区域的资源互访,本文重点介绍这一技术以及配置。
使用peering方式的好处:
- 流量之间的交互完全是在私有网络中。
- 可以保证不同虚拟网络资源之间的低延迟,高带宽。
- 可以跨Azure订阅,部署模型(资源管理组部署和经典部署)和Azure区域(预览)传输数据。
使用peering方式部署的局限性:
- 目前暂不支持跨Azure区域之间的相互通信。
- 相互要通信的虚拟网络的ip地址段不重叠。
- 配置的peering的虚拟网络地址空间不能添加到别的虚拟空间或者删除。
- 配置peering的两个虚拟网络必须互相之间都进行peer的映射(peerA->peerB,peerB->peerA)。
- 两个经典模式创建的虚拟网络之间需要使用VPN来互相通信。
- 虚拟网中虚机的网络吞吐量取决于虚机允许的最大带宽,与虚机大小成正比。
- 每个虚拟网络只能有一个网关,可以使用本地网关或者远程网关。
上述拓补图表示HR,Marketing,Engineering都与Hub Vnet互联,HubVnet中可以包括共享资源,例如域控制器,监控系统,防火墙或其他网络虚拟设备(NVA),然而peer并不会互相学习,所以HR,Marketing,Engineering之间是互相不能通信的。如果要互访,如下图:
当使用peering时,各个Vnet之间能够共享VPN或者Express route网关,这样就不需要在每个Vnet中部署网关,而是可以使用HubVnet中的网关。
下面介绍的配置为三个用resource manager方式创建的虚拟网络通过Peering进行互相连接。
- 创建虚拟网络
网络地址 | 子网地址 | 区域 | |
vnet01 | 10.1.0.0/16 | 10.1.0.0/24 | 东南亚 |
vnet02 | 10.2.0.0/16 | 10.2.0.0/24 | 东南亚 |
vnet03 | 10.3.0.0/16 | 10.3.0.0/24 | 东南亚 |
创建vnet01,vnet02,vnet03
在vnet01中添加网关
vnet01 | vnet02 | vnet03 | |
vnet01 | 允许网关传输 | 允许网关传输 | |
vnet02 | 使用远程网关 | 允许转发通信 | 允许转发通信 |
vnet03 | 使用远程网关 | 允许转发通信 | 允许转发通信 |
创建vnet01到vnet02和vnet03的peering
配置Vnet02到vnet01和vnet03的peering
配置vnet03到vnet01和vnet02的peering
对等状态全部为已连接,下面我们分别在这三个虚拟网络中创建一台winserver虚拟机,来ping一下验证连通性。