Windows Server 2012 虚拟化实战:网络(一)
虚拟化对于计算的抽象,大家可能相对熟悉,也许都有在单机使用诸如Virtual PC或者Virtual Box的经验。使用的这些虚拟化软件的第一印象就是我们的CPU可以同时运行多套不同的操作系统,并且其上应用程序并行不悖。计算的抽象使得同一套硬件设备上的操作系统之间得以相互隔离,犹如一个身体拥有两个甚至更多灵魂,这是什么鬼?那么接下来很自然的一件事就是,这些灵魂之间该如何沟通呢?依然只有一个身体,如何相互握手和交流,如何对外联系和提供服务。因而对于虚拟化而言,最重要的基础设施除了存储外,再就是网络,即需要实现网络的虚拟化。这里我们粗略描述Windows Server 2012 R2和System Center Virtual Machine Manager 2012 R2(以下简称SCVMM)实现网络的虚拟化的基本原理,有需要详细了解的可以看微软的电子书Microsoft System Center: Network Virtualization and Cloud Computing。
一、什么是网络虚拟化
现在有一种流行的说法叫做软件定义网络,网络中有不同的解释,我自己简单理解为是更多通过软件编程来实现对网络的集中管理。比如之前在交换机上的VLAN功能,需要在每台交换机进行配置,不同厂商就有不同的配置方式,配置复杂且管理成本高昂,那么通过一个开放、统一和标准的软件平台对网络硬件进行控制,那将极大改善这一状况。当然由于商业竞争的因素,让各个厂商拥有开放包容的心,不是件容易的事,因而软件定义网络还有很长的路要走。那么回到网络虚拟化,即可以认为是一种在特殊情形下的软件定义网络,即在一个或者多个数据中心里实现软件定义网络的美好图景。除了通过统一软件平台来管理网络外,网络虚拟化也有自己特殊的应用目的和需求。
1、需要实现每个虚拟机都可以像单个物理机一样的网络功能。同一台物理机上的不同虚拟机之间,不同物理机上的虚拟机之间,虚拟机与物理机之间,虚拟机与外部网络能够屏蔽底层的硬件差异,在虚拟化网络上互联互通。
2、需要实现物理网络的更高效的利用。在一个物理网络上(通物理机上同一个物理网卡)承载更多的相互隔离且负载均衡的网络(这点类似VLAN)。数据中心往往需要配置多种相互隔离的网络以承载各类应用,例如域网络、集群心跳网络、集群管理网络、虚拟机迁移网络和外部网络等等,如果在硬件上通过VLAN或者直接增加硬件的方式实现,那将是一件费时费力费钱的工作。
3、需要实现网络的高可用性。物理设备,包括网线、网卡和交换机等都有损坏的可能,需要有一种方案降低他们损坏后对网络造成的影响。
4、需要保障虚拟化平台上高可用的虚拟机的动态迁移。当物理网络或者物理主机损坏而掉线后,其上具有高可用性的虚拟机将执行迁移操作,在另一台物理主机上重新上线,甚至让外界无法感知其迁移的过程,这要求虚拟化网络能够保证虚拟机上的所有网络配置在另一台物理主机上是依然有效的。
以上每一项都不是件容易的事,那么我们接下来看看SCVMM如何在统一软件管理平台上实现这所有目的和需求。
二、Windows 2012 R2中的网络虚拟化
实现网络虚拟化的本质是对物理网络的抽象,也就是在物理网络上构建虚拟网络以适应不同的应用场景。这里的核心技术是IP数据包的包装协议。各家的虚拟化平台采用的IP包装协议并不同,例如主要有:Virtual eXtensible Local Area Network (VXLAN),Stateless Transport Tunneling Protocol for Network Virtualization (STT)和Generic Routing Encapsulation (GRE)。 SCVMM采用特殊的GRE协议,称为Network Virtualization using Generic Routing Encapsulation (NVGRE)。这些协议的主要目的就是对原始IP数据包进行封装,以实现网络数据传输的隔离。
SCVMM可以通过几个层次对物理网络进行重新定义,这里我们考虑如下场景:两台物理主机通过两个独立的物理网络相连,这在数据中心中应该是最为常见的状况。
下面我们来看看物理主机的网络在下面各个层面的配置:
1、建立网卡组(NIC Team)
将物理主机上2个及以上物理网卡合并为网卡组,可以在这些物理网卡之间形成冗余和实现负载均衡。如下图所示,在物理主机的操作系统层面,合并的网卡组表现为一张网卡,相互连接为一个网络。网卡组的功能其实由Windows 2012 R2提供的,SCVMM可以充分调用Windows 2012 R2、Hyper-V和Failover Cluster的所有资源和功能。
在Windows Server 2012中输入命令lbfoadmin可以查看和配置网卡组,如下图在物理主机cloud-pm-ds01上创建了两个网卡组,每个网卡组中包含2张物理网卡。
在网络连接界面中,物理网卡已经无法设置网络相关参数,而转移到网卡组进行设置。仔细查看网卡和网卡组属性中的Networking选项,可以发现Microsoft提供了丰富的网络协议,实现各种功能即是配置的网络协议不同。网卡组使用的关键协议应该是Microsfot Load Balancing/Failover Provider、IPv6和 IPv4这些。在后文中更多关于网络虚拟化提供的功能也只是在增加和配置更多的协议,这在一定程度上即是所谓的软件定义网络吧。
但这里请忽略Logical Switch这样对网卡组的命名,为什么不是Team这样的命名,这里可以先告诉大家的是Logical Switch是一个更高层次的抽象,下文将会涉及。
2、虚拟交换机(Virtual Switch)
在网卡或网卡组的基础上,我们可以建立虚拟机交换机,一个物理网卡或者一个网卡组我们可以建立一个虚拟交换机,以便对该网络进行进一步虚拟化。如下图所示:
虚拟交换机功能由Hyper-V提供,我们安装Hyper-V角色,并打开Hyper-V Mananger,右键通过Virtual Switch Mananger对虚拟交换机进行创建和管理。
在Windows网络连接界面,我们看到虚拟交换机可以与网卡组配置在一起。只是多了一个新协议Hyper-V Extensible Virtual Switch。但是同时会取消对IPv4和IPv6的配置,因为这两项协议将被转移到虚拟网卡上进行配置。这时如下图中的设备Management Logical Switch现在起的作用是对一个或多个物理网卡的抽象,它可以承担起网卡组的负载均衡的作用,也承担虚拟交换机的作用,虚拟交换机与虚拟网卡互联互通。这与物理上的交换机的状态是不太一样的,物理交换机处在网络的中间位置,而虚拟交换机同时在两端,为主机配置相同的虚拟交换机意味着两者通过该虚拟交换机的底层物理链路连接。
3、虚拟网卡(Virtual Network Adapter)
在虚拟交换机的基础上,可以创建虚拟网卡,以连接不同的网络。虚拟网卡一般出现在虚拟机上,用于虚拟机连接该网络,也可以出现在物理主机上,用于物理主机连接该虚拟的网络。虚拟网卡的数量几乎不受限制,如有有必要,可以创建多个虚拟网卡连接同一个虚拟网络。这里“虚拟网络”是SCVMM中抽象出的概念,如下图连接虚拟网卡与虚拟网卡之间的虚线就好比虚拟网络,下图出现了像个虚拟网络,他们是相互隔离的。可以用VLAN来类比,但是却不是VLAN技术,而是NVGRE数据包封装技术。
如下图都是在物理主机上创建出的用户连接不同虚拟网络的虚拟网卡,这些网卡的配置协议与普通的物理网卡几乎相同,可以在其中配置IPv4和IPv6。当然在虚拟机中更普遍存在了。
Windows Server 2012 虚拟化实战:网络(一)的更多相关文章
- Windows Server 2012 虚拟化实战:网络(二)
关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Window ...
- Windows Server 2012 虚拟化实战:存储(二)
五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Windo ...
- Windows Server 2012 虚拟化实战:存储(一)
在计算机世界我们随处可以见的一种方法,那就是抽象.1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备.这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软 ...
- Windows Server 2012 虚拟化实战:域
在Windows Server系统中,一些服务必需要构建在域的环境中,这不仅是为了统一验证和资源共享,同时也是为了网络安全.为构建虚拟化测试,我们需要先搭建域环境.之前先来大概了解一下域. 在使用工作 ...
- Windows Server 2012 虚拟化实战:SCVMM的安装和部署
本篇大概介绍一下在Windows Server 2012 R2上安装和部署SCVMM的过程及其注意事项.下图是我们数据中心SCVMM的基本架构,其中 SCVMM Database 是用于存储了所有配置 ...
- 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群
需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...
- 基于windows server 2012 的微软桌面虚拟化实战教程
http://abool.blog.51cto.com/8355508/1587489/ Windows Server2012 中的“远程桌面服务”服务器角色中就提供了允许用户连接到虚拟机.Remot ...
- Windows Server 2012 R2超级虚拟化之七 远程桌面服务的增强
Windows Server 2012 R2超级虚拟化之七 远程桌面服务的增强 在Windows Server 2012提供的远程桌面服务角色,使用户能够连接到虚拟桌面. RemoteApp程序.基 ...
- Windows Server 2012 R2超级虚拟化之六 Hyper-v Replica 2.0和Live migrations
Windows Server 2012 R2超级虚拟化之六 Hyper-v Replica 2.0和Live migrations 分钟复制选项也是非常有用的.Hyper-V Replica 2.0在 ...
随机推荐
- 浏览器怎么添加 Axure扩展程序
步骤 本文以强大如斯的谷歌浏览器来说明,怎么查看Axure原型文件,怎么添加Axure RP扩展程序.Axure RP生成的原型文件,一般都是可以用浏览器打开的, 如:一般都有index.star ...
- es6之let和const
在javascript中,我们都知道使用var来声明变量.javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量. 函数级作用域会导致一些问题就是某些代码块内的变量 ...
- AngularJs之四(作用域)
一:angulaJs的作用域scope Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带.scope 是一个 JavaScript 对象,带有属性和方 ...
- jQuery系列:DOM操作
1. 访问元素 在访问页面时,需要与页面中的元素进行交互式的操作.在操作中,元素的访问主要包括对元素属性.内容.值.CSS的操作. 1.1 元素属性操作 1.1.1 设置或返回被选元素的属性值 语法格 ...
- TCP三次握手的正确使用姿势
背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声 ...
- Node.js:events事件模块
Nodejs的大部分核心API都是基于异步事件驱动设计的,所有可以分发事件的对象都是EventEmitter类的实例. 大家知道,由于nodejs是单线程运行的,所以nodejs需要借助事件轮询,不断 ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- python3爬取1024图片
这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...
- C#的扩展方法解析
在使用面向对象的语言进行项目开发的过程中,较多的会使用到“继承”的特性,但是并非所有的场景都适合使用“继承”特性,在设计模式的一些基本原则中也有较多的提到. 继承的有关特性的使用所带来的问题:对象的继 ...
- php调用web service接口(.net开发的接口)
实例代码1: try { $this->soapClientObj = new SoapClient(self::URL . '?wsdl', array('connection_timeout ...