今天正式进入网络虚拟化的第三篇,也是结尾篇,本次内容将会把SCVMM中的网关概念作为重点介绍;

#####################################################################################

稍微简单回顾下之前的内容,我创建了两种端口配置文件以及端口分类然后又把这些元素组合在一起,创建了几个逻辑交换机,如下图所示:


hyperv cpu 虚拟化 hyper-v虚拟化_后端

接下来通过SCVMM找到gateway这台物理网关主机,在属性中找到“host access”并且勾选“将这台主机作为专用的网络虚拟化网关”,请注意:windows 2012 R2之前的版本的主机是看不到这个选项的,做不了


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_02

之后我们要引入服务模版的概念来创建一个虚拟机,或者说是创建一个服务出来,这个虚机就是在物理网关服务器上的虚拟网关了,基于windows RRAS功能;

hyperv cpu 虚拟化 hyper-v虚拟化_后端_03

下图是我创建好的服务模版,其实这个内容很简单,不需要打包应用进去,也不需要额外的脚本,稍后我会展示一下具体内容


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_04

暂时回到host02这台服务器上,这台主机将会放置用户申请的虚拟机,所以要先给它配置好网络,添加之前创建的逻辑交换机“test logical switch”并且创建一个虚拟网卡用于管理“management”


hyperv cpu 虚拟化 hyper-v虚拟化_运维_05

确认这块网卡已经自动关联了所有的逻辑网络


hyperv cpu 虚拟化 hyper-v虚拟化_前端_06

然后再来到gateway物理服务器上,这台主机因为要承担虚拟网关服务器,所以既然是网关嘛,就会有两块网卡,一内一外;

我提前给物理服务器的网卡改了名字,便于连接的时候好识别,走外网的(192.168.10.0/24)叫Front_end,走内网的(PA 192.168.0.0/24)叫Back_end


然后我把Front_end连接到“outbound logical switch”这个逻辑交换机上,并且创建一个用于管理的mgmt虚拟网卡


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_07

Back_end连接到了inbound logical switch这个逻辑交换机上,不需要额外的虚拟网卡,因为内口只为了承载nvgw01这台虚拟网关服务器的内口流量


hyperv cpu 虚拟化 hyper-v虚拟化_运维_08

配置好逻辑交换机后,检查一下物理主机的内外网卡是否已经关联了逻辑网络,注意看下图:front_end因为只是纯走外网,所以我没计划让它关联PA地址段的逻辑网络


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_09

同样back_end因为只承载PA地址段流量,且不需要通过它来管理服务器,因此只关联Tenant逻辑网络


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_10

下图是物理服务器上配置之后的效果,两块物理网卡front和back,vEehrnet是虚出来的管理网卡


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_11

########################################################################################

gateway那台机器可以不管了,来看看服务模版吧,打开设计器;这是一个很简单的双网卡虚机模板,只需要注意一些细节即可,首先看一下计算机层的属性


hyperv cpu 虚拟化 hyper-v虚拟化_前端_12

计算层是提前准备好的一台虚机模板,正如下图所示,唯一要注意的就是一定要把相关系统角色和功能添加上,标红处一定要勾


hyperv cpu 虚拟化 hyper-v虚拟化_运维_13


hyperv cpu 虚拟化 hyper-v虚拟化_前端_14

网卡方面需要两块,毕竟是网关嘛,一内一外,但是要特别注意的是:外网那块卡连我们的Virtual Switch虚拟网络(构建在Virtual Switch逻辑网络上192.168.10.0/24),IP地址静态,让它从逻辑地址池去拿


hyperv cpu 虚拟化 hyper-v虚拟化_前端_15

接内网的网卡不连任何网络


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_16

基本准备工作就完成了,然后就可以通过服务模版来创建虚机了,下图是完成后的效果;是以服务形式呈现的


hyperv cpu 虚拟化 hyper-v虚拟化_运维_17

这时候,当虚机完成创建后,就可以连接那块内网网卡了,首先外网网卡已经连接到了Outbound logical Switch上了


hyperv cpu 虚拟化 hyper-v虚拟化_前端_18

内网网卡选择VM network,然后点击“Clear selection”,也就是不连接任何VM network


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_19

这样VM network那里会显示“none”,而此时需要注意确保这块网卡连接到了“标准交换机”inbound logical switch上,也就是说把这块虚拟网卡连接到了物理服务器上hyper-v管理器中的那个叫做“inbound logical switch”的虚拟交换机上了,而它是怎么来的呢?是通过连接逻辑交换机而生成的“同名”虚拟交换机,这里说的可能有点绕,看晕的童靴可以回顾上一篇,耐心点就明白了:)


这么做的目的是不需要虚拟网关内口连接到任何存在的网络内,相当于把网线插到交换机上,但是不给三层地址;只需要确保二层连通即可


hyperv cpu 虚拟化 hyper-v虚拟化_前端_20

#####################################################################################

接下来重头戏,SCVMM网络服务登场,如下图所示,在导航栏内找到“Network Service”并创建一个新服务,右边是我已经配置好的网关


hyperv cpu 虚拟化 hyper-v虚拟化_运维_21

那么在创建网关的时候都需要输入哪些参数呢,首先是名字,这个不用多说了


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_22

然后选择类型,我们是要做网关,那就选“windows server gateway”


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_23

之后制定一个运行账户,有足够权限就好,这里我用域管理员了,顺便提一句,在最佳实践中推荐物理网关服务器,也就是本次演示中的gateway这台主机是不加域的,而其上承载的这台虚拟网关即nvgw01加域就可以了


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_24

接下来是一个连接字符串,根据下面给出的示例输入就好,主要是指定了物理host,虚拟网关


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_25

证书这里因为我们的环境不需要,所以就免了


hyperv cpu 虚拟化 hyper-v虚拟化_前端_26

接下来是进行一个测试,确保没有出现告警就好


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_27

然后选择这个网关服务将被用于那些主机


hyperv cpu 虚拟化 hyper-v虚拟化_运维_28

最后确认无误即可创建


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_29

创建好之后要来编辑一下这个网关服务的属性


hyperv cpu 虚拟化 hyper-v虚拟化_后端_30

在编辑之前可以先来到nvgw01这台虚拟网关上,主要是查看一下内网网卡,因为没有连接到VM network,所以是没有拿到IP的,只要确保是169.254.X.X地址就可以了


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_31

接下来就是编辑网关服务属性了,主要是“connectivity”这里,指定一下网关的前端后端连接,依照我的demo环境,nvgw01这台虚拟网关的两块网卡,我分别起名“external”与“internal”


启用前端连接,选择external这块网卡,并且连接外网逻辑网络;启用后端连接,选择internal并连接到tenant这个逻辑网络


hyperv cpu 虚拟化 hyper-v虚拟化_后端_32

#######################################################################################

接下来开始创建提供给租户的VM network了,先确认一下Tenant这个逻辑网络一定要启用网络虚拟化


hyperv cpu 虚拟化 hyper-v虚拟化_运维_33

然后创建一个新的VM network,起个名字“Tennat VM network”构建在Tenant之上


hyperv cpu 虚拟化 hyper-v虚拟化_前端_34

给个VM subnet,就叫subnet A吧,然后地址是10.0.0.0/24,这个IP段明显有别于我的外网办公网192.168.10.0/24的


hyperv cpu 虚拟化 hyper-v虚拟化_前端_35

然后再connectivity里面就可以选择网关了! 这里根据我们的需求来选择;


如果使用第一个××× tunnel,这个是典型的S2S场景,例如把私有云与公有云对接,形成混合云;

我们这里需要启用第二个,即连接到另一个逻辑网络,并且选择NAT,因为要出外网

接着选择网关设备,如果有多个就可以在下拉列表中显示


hyperv cpu 虚拟化 hyper-v虚拟化_运维_36

接着是NAT设置,注意看红框里是我的外网地址池,也就是说如果不手动指定IP地址的话,系统会采用自动抓取一个IP来做NAT,如果有一些指定服务需要发布出去,可以在下方点击ADD添加进去,例如80或者443等等,非常好用,我这里就不展示了,大家有兴趣可以试试


hyperv cpu 虚拟化 hyper-v虚拟化_后端_37

接着在租户VM network上创建地址池,是CA地址池


hyperv cpu 虚拟化 hyper-v虚拟化_后端_38

系统会默认把.1地址扣掉留作网关


hyperv cpu 虚拟化 hyper-v虚拟化_运维_39

如下图所示,网关一般不用改


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_40

DNS为了测试外网解析,因为我这个租户环境里也没有DNS和AD什么的,我就用四个8了


hyperv cpu 虚拟化 hyper-v虚拟化_前端_41

###################################################################################

到目前为止,有关网络虚拟化的基础架构准备工作就告一段落了,接下来就是验证的时候了,准备一个虚机模板,网卡连接指定到租户的VM network,确认subnet正确,IP选择静态,这里它会从逻辑地址池中取一个IP做PA,端口分类可以给个标记,便于日后的管理啦,计费啦等等


hyperv cpu 虚拟化 hyper-v虚拟化_后端_42

顺便说一下分类设置,SCVMM自带很多种分类,不够用自己加


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_43

#########################################################################################

经过了漫长的等待……(demo环境百兆网,考个模板费死了劲);我们的第一台租户虚机创建出来了,看看网卡属性,哦~IP拿到了,DNS也获取对了


hyperv cpu 虚拟化 hyper-v虚拟化_前端_44

来到虚拟网关nvgw01上看看,运行标黄的命令查看外部交换地址,系统取到了一个192.168.10.46的IP,就会用它来做NAT


hyperv cpu 虚拟化 hyper-v虚拟化_后端_45

再看看host02主机上,get-PA可以看到获取了一个PA地址,用于做NVGRE重封装


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_46

接着来到winserver10这台租户虚机上,ping个百度吧;哇塞~通了耶!


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_47

访问个网站,恩~不错,下载flash player中



######################################################################################

接下来如法炮制,再做个172.16.0.0/24的租户网络


hyperv cpu 虚拟化 hyper-v虚拟化_运维_48

接着创建一个租户VM,winserver11


hyperv cpu 虚拟化 hyper-v虚拟化_后端_49

创建完成,确认IP信息正确无误


hyperv cpu 虚拟化 hyper-v虚拟化_hyperv cpu 虚拟化_50

上个网站,恩不错……(话说今天国安跟广岛三箭打平了~ :(


hyperv cpu 虚拟化 hyper-v虚拟化_ViewUI_51

后来建立的172网络和之前的10网络是隔离的,因为它们分别属于两个租户,即属于两个不同的route domain ID

但如果是在Tenant VM network下创建一个172的subnet B就可以互通,因为只要VSID同属一个RDID,就会自动起路由

######################################################################################

好了,有关SCVMM网络虚拟化的内容就暂时介绍到这里了,越到最后越觉得有些仓促,但是没办法最近工作事情比较多;也没什么好好休息,其实细心的朋友不难发现,我这个demo相对还比较简陋,为什么这么说呢


首先,我只是做了纯后端的一些配置工作,没有把前端门户带进来一起呈现,所有这个场景不完整,不过没关系,门户只是一个对后端技术平台加以提炼的产物,我们对底层架构以及实现方式有了很深入的了解之后,掌握了来龙去脉,再完成前端就不是难事了,如果各位有时间去研究的话,我推荐部署azure pack做搭配,这样一来像租户申请VM网络这些操作都可以由门户实现了


此外,因为时间有限,我只是展示了网关服务的其中一个功能,至于S2S ×××以后有条件再跟大家交流,还是那句话,网络虚拟化是很重要的一块,特别是在云服务平台需求与日俱增的环境下,我觉得更应该花时间花精力去研究,谢谢~晚安各位