赞
踩
上面一篇文章介绍了虚拟网络的基本概念,下面就动手实验一下:
首先,从门户的左侧选择网络,然后点击右侧的创建按钮
输入网络基本信息,包括名称、区域和地缘组。地缘组的用途,是限制资源的范围。尽管Azure的每个区域都已经限定了地理范围,但实际上一个区域内微软可能部署了多个数据中心,这些数据中心在物理上可能相隔几公里,也可能是挨在一起。大部分情况下,物理数据中心对用户是透明的,用户无需关注。但某些场景下,一些服务的作用范围必须集中在一个更小的范围,比如一个数据中心、一个机房、甚至是紧密相连的一组机柜。地缘组的作用,就是保证同一地缘组内的左右资源都部署在紧密相连的物理设备上,确保网络延迟最小、带宽最大,且虚拟网络可以正常运作。我们为地缘组指定一个名称即可
下一步是配置DNS和VPN。DNS可以不填,使用Azure提供的DNS。VPN部分我们选择点到站点,这样待会儿便于测试。不过,需要注意的是,虚拟网络本身不收费,而VPN是按小时和按连接收费的。无论是免费账号还是付费账户,在选择VPN前要先评估下自己有多少配额。不确定的话就不选,这样虚拟网络就完全是云内部的。
选择了VPN后,下一步是设置VPN客户端的IP地址范围。这个可以根据情况指定,注意一个虚拟网络最多有256个VPN客户端
接下来是设置云端虚拟网络的网络地址。我们可以任意划分多个子网,每个子网可以指定不同的IP地址段。IP地址可以是10、192.168或者172.16打头。这里我们定义了3个子网,分别是DbFarm,WebFarm,VMFarm. 最后还要添加一个网关子网
全部配置完成后,可以看到一个简单的网络拓扑。
此时左侧方框中提示尚未配置网关。于是我们点击页面底部的创建网关按钮
这个过程大概需要10几分钟。在此过程中,我们可以继续下一步,开始准备VPN证书,尝试配置VPN客户端。虚拟网络使用的是X509证书。其方式是服务端有一个根证书,然后每个客户端有一个证书跟根证书关联。客户端证书是由根证书创建的
我们可以采用visual studio自带的makecert工具创建证书。在程序中找到Visual studio自带的Developer command prompt,并以管理员权限运行。如果没有该工具,windows用户可以去网络上搜索makecert.exe并下载。Linux用户可以用openssl生成证书。
在命令行中运行
makecert -sky exchange -r -n "CN=<RootCertificateName>" -pe -a sha1 -len 2048 -ss My生成根证书,注意要把上面的<RootCertificateName>替换为自己定义名字。
然后再次运行
makecert.exe -n "CN=<CertificateName>" -pe -sky exchange -m 96 -ss My -in "<RootCertificateName>" -is my -a sha1生成客户端证书。要把<RootCertificateName>和<CertificateName>替换
如果有多个客户端,可以让客户端共享客户端证书,或者为每个客户端生成一个单独的证书。生成后需要把证书连同私钥导出,然后导入到其他客户端上。本机则不需要。
证书生成后,可以查看证书。查看方式是进入IE浏览器选项->内容->证书
前两个证书就是刚才生成的,分别是服务端和客户端。选择服务端证书,点击下面的Export/导出,进行证书导出。导出时,按照向导缺省项即可。
接下来要进行服务端证书的上传。回到Azure页面,我们发现刚才的创建网关已经成功。
我们点击右侧的上载证书进行证书的上载。要注意,尽管提示要上传客户端证书,我们还是要上传根证书
上传后,我们发现页面有了些变化,右侧多了新的链接。我们根据本机系统类型下载VPN程序包,64位的选AMD64即可。
下载后运行安装程序,进行VPN客户端的配置。Linux的如何配置我还没有尝试过,有条件的朋友可以试下
安装后在网络连接中就会出现新的VPN图标了。点击即可连接
连接成功后,查看本机VPN IP,发现是之前指定的地址段。大功告成
等待一会儿后,Azure页面也会更新,显示有一个客户端连接,并且显示流入流出的数据量
不过此时云端没有任何资源可以连接,没法进一步测试
另外,还需要注意的是,一旦开始连接,Azure就开始按时间计费。同时,从Azure流出的流量也会算网络流量费。所以,不用的时候要及时断开连接
部署虚拟机到虚拟网络十分简单,在部署时选择该虚拟网络即可。此时可以选择目标子网
部署完成后,查看下虚拟机的内部IP地址(10.0.2子网的),然后从客户端直接打开远程桌面即可访问该地址,不再需要通过外网以及端口映射
可见,采用了虚拟网络后,客户端和Azure端的虚拟机不再存在防火墙、负载均衡、NAT,可以直接通过内网IP访问。
部署云服务到虚拟网络要稍微复杂些。我们以GuestBook这个应用为例,这个应用有一个WebRole和一个Worker role。我们希望WebRole能够部署到虚拟网络的WebFarm这个子网,而workerrole部署到DBFarm这个子网。目前这种指定没有图形化的配置工具,只能手动修改配置文件。
打开该应用的cscfg文件,在末尾的</ServiceConfiguration>之前添加如下内容:
- <NetworkConfiguration>
- <VirtualNetworkSite name="MyNet" />
- <AddressAssignments>
- <InstanceAddress roleName="GuestBook_WebRole">
- <Subnets>
- <Subnet name="WebFarm" />
- </Subnets>
- </InstanceAddress>
- <InstanceAddress roleName="GuestBook_WorkerRole">
- <Subnets>
- <Subnet name="DBFarm" />
- </Subnets>
- </InstanceAddress>
- </AddressAssignments>
- </NetworkConfiguration>
这段配置表示该云服务将部署到MyNet这个虚拟网络,其中两个Role分别部署到一个子网
然后进入Azure门户,创建一个云服务。创建时,选择虚拟网络MyNet对应的地缘组,而不要选择区域
之后,就可以发布云服务了。可以用Visual studio发布,或者用命令行等工具都可以。
发布完成后,从VPN客户端就可以随意连接云服务里所有的虚拟机了,不需要定义端点,也不需要使用VIP。那么问题是,怎么看这些虚拟机的内部IP呢?
很简单,进入虚拟网络的管理页面,所有的可连接的资源一目了然
下面,我们来进一步了解下虚拟网络,以及它和Azure网络的关系
下面一张图,是我们部署了虚拟机、云服务并配置了VPN后的一个完整拓扑,它包括了4个子网,2个云服务,2个对外的VIP,以及数个虚拟机。
虚拟网络有如下的一些原则:
有了虚拟网络,我们就可以灵活的规划网络拓扑,实现类似于传统应用部署的分层架构,让安全性要求高的资源隐藏在虚拟网络内,只能在内部访问,而把需要提供Web服务的资源部署在单独的子网里,提供对外端口。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。